sensors: add support for the BCM 4773 sensorhub 31/84531/5
authorHoegeun Kwon <hoegeun.kwon@samsung.com>
Wed, 17 Aug 2016 06:57:23 +0000 (15:57 +0900)
committerHoegeun Kwon <hoegeun.kwon@samsung.com>
Wed, 24 Aug 2016 05:29:06 +0000 (14:29 +0900)
The Broadcom BCM4773 is a microcontroller that works as a
sensorhub. It's placed in between sensors and AP.

It's connected to the AP through SPI bus and has support for
a range of sensors:

 - icm20610
 - yas532
 - bmp182
 - tmg399x
 - mobeam

The config file provides a "choice" option in order to choose
between different targets, S333 and TM2(e).

The BCM4773 it can handle GPS and the gps driver is the main
entry point to the sensorhub driver as an SPI device.

Change-Id: I07f676459cf53cbb88d75cac0459b5e374f353a5
Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
75 files changed:
drivers/sensors/Kconfig
drivers/sensors/Makefile
drivers/sensors/brcm/Kconfig [new file with mode: 0644]
drivers/sensors/brcm/Makefile [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/Makefile [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_common.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_control.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_debug.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_ifc.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_internal.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_main.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_packet.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_patch.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_reliable.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_sensor.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_sio.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_ssi_spi.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_sysfs.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bbd_tty.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bcm477x_debug.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bcm477x_ssi_spi.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bcm_gps_spi.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/bcm_gps_spi.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/Makefile [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_engine.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_engine.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/rpc_codec_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/transport/transport_layer_custom.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/Makefile [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/bbd_utils.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.h [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.c [new file with mode: 0644]
drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.h [new file with mode: 0644]
drivers/sensors/brcm/factory/accel_icm20610.c [new file with mode: 0644]
drivers/sensors/brcm/factory/barcode_emul_tmg3992.c [new file with mode: 0644]
drivers/sensors/brcm/factory/gesture_tmg399x.c [new file with mode: 0644]
drivers/sensors/brcm/factory/gyro_icm20610.c [new file with mode: 0644]
drivers/sensors/brcm/factory/light_tmg399x.c [new file with mode: 0644]
drivers/sensors/brcm/factory/magnetic_yas532.c [new file with mode: 0644]
drivers/sensors/brcm/factory/magnetic_yas532.h [new file with mode: 0644]
drivers/sensors/brcm/factory/mcu_bcm4773.c [new file with mode: 0644]
drivers/sensors/brcm/factory/pressure_bmp182.c [new file with mode: 0644]
drivers/sensors/brcm/factory/prox_tmg399x.c [new file with mode: 0644]
drivers/sensors/brcm/gps/Kconfig [new file with mode: 0644]
drivers/sensors/brcm/gps/Makefile [new file with mode: 0644]
drivers/sensors/brcm/gps/sec_gps_bcm47531.c [new file with mode: 0644]
drivers/sensors/brcm/platform/bbd_s333_patch_file.h [new file with mode: 0644]
drivers/sensors/brcm/platform/bbd_tm2_patch_file.h [new file with mode: 0644]
drivers/sensors/brcm/sensors_core.c [new file with mode: 0644]
drivers/sensors/brcm/ssp.h [new file with mode: 0644]
drivers/sensors/brcm/ssp_bbd.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_c12sd.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_data.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_debug.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_dev.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_firmware.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_i2c.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_iio_ring.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_iio_trigger.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_input.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_misc.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_sensorhub.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_sensorhub.h [new file with mode: 0644]
drivers/sensors/brcm/ssp_spi.c [new file with mode: 0644]
drivers/sensors/brcm/ssp_sysfs.c [new file with mode: 0644]

index 630df6262a5bf8fb3312909126b5c84755857874..879110376e418844644735f1dcc0a9abc6ce1f23 100644 (file)
@@ -60,5 +60,14 @@ config SENSORS_SSP_STM_RINATO
 if SENSORS_SSP_STM_RINATO
 source "drivers/sensors/stm_rinato/Kconfig"
 endif
+
+config SENSORS_SSP_BBD_BRCM
+       bool "Sensorhub for BRCM"
+       help
+         This is enables Sensorhub for BRCM
+if SENSORS_SSP_BBD_BRCM
+source "drivers/sensors/brcm/Kconfig"
+endif
+
 endif
 endmenu
index 0a6d0b56455134e586f0d6325c632ad2e55a3f45..80650613e98594bf7568396c2260a8a1ce6de339 100644 (file)
@@ -6,3 +6,4 @@ obj-$(CONFIG_SENSORS_CORE)              += sensors_core.o
 obj-$(CONFIG_SENSORS_MAX86902)         += max86902.o
 obj-$(CONFIG_SENSORS_MAX_NOTCHFILTER)   += max_notchfilter/
 obj-$(CONFIG_SENSORS_SSP_STM_RINATO)   += stm_rinato/
+obj-$(CONFIG_SENSORS_SSP_BBD_BRCM)     += brcm/
diff --git a/drivers/sensors/brcm/Kconfig b/drivers/sensors/brcm/Kconfig
new file mode 100644 (file)
index 0000000..c9829e2
--- /dev/null
@@ -0,0 +1,87 @@
+#
+# sensor drivers configuration
+#
+config SENSORS_SSP_BBD
+       tristate "Sensors ssp brcm"
+       default n
+       depends on SPI
+       help
+         ssp driver for sensor hub.
+         If you say yes here you get ssp support for
+         sensor hub.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+choice
+       depends on SENSORS_SSP_BBD
+       prompt "Choose target patch"
+       default SENSORHUB_TM2
+
+config SENSORHUB_S333
+       bool "BROADCOM_SENSORHUB_S333"
+       help
+         Support for BRCM S333
+
+config SENSORHUB_TM2
+       bool "BROADCOM_SENSORHUB_TM2"
+       help
+         Support for BRCM TM2
+endchoice
+
+config SENSORS_SSP_ICM20610
+       tristate "Sensors ssp icm20610"
+       default n
+       depends on SPI
+       help
+         icm20610 file for factory test in ssp driver.
+         If you say yes here you get icm20610 support for
+         factory test.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+config SENSORS_SSP_YAS532
+       tristate "Sensors ssp yas532"
+       default n
+       depends on SPI
+       help
+         yas532 file for factory test in ssp driver.
+         If you say yes here you get yas532 support for
+         factory test.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+config SENSORS_SSP_BMP182
+       tristate "Sensor ssp bmp182"
+       default n
+       depends on SPI
+       help
+         bmp182 file for factory test in ssp driver.
+         If you say yes here you get lps25h support for
+         factory test.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+config SENSORS_SSP_TMG399X
+       tristate "Sensors ssp tmg399x"
+       default n
+       depends on SPI
+       help
+         max88005 file for factory test in ssp driver.
+         If you say yes here you get tmg399x support for
+         factory test.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+config SENSORS_SSP_MOBEAM
+       tristate "Sensors ssp mobeam"
+       default n
+       depends on I2C
+       help
+         mobeam file for ssp driver.
+         If you say yes here you get mobeam support using TMG399x.
+         To compile this driver as a module, choose M here: the
+         module will be called ssp.
+
+config GPS_BCM47531
+       bool "BROADCOM_GPS_CHIPSET_47531"
+       default n
diff --git a/drivers/sensors/brcm/Makefile b/drivers/sensors/brcm/Makefile
new file mode 100644 (file)
index 0000000..71843a1
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# Makefile for the sensor drivers.
+#
+
+# Each configuration option enables a list of files.
+obj-$(CONFIG_SENSORS_SSP)              += ssp_dev.o ssp_i2c.o ssp_data.o ssp_sysfs.o \
+                                               ssp_input.o ssp_firmware.o ssp_debug.o \
+                                               ssp_iio_ring.o ssp_iio_trigger.o
+
+obj-$(CONFIG_SENSORS_SSP_ICM20610)     += factory/accel_icm20610.o factory/gyro_icm20610.o
+obj-$(CONFIG_SENSORS_SSP_YAS532)       += factory/magnetic_yas532.o
+obj-$(CONFIG_SENSORS_SSP_TMG399X)      += factory/light_tmg399x.o factory/prox_tmg399x.o \
+                                               factory/gesture_tmg399x.o
+obj-$(CONFIG_SENSORS_SSP_BMP182)       += factory/pressure_bmp182.o
+obj-$(CONFIG_SENSORS_SSP_MOBEAM)       += factory/barcode_emul_tmg3992.o
+obj-$(CONFIG_SENSORS_SSP_SENSORHUB)    += ssp_sensorhub.o ssp_misc.o
+obj-$(CONFIG_SENSORS_SSP_BBD)           += ssp_bbd.o factory/mcu_bcm4773.o \
+                                               bbdpl1/
+obj-$(CONFIG_GPS_BCM47531)             += gps/sec_gps_bcm47531.o
diff --git a/drivers/sensors/brcm/bbdpl1/Makefile b/drivers/sensors/brcm/bbdpl1/Makefile
new file mode 100644 (file)
index 0000000..d9f10f3
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Makefile for the Broadcom Bridge Driver
+#
+
+# Each configuration option enables a list of files.
+obj-$(CONFIG_SENSORS_SSP_BBD)          +=      bbd_common.o bbd_control.o bbd_main.o bbd_packet.o \
+                                               bbd_reliable.o bbd_sensor.o bbd_sysfs.o \
+                                               bbd_ssi_spi.o bbd_tty.o bcm_gps_spi.o bbd_patch.o
+obj-$(CONFIG_SENSORS_SSP_BBD)          +=      transport/ utils/
diff --git a/drivers/sensors/brcm/bbdpl1/bbd.h b/drivers/sensors/brcm/bbdpl1/bbd.h
new file mode 100644 (file)
index 0000000..4b8b679
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef __BBD_H__
+#define __BBD_H__
+
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) > (b) ? (b) : (a))
+#define BBD_MAX_DATA_SIZE       4096  /* max data size for transition  */
+#define BBD_MAX_FREED_NUM       10    /* max number of freed list      */
+
+/** the status of downloading firmware **/
+enum {
+       BBD_FW_COMPLETED,
+       BBD_FW_DOWNLOADING,
+       BBD_FW_FAILED
+};
+
+typedef int (*bbd_on_packet)(void *ssh_data, unsigned char *buf, size_t size);
+typedef int (*bbd_on_packet_alarm)(void *ssh_data);
+typedef int (*bbd_on_control)(void *ssh_data, char *str_ctrl);
+typedef int (*bbd_on_mcu_ready)(void *ssh_data, bool ready);
+
+typedef struct {
+       bbd_on_packet           on_packet;
+       bbd_on_packet_alarm     on_packet_alarm;
+       bbd_on_control          on_control;
+       bbd_on_mcu_ready        on_mcu_ready;
+}bbd_callbacks;
+
+extern void    bbd_register(void* ext_data, bbd_callbacks *pcallbacks);
+extern ssize_t bbd_send_packet(unsigned char *buf, size_t size);
+extern ssize_t bbd_pull_packet(unsigned char *pbuff, size_t len, unsigned int timeout_ms);
+extern int     bbd_control(char *str_ctrl);
+extern int     bbd_mcu_reset(void);
+
+#endif /* __BBD_H__ */
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_common.c b/drivers/sensors/brcm/bbdpl1/bbd_common.c
new file mode 100644 (file)
index 0000000..cf23cd4
--- /dev/null
@@ -0,0 +1,479 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+#include "utils/bbd_utils.h"
+
+#include <linux/kernel.h>       /* printk()             */
+#include <linux/slab.h>         /* kmalloc()            */
+
+#undef  DEBUG_MEMORY
+
+bool bbd_debug(void)
+{
+    return ((gpbbd_dev != NULL) && gpbbd_dev->db);
+}
+
+struct BbdEngine *bbd_engine(void)
+{
+    return &gpbbd_dev->bbd_engine;
+}
+
+static int nAlloc;      /* Linux guarantees statics are cleared to 0 */
+
+int bbd_alloc_count(void)
+{
+    return nAlloc;
+}
+
+void* bbd_alloc(size_t size)
+{
+    void* p = kmalloc(size, GFP_KERNEL);
+    if (!p) {
+           printk("%s failed to alloc\n", __func__);
+           return p;
+    }
+
+    memset(p, 0, size);
+    ++nAlloc;
+#ifdef  DEBUG_MEMORY
+    dprint("bbd_alloc(%u) #%d = %p\n", size, nAlloc, p);
+#endif
+    return p;
+}
+
+void bbd_free(void* p)
+{
+#ifdef  DEBUG_MEMORY
+    dprint("bbd_free() #%d = %p\n", nAlloc, p);
+#endif
+    --nAlloc;
+    kfree(p);
+}
+
+/*---------------------------------------------------------------
+ *
+ *      Manage the queue of freed buffers
+ *      Allow max 10 buffers freed
+ *
+ *---------------------------------------------------------------
+ */
+
+#define BBD_FREED_BUFFER_THRESHOLD 10
+
+#ifdef DEBUG_MEMORY
+#define MSG_INIT_FREED char* msg = "freed"
+#define MSG_SET_CACHED msg = "cached"
+#else
+#define MSG_INIT_FREED
+#define MSG_SET_CACHED
+#endif
+
+void bbd_qitem_cache_add(struct bbd_qitem *qi)
+{
+        struct bbd_device *p = gpbbd_dev;
+        MSG_INIT_FREED;
+
+       mutex_lock(&p->qlock);
+        if (p->qcount < BBD_FREED_BUFFER_THRESHOLD) {
+            ++p->qcount;
+            qi->next = p->qfree;
+            p->qfree = qi;
+            MSG_SET_CACHED;
+        }
+        else {
+            bbd_free(qi);
+        }
+       mutex_unlock(&p->qlock);
+
+#ifdef  DEBUG_MEMORY
+        dprint(KERN_INFO"%s(%p) %d %s\n", __func__, qi, p->qcount, msg);
+#endif
+}
+
+struct bbd_qitem *bbd_qitem_cache_get(size_t req_size)
+{
+    struct bbd_qitem **q_prev = NULL;
+    struct bbd_qitem  *q      = NULL;
+
+    mutex_lock(&gpbbd_dev->qlock);
+    q_prev = &gpbbd_dev->qfree;
+    q      = *q_prev;
+    while (q)
+    {
+        if (req_size <= q->len)
+        {
+            *q_prev = q->next;
+            --gpbbd_dev->qcount;
+            mutex_unlock(&gpbbd_dev->qlock);
+            q->next = 0;
+            q->lenUsed = req_size;
+#ifdef  DEBUG_MEMORY
+            dprint(KERN_INFO"%s(%u) reuse %p\n", __func__, req_size, q);
+#endif
+            return q;
+        }
+        q_prev = &q->next;
+        q = q->next;
+    }
+    mutex_unlock(&gpbbd_dev->qlock);
+    return 0;
+}
+
+int bbd_qitem_cache_uninit(void)
+{
+        int freed = 0;
+       mutex_lock(&gpbbd_dev->qlock);
+        freed = bbd_queue_uninit(gpbbd_dev->qfree);
+       mutex_unlock(&gpbbd_dev->qlock);
+        return freed;
+}
+
+/*---------------------------------------------------------------
+ *
+ *      Common queue and device code.
+ *
+ *---------------------------------------------------------------
+ */
+
+static void bbd_base_init_common(struct bbd_buffer *p)
+{
+       mutex_init(&p->lock);
+       p->count     = 0;
+       p->tout_cnt  = 0;
+       init_waitqueue_head(&p->poll_inq);
+       init_waitqueue_head(&p->comp_inq);
+}
+
+void bbd_base_init_vars(struct bbd_device *dev, struct bbd_base *p, int* result)
+{
+        if (*result)
+                return;
+
+        memset(p, 0, sizeof(*p));
+       /* p->esw_ready = false; */
+       /* p->rxb.buff_size = 0;    ** done by memset() */
+
+       /* allocate memory for rx packet from LHD */
+       p->rxb.pbuff = bbd_alloc(BBD_MAX_DATA_SIZE);
+       if (!p->rxb.pbuff) {
+               printk(KERN_ERR "%s():failed to allocate mem for rxbuff\n",
+                                       __func__);
+               *result = -ENOMEM;
+       }
+        /* printk("%s(%p,%p)\n", __func__, dev, p); */
+
+        bbd_base_init_common((struct bbd_buffer *) &p->txq);
+        bbd_base_init_common(                      &p->rxb);
+}
+
+int bbd_queue_uninit(struct bbd_qitem *q)
+{
+        int freed = 0;
+        while (q)
+        {
+            struct bbd_qitem* pq_next = q->next;
+            q->next = 0;
+            bbd_free(q);
+            ++freed;
+            q = pq_next;
+        }
+        return freed;
+}
+
+#undef EXTENSIVE_REINIT
+
+int bbd_base_reinit(int minor)
+{
+       struct bbd_base *p = gpbbd_dev->bbd_ptr[minor];
+       if (!p) return -EFAULT;
+
+       FUNS(p->name);
+#ifdef EXTENSIVE_REINIT
+       p->rxb.buff_size = 0;
+#endif
+       return 0;
+}
+
+int bbd_base_uninit(struct bbd_base *p)
+{
+        int freed = bbd_queue_uninit(p->txq.qhead);
+        p->txq.qhead = p->txq.qtail = NULL;
+       bbd_free(p->rxb.pbuff);
+        dprint(KERN_INFO"%s(%s) %d freed\n", __func__, p->name, freed);
+        return freed;
+}
+
+struct bbd_qitem *bbd_qitem_alloc(size_t req_size)
+{
+    struct bbd_qitem *qi = bbd_qitem_cache_get(req_size);
+    if (!qi)
+    {
+        int usable_size = BBD_BUFFER_SIZE;
+        if ((int) req_size > usable_size)
+            usable_size = req_size;
+        qi = (struct bbd_qitem *) bbd_alloc(usable_size + QITEM_OVERHEAD);
+        if (qi)  {
+            qi->lenUsed = req_size;
+            qi->len     = usable_size;
+            qi->next    = NULL;
+        }
+    }
+    return qi;
+}
+
+bool bbd_q_add(struct bbd_queue *q, const unsigned char *pbuff, size_t size)
+{
+        struct bbd_qitem *qi = NULL;
+
+        mutex_lock(&q->lock);
+
+        qi = bbd_qitem_alloc(size);
+        if (!qi) {
+                mutex_unlock(&q->lock);
+                return false;
+        }
+        memcpy(qi->data, pbuff, size);
+        if (q->qtail) {
+                q->qtail->next = qi;
+        }
+        else {
+                q->qhead = qi;
+        }
+        q->qtail = qi;
+        qi->next = NULL;
+
+        ++q->count;
+
+        mutex_unlock(&q->lock);
+        return true;
+}
+
+struct bbd_qitem *bbd_q_get(struct bbd_queue *q)
+{
+        struct bbd_qitem  *qi = NULL;
+
+        mutex_lock(&q->lock);
+        qi = q->qhead;
+        if (qi) {
+                q->qhead = qi->next;
+                if (!q->qhead) q->qtail = NULL;
+                qi->next = NULL;
+                --q->count;
+        }
+        mutex_unlock(&q->lock);
+
+        return qi;
+}
+
+/*----------------------------------------------------------------------
+ *
+ *      bbd_on_read
+ *
+ *  Common code to fill a buffer to the user.
+ *
+ *  Note:  this code needs to handle N packets, not just one buffer-full
+ *
+ *----------------------------------------------------------------------
+ */
+#define BBD_ON_READ_Q_THRESHOLD 1024
+ssize_t bbd_on_read(int minor, const unsigned char *pbuff, size_t size)
+{
+        struct bbd_base  *p = NULL;
+       struct bbd_queue *q = NULL;
+
+        if (!gpbbd_dev)
+               return -EFAULT;
+
+        p = gpbbd_dev->bbd_ptr[minor];
+
+        /* allow only some byte-stuffing */
+       if (!p || size > 2*BBD_MAX_DATA_SIZE)
+               return -EFAULT;
+       q = &p->txq;
+
+       if(q->count < BBD_ON_READ_Q_THRESHOLD)
+               bbd_q_add(q, pbuff, size);
+
+       wake_up(&q->poll_inq);       /* Tell about new data */
+
+       dprint("%s %d #%u\n", p->name, (int) size, q->count);
+        BbdEngine_OnTimer();
+       return size;
+}
+
+/*----------------------------------------------------------------------
+ *
+ *      bbd_write
+ *
+ *  Common code to fill a buffer from the user.
+ *  Notes:
+ *      This code lacks capacity for N packets.
+ *      It touches the "rx" buffer, so the naming is skewed.
+ *
+ *----------------------------------------------------------------------
+ */
+
+ssize_t bbd_write(int minor, const char *buf, size_t size, bool fromUser)
+{
+        struct bbd_base *p = gpbbd_dev->bbd_ptr[minor];
+       struct bbd_buffer *prxb = NULL;
+        bool userFail = false;
+        size_t wr_size = MIN(2*BBD_MAX_DATA_SIZE, size);
+
+        BbdEngine_OnTimer();
+
+       if (!p) {
+               dprint("%s\n", "no BBD");
+               return -EFAULT;
+       }
+       prxb = &p->rxb;
+
+       if (size > 2*BBD_MAX_DATA_SIZE) {
+                dprint("%s [%d]\n", p->name, size);
+               return -EFAULT;
+        }
+       dprint("%s(%s.%s)[%d]\n", __func__, p->name,
+                        (fromUser) ? "user" : "internal",
+                        (int) size);
+
+        if (wr_size != size) {
+                dprint("%s [%d]\n", p->name, size);
+               return -EFAULT;
+        }
+
+       mutex_lock(&prxb->lock);
+        if (fromUser)
+            userFail = copy_from_user(prxb->pbuff, buf, wr_size);
+        else
+            memcpy(prxb->pbuff, buf, wr_size);
+
+        bbd_log_hex(p->name, prxb->pbuff, wr_size);
+
+        if (!userFail) {
+            prxb->buff_size = wr_size;
+            prxb->count    += wr_size;
+        }
+       mutex_unlock(&prxb->lock);
+
+       if (userFail)
+               return -EINVAL;
+       return wr_size;
+}
+
+/*----------------------------------------------------------------------
+ *
+ *      bbd_read
+ *
+ *  Common read code to fill a user buffer from an internal queue.
+ *  Notes:
+ *      This code lacks capacity for N packets.
+ *      It touches the "rx" buffer.
+ *
+ *----------------------------------------------------------------------
+ */
+
+ssize_t bbd_read(int minor, char __user *buf, size_t size, bool bUser)
+{
+        struct bbd_base  *p  = gpbbd_dev->bbd_ptr[minor];
+       struct bbd_queue *q  = NULL;
+       struct bbd_qitem *qi = NULL;
+
+       ssize_t rd_size = 0;
+
+       if (!p)
+               return -EFAULT;
+
+        BbdEngine_OnTimer();
+       q = &p->txq;
+
+        qi = bbd_q_get(q);
+       if (!qi)
+               return 0;
+
+       rd_size = MIN(qi->lenUsed, size);
+       if (size < qi->lenUsed) {
+            dprint("%d %s %d<%d\n", __LINE__, p->name, size, qi->lenUsed);
+            rd_size = -EFAULT;
+            goto err;
+        }
+
+        if (bUser) {
+            if (copy_to_user(buf, (void *)qi->data, rd_size)) {
+                    rd_size = -EFAULT;
+                    goto err;
+            }
+        }
+        else {
+            memcpy(buf, qi->data, rd_size);
+        }
+
+
+       dprint("%s(%s.%s)[%d]\n", __func__, p->name,
+                        (bUser) ? "user" : "internal", (int) rd_size);
+        bbd_log_hex(p->name, qi->data, rd_size);
+
+        bbd_qitem_cache_add(qi);
+       wake_up(&q->comp_inq);
+
+       return rd_size;
+
+err:
+        bbd_qitem_cache_add(qi);
+       return rd_size;
+}
+
+unsigned int bbd_poll(int minor, struct file *filp, poll_table * wait)
+{
+        struct bbd_base *p = gpbbd_dev->bbd_ptr[minor];
+       unsigned int mask = 0;
+
+       if (!p)
+               return -EFAULT;
+
+        BbdEngine_OnTimer();
+       if (p->txq.count > 0) {
+               mask |= POLLIN;          /* no need to sleep - already have data */
+               return mask;
+       }
+
+       poll_wait(filp, &p->txq.poll_inq, wait);       /* wait until wake up */
+
+       if (p->txq.count > 0)
+               mask |= POLLIN;
+
+       return mask;
+}
+
+/*      Return the number of packets, or -1 upon error
+ */
+
+int bbd_count(int minor)
+{
+        struct bbd_base *p = gpbbd_dev->bbd_ptr[minor];
+
+       return (p) ? p->txq.count : -1;
+}
+
+void bbd_log_hex(const char*          pIntroduction,
+                 const unsigned char* pData,
+                 unsigned long        ulDataLen)
+{
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_control.c b/drivers/sensors/brcm/bbdpl1/bbd_control.c
new file mode 100644 (file)
index 0000000..767160f
--- /dev/null
@@ -0,0 +1,283 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+
+ssize_t bbd_ESW_control(char *buf, ssize_t len);
+
+int bbd_tty_open (void);
+int bbd_tty_close(void);
+
+struct bcm4773_uart_port;
+void bcm4773_mcu_resp_float(bool do_float);
+void BbdEngine_SetUp(struct BbdEngine *p);
+struct ssp_data;
+extern void reset_mcu(struct ssp_data *data);
+
+extern bool ssp_dbg;
+extern bool ssp_pkt_dbg;
+extern bool ssi_dbg;
+
+/**
+ * initialize control-specific variables
+ *
+ * @pbbd_dev: bbd driver pointer
+ *
+ * @return: *result 0 = success, others = failure
+ */
+
+void bbd_control_init_vars(struct bbd_device *dev, int* result)
+{
+       struct bbd_control_device *p = NULL;
+
+       if (*result)
+               return;
+
+       p = bbd_alloc(sizeof(struct bbd_control_device));
+       if (!p) {
+               *result = -ENOMEM;
+               return;
+       }
+
+       bbd_base_init_vars(dev, &p->base, result);
+       if (*result) {
+               bbd_free(p);
+               return;
+       }
+       dev->bbd_ptr[BBD_MINOR_CONTROL] = p;
+       p->base.name = "control";
+}
+
+struct bbd_control_device *bbd_control_ptr(void)
+{
+       if (!gpbbd_dev)
+               return NULL;
+       return gpbbd_dev->bbd_ptr[BBD_MINOR_CONTROL];
+}
+
+struct bbd_base *bbd_control_ptr_base(void)
+{
+       struct bbd_control_device *p = bbd_control_ptr();
+       if (!p)
+               return NULL;
+       return &p->base;
+}
+
+int bbd_control_uninit(void)
+{
+       struct bbd_control_device* p = bbd_control_ptr();
+       int freed = 0;
+       if (p) {
+               freed = bbd_base_uninit(&p->base);
+               bbd_free(p);
+               gpbbd_dev->bbd_ptr[BBD_MINOR_CONTROL] = NULL;
+       }
+       return freed;
+}
+
+/**
+ * sensor hub driver or internal PL sends string control
+ *
+ * somewhat primitive - no queueing or guarantees at all.
+ *
+ * @str_ctrl: string control
+ *
+ * @return: 0 = success, -1 = failure
+ */
+int bbd_control(char *str)
+{
+        return bbd_on_read(BBD_MINOR_CONTROL, str, strlen(str) + 1);
+}
+EXPORT_SYMBOL(bbd_control);
+
+/**
+ * sensor hub request reset to 477x
+ *
+ * @return: 0 = success, -1 = failure
+ */
+int bbd_mcu_reset(void)
+{
+       dprint("reset request from sensor hub\n");
+       return bbd_control(BBD_CTRL_RESET_REQ);
+}
+EXPORT_SYMBOL(bbd_mcu_reset);
+
+
+/**
+ * open bbd control driver
+ */
+int bbd_control_open(struct inode *inode, struct file *filp)
+{
+       filp->private_data = gpbbd_dev;
+       dprint("opened\n");
+       return 0;
+}
+
+/**
+ * close bbd control driver
+ */
+int bbd_control_release(struct inode *inode, struct file *filp)
+{
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+        return bbd_base_reinit(BBD_MINOR_CONTROL);
+}
+
+/**
+ * read signal/data from bbd_list_head to user
+ */
+ssize_t bbd_control_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos)
+{
+       return bbd_read(BBD_MINOR_CONTROL, buf, size, true);
+}
+
+
+/**
+ * send string control directly from lhd to bbd for these purposes:
+ * 1)  BBD control
+ * 2)  BBD packet layer
+ * 3)  SH driver
+ */
+
+ssize_t bbd_control_write(struct file *filp,
+                               const char __user *buf,
+                               size_t size, loff_t *ppos)
+{
+       struct bbd_base *pb = bbd_control_ptr_base();
+       ssize_t len = bbd_write(BBD_MINOR_CONTROL, buf, size, true);
+       if (len < 0)
+               return len;
+       return bbd_ESW_control(pb->rxb.pbuff, pb->rxb.buff_size);
+}
+
+bool esw_ready(void)
+{
+        struct bbd_control_device *p    =    bbd_control_ptr();
+       if (!p)
+               return false;
+
+       return p->esw_ready;
+}
+
+ssize_t bbd_ESW_control(char *buf, ssize_t len)
+{
+       ssize_t ret = len;
+       struct bbd_control_device *p    =    bbd_control_ptr();
+       struct bbd_sensor_device  *ps   =    bbd_sensor_ptr();
+       struct BbdEngine          *pEng = &gpbbd_dev->bbd_engine;
+       bool bSetup = false;
+
+       if (!p || !ps)
+               return -EFAULT;
+
+       dprint("%s(%s) callbacks %sregistered.\n", __func__, buf,
+                       (ps->callbacks) ? "" : "NOT ");
+
+       if (strstr(buf, ESW_CTRL_READY)) {
+               p->esw_ready = true;
+               bcm4773_mcu_resp_float(true);
+               if (ps->callbacks && ps->callbacks->on_mcu_ready) {
+                       ret = ps->callbacks->on_mcu_ready(
+                                       ps->priv_data,
+                                       p->esw_ready);
+               }
+       } else if (strstr(buf, ESW_CTRL_NOTREADY)) {
+               p->esw_ready = false;
+               ps->base.rxb.buff_size = 0;
+               bcm4773_mcu_resp_float(false);
+               if (ps->callbacks && ps->callbacks->on_mcu_ready) {
+                       ret = ps->callbacks->on_mcu_ready(ps->priv_data,
+                                       p->esw_ready);
+               }
+       } else if (strstr(buf, ESW_CTRL_CRASHED)) {
+               p->esw_ready     = false;
+               ps->base.rxb.buff_size = 0;
+               bcm4773_mcu_resp_float(false);
+               if (ps->callbacks && ps->callbacks->on_control)
+                       ret = ps->callbacks->on_control(ps->priv_data, buf);
+       } else if (strstr(buf, BBD_CTRL_DEBUG_ON)) {
+               gpbbd_dev->db = true;
+               bSetup = true;
+       } else if (strstr(buf, BBD_CTRL_DEBUG_OFF)) {
+               gpbbd_dev->db = false;
+               bSetup = true;
+       } else if (strstr(buf, SSP_DEBUG_ON)) {
+               ssp_dbg = true;
+               ssp_pkt_dbg = true;
+       } else if (strstr(buf, SSP_DEBUG_OFF)) {
+               ssp_dbg = false;
+               ssp_pkt_dbg = false;
+       } else if (strstr(buf, SSI_DEBUG_ON)) {
+               ssi_dbg = true;
+       } else if (strstr(buf, SSI_DEBUG_OFF)) {
+               ssi_dbg = false;
+       } else if (strstr(buf, BBD_CTRL_SHMD_ON)) {
+               gpbbd_dev->shmd = true;
+               bSetup = true;
+       } else if (strstr(buf, BBD_CTRL_SHMD_OFF)) {
+               gpbbd_dev->shmd = false;
+               bSetup = true;
+       } else if (strstr(buf, BBD_CTRL_SPI)) {
+               bbd_tty_close();
+               gpbbd_dev->sio_type = BBD_SERIAL_SPI;
+               bSetup = true;
+       } else if (strstr(buf, BBD_CTRL_TTY)) {
+               gpbbd_dev->sio_type = BBD_SERIAL_TTY;
+               bSetup = true;
+               bbd_tty_open();
+       } else if (BbdBridge_SetControlMessage(&pEng->bridge, buf)) {
+               return len;
+       } else if (ps->callbacks && ps->callbacks->on_control) {
+               /* Tell SHMD about the unknown control string */
+               ps->callbacks->on_control(ps->priv_data, buf);
+       }
+
+       if (bSetup) {
+               BbdEngine_SetUp(pEng);
+       }
+       else            /* No need to send it to the SHMD */
+       {
+               const char* msg = "NO CB";
+               if (ps->callbacks)
+                       msg = (ps->callbacks->on_mcu_ready) ? "rdy cb" : "no cb";
+               dprint("%s() %s RDY %d   DBG %d = %d\n", __func__, msg,
+                               p->esw_ready, bbd_debug(), ret);
+               ret = len;
+       }
+
+       return ret;
+}
+
+/**
+ * tx control string to LHD
+ *
+ * There are several paths for control strings:
+ *
+ * SHMD-->BBD_CONTROL-->LHD "need reset"
+ * SHMD<--BBD_CONTROL<--LHD (TBD)
+ *        BBD_CONTROL<--LHD ESW, BBD, and PL control
+ *        BBD_CONTROL-->LHD BBD and PL status and errors
+ */
+unsigned int bbd_control_poll(struct file *filp, poll_table * wait)
+{
+    return bbd_poll(BBD_MINOR_CONTROL, filp, wait);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_debug.h b/drivers/sensors/brcm/bbdpl1/bbd_debug.h
new file mode 100644 (file)
index 0000000..55b056e
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef __BBD_DEBUG_H__ // {
+#define __BBD_DEBUG_H__
+
+#define xBBD_DEBUG     1
+
+bool bbd_debug(void);
+
+#ifdef BBD_DEBUG   // }
+#ifdef TDD
+#define dprint(fmt, args...) \
+               if(db) printf("BBD:(%s): " fmt, __func__, ##args)
+#else
+
+#ifndef KERN_INFO
+#define KERN_INFO "<i>"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+int printk(const char *fmt, ...);
+#ifdef __cplusplus
+}
+#endif
+
+#define dprint(fmt, args...) \
+               if(bbd_debug()) printk(KERN_INFO "BBD::%s()/%d " fmt, \
+                                __func__, __LINE__, ##args)
+#endif
+
+#define FUNC()     if (bbd_debug()) printk(KERN_INFO "BBD:%s()/%d\n",           __FUNCTION__,       __LINE__)
+#define FUNS(s)    if (bbd_debug()) printk(KERN_INFO "BBD:%s(\"%s\")/%d\n",     __FUNCTION__, s,    __LINE__)
+#define FUNI(i)    if (bbd_debug()) printk(KERN_INFO "BBD:%s(%lu)/%d\n",        __FUNCTION__, (unsigned long)   i, __LINE__)
+#define FUNSI(s,i) if (bbd_debug()) printk(KERN_INFO "BBD:%s(\"%s\",%lu)/%d\n", __FUNCTION__, s, (unsigned long) i, __LINE__)
+
+#else   // } else {
+
+#define dprint(format, args...)
+#define FUNC()     
+#define FUNS(s)    
+#define FUNI(i)   
+#define FUNSI(s,i) 
+
+#endif  // } BBD_DEBUG
+
+
+void bbd_log_hex(const char*          pIntroduction,
+                 const unsigned char* pData,
+                 unsigned long        ulDataLen);
+
+
+#endif // } __BBD_DEBUG_H__
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_ifc.h b/drivers/sensors/brcm/bbdpl1/bbd_ifc.h
new file mode 100644 (file)
index 0000000..5ab501d
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+/*******************************************************************************/
+/** \file bbd_ifc.h Interface between the BBD and Rpc code in user space
+*
+*******************************************************************************/
+
+#ifndef BBD_IFC_H  /* { */
+#define BBD_IFC_H
+
+#define BBD_ESW_CTRL_MAX_STR_LEN       100
+
+/* BBD control (LHD <--- BBD <--- SHMD*/
+#define BBD_CTRL_RESET_REQ     "BBD:RESET_REQ" /* SHMD requests ESW reset */
+#define BBD_CTRL_TICK          "BBD:tick"      /* timer tick inside the bridge */
+
+/* ESW status (LHD ---> BBD */
+#define ESW_CTRL_READY         "ESW:READY"
+#define ESW_CTRL_NOTREADY      "ESW:NOTREADY"
+#define ESW_CTRL_CRASHED       "ESW:CRASHED"
+
+#define BBD_CTRL_PASSTHRU_ON    "BBD:PassThru=1"
+#define BBD_CTRL_PASSTHRU_OFF   "BBD:PassThru=0"
+#define BBD_CTRL_SHMD_ON        "BBD:SHMD=1"
+#define BBD_CTRL_SHMD_OFF       "BBD:SHMD=0"
+#define BBD_CTRL_DEBUG_ON       "BBD:DEBUG=1"
+#define BBD_CTRL_DEBUG_OFF      "BBD:DEBUG=0"
+
+#define SSP_DEBUG_ON           "SSP:DEBUG=1"
+#define SSP_DEBUG_OFF          "SSP:DEBUG=0"
+#define SSI_DEBUG_ON           "SSI:DEBUG=1"
+#define SSI_DEBUG_OFF          "SSI:DEBUG=0"
+
+#define BBD_CTRL_SPI            "BBD:Serial=SPI"
+#define BBD_CTRL_TTY            "BBD:Serial=TTY"
+#define BBD_CTRL_SIO            "BBD:Serial=SIO"
+
+#define SHMD_RESET_MCU         "SHMD:RESET_MCU"
+
+/* Packet Layer handshake LHD <---> BBD */
+#define BBD_CTRL_PL_START_REMOTE_SYNC      "PL:StartRemoteSync"
+#define BBD_CTRL_PL_REMOTE_SYNC_COMPLETE   "PL:RemoteSyncComplete"
+#define BBD_CTRL_PL_ON_RELIABLE_ERROR      "PL:OnReliableError"
+#define BBD_CTRL_PL_ON_EXCEPTION           "PL:OnException:"
+#define BBD_CTRL_PL_ON_COMMUNICATION_ERROR "PL:OnCommunicationError"
+
+
+#endif /* } BBD_IFC_H */
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_internal.h b/drivers/sensors/brcm/bbdpl1/bbd_internal.h
new file mode 100644 (file)
index 0000000..99307bb
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef BBD_INTERNAL_H__        /* { */
+#define BBD_INTERNAL_H__
+
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+#include <linux/init.h>
+#include <linux/list.h>
+
+#include <linux/kernel.h>      /* printk()             */
+#include <linux/slab.h>                /* kmalloc()            */
+#include <linux/fs.h>          /* everything           */
+#include <linux/errno.h>       /* error codes          */
+#include <linux/types.h>       /* size_t               */
+#include <linux/proc_fs.h>
+#include <linux/fcntl.h>       /* O_ACCMODE            */
+#include <linux/sysfs.h>
+#include <linux/cdev.h>
+#include <linux/workqueue.h>
+#include <linux/semaphore.h>
+
+#include <linux/uaccess.h>
+#include <linux/sched.h>
+#include <linux/poll.h>
+
+#include "bbd.h"
+#include "bbd_ifc.h"
+#include "bbd_debug.h"
+#include "transport/bbd_engine.h"
+
+#define BBD_DEVICE_MAJOR       239
+
+#define BBD_PACKET_TIMEOUT     1000
+
+enum {
+    BBD_MINOR_SENSOR    = 0,
+    BBD_MINOR_CONTROL   = 1,
+    BBD_MINOR_PACKET    = 2,
+    BBD_MINOR_RELIABLE  = 3,
+    BBD_MINOR_PATCH     = 4,
+    BBD_MINOR_SSI_SPI_DEBUG = 5,
+    BBD_DEVICE_INDEX
+};
+
+struct bbd_dev;
+
+struct bbd_buffer {
+       struct mutex lock;              /* lock */
+       wait_queue_head_t poll_inq;     /* wait queue for poll */
+       wait_queue_head_t comp_inq;     /* wait queue for completion */
+       unsigned int count;             /* total size count */
+       unsigned int tout_cnt;          /* timeout count */
+
+       unsigned char *pbuff;           /* buff pointer for tx */
+       int buff_size;                  /* buff size */
+};
+
+#define BBD_BUFFER_SIZE 1024
+
+struct bbd_qitem {
+        struct bbd_qitem *next;
+        unsigned short    len;
+        unsigned short    lenUsed;
+        unsigned char     data[BBD_BUFFER_SIZE];
+};
+
+#define QITEM_OVERHEAD  (sizeof(struct bbd_qitem) - BBD_BUFFER_SIZE)
+
+
+struct bbd_queue {
+       struct mutex lock;              /* lock */
+       wait_queue_head_t poll_inq;     /* wait queue for poll */
+       wait_queue_head_t comp_inq;     /* wait queue for completion */
+       unsigned int count;             /* total size count */
+       unsigned int tout_cnt;          /* timeout count */
+
+       struct bbd_qitem *qhead;        /* queue of data */
+       struct bbd_qitem *qtail;        /* last item in q */
+};
+
+#define BBD_SERIAL_SPI  0               /* stacked ssi-spi driver for 4773 */
+#define BBD_SERIAL_TTY  1               /* stacked tty driver for 477x */
+
+#define xSUPORT_MCU_HOST_WAKE            /* JK temporary patch for new HW */
+#define BBD_NEW_HW_REV  8               /* connnected mcu_req, mcu_resp from HW rev 8 */
+
+/*
+ * bbd device structure
+ */
+struct bbd_device {
+        struct BbdEngine    bbd_engine;
+       struct cdev dev    [BBD_DEVICE_INDEX];  /* device for bbd */
+       void       *bbd_ptr[BBD_DEVICE_INDEX];  /* individual structures */
+
+       struct mutex      qlock;
+       struct bbd_qitem *qfree;            /* list of free qitems */
+        int               qcount;
+
+        bool        db;                     /* debug flag */
+        bool        shmd;                   /* enable shmd-->bridge flow */
+        int         sio_type;               /* 0 [default] SPI, 1 TTY */
+        unsigned long jiffies_to_wake;
+        int           tty_baud;
+
+        unsigned int hw_rev;   /* JK added temporary feature for old hw */
+};
+
+extern struct bbd_device *gpbbd_dev;
+
+/*
+ * bbd common device structure
+ */
+struct bbd_base {
+       struct bbd_queue  txq;              /* tx buffer LHD<--BBD */
+       struct bbd_buffer rxb;              /* rx buffer LHD-->BBD */
+        const char* name;
+};
+
+/*      The overall data flow (e.g. packet, reliable, control) is like this:
+ *      bbd_***_write()  --> bbd_write()
+ *              Fills the internal bbd_base [rx side] with data from the user.
+ *      It is OK for this RX buffer to be a single-entry deep because
+ *      various routines then pull this data immediately for processing
+ *         - packet data goes into the BbdBridge
+ *         - reliable data goes into the BbdBridge
+ *         - control data gets scanned and handled immediately
+ *
+ *   The reverse stream:
+ *      When various data sources have packets for the user they call:
+ *              bbd_on_read(int minor...)
+ *      Which fills the TX queue.
+ *      When the user code wakes up (as signalled by bbd_***_poll), it
+ *      calls bbd_***_read() which calls bbd_read().
+ */
+ssize_t      bbd_write  (int minor, const          char *pbuff, size_t size, bool bUser);
+ssize_t      bbd_on_read(int minor, const unsigned char *pbuff, size_t size);
+ssize_t      bbd_read   (int minor, char __user         *pbuff, size_t size, bool bUser);
+unsigned int bbd_poll   (int minor, struct file *filp, poll_table *wait);
+
+/*
+ * bbd sensor device structure
+ */
+struct bbd_sensor_device {
+        struct bbd_base base;
+       void           *priv_data;        /* private data pointer       */
+        bbd_callbacks  *callbacks;
+};
+
+
+/*
+ * bbd control device structure
+ */
+struct bbd_control_device {
+        struct bbd_base   base;
+       bool              esw_ready;
+};
+
+/*
+ * bbd packet device structure
+ */
+struct bbd_packet_device {
+        struct bbd_base base;
+};
+
+/*
+ * bbd reliable device structure
+ */
+struct bbd_reliable_device {
+        struct bbd_base base;
+};
+
+struct Bcm477x_Debug_Xfer
+{
+        unsigned char a_mode;         /* 0x80 */
+        unsigned char a_cmd;          /* 0xD1 */
+        unsigned char a_spi_addr;     /* 0x00 */
+        unsigned char a_addr[4];
+        unsigned char a_len [2];
+        unsigned char a_dma;          /* 0x03 */
+        unsigned char b_mode;         /* 0x80 */
+        unsigned char b_cmd;          /* 0xD1 */
+        unsigned char b_spi_addr;     /* 0x24 */
+        unsigned char b_data[1];      /* get actual size from a_len[] */
+};
+
+/*
+ * bbd ssi spi debug device structure
+ */
+struct bbd_ssi_spi_debug_device {
+        struct bbd_base base;
+        unsigned long numXfers;
+        unsigned long numBytes;
+        struct Bcm477x_Debug_Xfer trace;
+};
+
+void bbd_base_init_vars(struct bbd_device *dev, struct bbd_base *p, int* result);
+int  bbd_base_uninit   (                        struct bbd_base *p             );
+int  bbd_base_reinit   (int minor);
+int  bbd_queue_uninit  (struct bbd_qitem *q);
+
+void  bbd_free (void  *p   );
+void* bbd_alloc(size_t size);
+#define bbd_calloc bbd_alloc
+
+struct bbd_sensor_device* bbd_sensor_ptr(void);
+
+struct BbdEngine *bbd_engine(void);
+
+
+#endif /* BBD_INTERNAL_H__        } */
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_main.c b/drivers/sensors/brcm/bbdpl1/bbd_main.c
new file mode 100644 (file)
index 0000000..f83d079
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+
+#include "bbd_internal.h"
+
+#define BBD_DEVICE_MAJOR       239
+
+int bbd_ssi_spi_open(void);
+
+int bbd_tty_close(void);
+
+struct bbd_device *gpbbd_dev;
+
+void bbd_sensor_init_vars  (struct bbd_device *dev, int* result);
+void bbd_control_init_vars (struct bbd_device *dev, int* result);
+void bbd_packet_init_vars  (struct bbd_device *dev, int* result);
+void bbd_reliable_init_vars(struct bbd_device *dev, int* result);
+void bbd_patch_init_vars     (struct bbd_device *dev, int* result);
+void bbd_ssi_spi_debug_init_vars(struct bbd_device *dev, int* result);
+
+int bbd_sensor_uninit(void);
+int bbd_control_uninit(void);
+int bbd_packet_uninit(void);
+int bbd_reliable_uninit(void);
+int bbd_patch_uninit(void);
+
+int bbd_sensor_open(struct inode *inode, struct file *filp);
+int bbd_sensor_release(struct inode *inode, struct file *filp);
+ssize_t bbd_sensor_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+ssize_t bbd_sensor_write(struct file *filp,
+                               const char __user *buf,
+                               size_t size, loff_t *ppos);
+unsigned int bbd_sensor_poll(struct file *filp, poll_table * wait);
+
+int bbd_control_open(struct inode *inode, struct file *filp);
+int bbd_control_release(struct inode *inode, struct file *filp);
+ssize_t bbd_control_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+ssize_t bbd_control_write(struct file *filp,
+                               const char __user *buf,
+                               size_t size, loff_t *ppos);
+unsigned int bbd_control_poll(struct file *filp, poll_table * wait);
+
+int bbd_packet_open(struct inode *inode, struct file *filp);
+int bbd_packet_release(struct inode *inode, struct file *filp);
+ssize_t bbd_packet_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+ssize_t bbd_packet_write(struct file *filp,
+                               const char __user *buf,
+                               size_t size, loff_t *ppos);
+unsigned int bbd_packet_poll(struct file *filp, poll_table * wait);
+
+int bbd_reliable_open(struct inode *inode, struct file *filp);
+int bbd_reliable_release(struct inode *inode, struct file *filp);
+ssize_t bbd_reliable_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+ssize_t bbd_reliable_write(struct file *filp,
+                               const char __user *buf,
+                               size_t size, loff_t *ppos);
+unsigned int bbd_reliable_poll(struct file *filp, poll_table * wait);
+
+int bbd_patch_open(struct inode *inode, struct file *filp);
+int bbd_patch_release(struct inode *inode, struct file *filp);
+ssize_t bbd_patch_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+
+int bbd_ssi_spi_debug_open(struct inode *inode, struct file *filp);
+int bbd_ssi_spi_debug_release(struct inode *inode, struct file *filp);
+ssize_t bbd_ssi_spi_debug_read(struct file *filp, char __user *buf,
+                               size_t size, loff_t *ppos);
+ssize_t bbd_ssi_spi_debug_write(struct file *filp,
+                                const char __user *buf,
+                                size_t size, loff_t *ppos);
+
+int bbd_alloc_count(void);
+
+static const struct file_operations bbd_fops[BBD_DEVICE_INDEX] = {
+       /* bbd sensor file operations (legacy) */
+       {
+               .owner          =  THIS_MODULE,
+               .open           =  bbd_sensor_open,
+               .release        =  bbd_sensor_release,
+               .read           =  bbd_sensor_read,
+               .write          =  bbd_sensor_write,
+               .poll           =  bbd_sensor_poll,
+       },
+       /* bbd control file operations */
+       {
+               .owner          =  THIS_MODULE,
+               .open           =  bbd_control_open,
+               .release        =  bbd_control_release,
+               .read           =  bbd_control_read,
+               .write          =  bbd_control_write,
+               .poll           =  bbd_control_poll,
+       },
+       /* bbd packet file operations */
+       {
+               .owner          =  THIS_MODULE,
+               .open           =  bbd_packet_open,
+               .release        =  bbd_packet_release,
+               .read           =  bbd_packet_read,
+               .write          =  bbd_packet_write,
+               .poll           =  bbd_packet_poll,
+       },
+       /* bbd reliable file operations */
+       {
+               .owner          =  THIS_MODULE,
+               .open           =  bbd_reliable_open,
+               .release        =  bbd_reliable_release,
+               .read           =  bbd_reliable_read,
+               .write          =  bbd_reliable_write,
+               .poll           =  bbd_reliable_poll,
+       },
+    /* bbd patch file operations */
+       {
+               .owner          =  THIS_MODULE,
+               .open           =  bbd_patch_open,
+               .release        =  bbd_patch_release,
+               .read           =  bbd_patch_read,
+               .write          =  NULL,
+               .poll           =  NULL,
+       },
+       /* bbd ssi spi debug operations */
+       {
+                .owner          =  THIS_MODULE,
+               .open           =  bbd_ssi_spi_debug_open,
+               .release        =  bbd_ssi_spi_debug_release,
+                .read           =  bbd_ssi_spi_debug_read,
+                .write          =  bbd_ssi_spi_debug_write,
+                .poll           =  NULL,
+       }
+};
+
+/*****************************************************************************
+*
+* bbd platform
+*
+******************************************************************************/
+static void bbd_platform_release(struct device *dev)
+{
+       printk(KERN_INFO "%s()\n", __func__);
+}
+
+static struct platform_device bbd_platform_dev = {
+       .name = "bbd",
+       .id = 0,
+       .dev = {
+               .release = bbd_platform_release,
+       }
+};
+
+static int bbd_dev_major = BBD_DEVICE_MAJOR;
+
+int  bbd_sysfs_init  (struct kobject *kobj);
+void bbd_sysfs_uninit(struct kobject *kobj);
+
+static int bbd_init_vars(struct bbd_device *pbbd_dev)
+{
+       int result = 0;
+
+       if (!pbbd_dev)
+               return -EINVAL;
+
+       memset(pbbd_dev, 0, sizeof(*pbbd_dev));
+        pbbd_dev->sio_type = BBD_SERIAL_SPI;
+        pbbd_dev->shmd     = true;
+        pbbd_dev->tty_baud = 921600;
+        mutex_init(&pbbd_dev->qlock);
+
+        bbd_sensor_init_vars  (pbbd_dev, &result);
+        bbd_control_init_vars (pbbd_dev, &result);
+        bbd_packet_init_vars  (pbbd_dev, &result);
+        bbd_reliable_init_vars(pbbd_dev, &result);
+        bbd_patch_init_vars   (pbbd_dev, &result);
+        bbd_ssi_spi_debug_init_vars   (pbbd_dev, &result);
+        if (!result)
+                BbdEngine_BbdEngine(&gpbbd_dev->bbd_engine);
+        return result;
+}
+
+static int __init bbd_device_init(void)
+{
+       int i, ret = -ENOMEM;
+       dev_t devno[BBD_DEVICE_INDEX] = {0,};
+       struct device *dev = NULL;
+       struct class *bbd_class;
+
+       const char *dev_name[BBD_DEVICE_INDEX] = {
+               "bbd_sensor",
+               "bbd_control",
+               "bbd_packet",
+               "bbd_reliable",
+               "bbd_patch",
+               "bbd_ssi_spi_debug" };
+
+       gpbbd_dev = bbd_alloc(sizeof(struct bbd_device));
+       if (!gpbbd_dev)
+               goto exit;
+
+       ret = bbd_init_vars(gpbbd_dev);
+       if (ret < 0)
+               goto exit;
+
+       bbd_class = class_create(THIS_MODULE, "bbd");
+       if (IS_ERR(bbd_class)) {
+               printk(KERN_ERR "BBD:%s() failed to create class\n", __func__);
+               goto free_bbd_dev;
+       }
+
+       for (i=0; i<BBD_DEVICE_INDEX; i++) {
+               BUG_ON(!dev_name[i]);
+               printk(KERN_INFO "BBD:%s(%d,%d)##### 204024 /dev/%s\n", __func__, BBD_DEVICE_MAJOR,i, dev_name[i]);
+               devno[i] = MKDEV(BBD_DEVICE_MAJOR, i);
+               ret = register_chrdev_region(devno[i], 1, dev_name[i]);
+               if (ret) {
+                       printk(KERN_ERR "BBD:%s() failed to register char dev(%d) (ret=%d)\n", __func__, i, ret);
+                       while(--i)
+                               unregister_chrdev_region(devno[i], 1);
+                       goto free_bbd_class;
+               }
+               }
+
+       for (i=0; i<BBD_DEVICE_INDEX; i++) {
+               dev = device_create(bbd_class, NULL, MKDEV(BBD_DEVICE_MAJOR, i), NULL, "%s", dev_name[i]);
+               if (IS_ERR_OR_NULL(dev)) {
+                       printk(KERN_ERR "BBD:%s() failed to create device %s\n", __func__, dev_name[i]);
+                       while(--i)
+                               device_destroy(bbd_class, devno[i]);
+                       goto unregister_dev;
+               }
+               }
+
+       for (i=0; i<BBD_DEVICE_INDEX; i++) {
+               cdev_init(&gpbbd_dev->dev[i], &bbd_fops[i]);
+               gpbbd_dev->dev[i].owner = THIS_MODULE;
+               gpbbd_dev->dev[i].ops   = &bbd_fops[i];
+               ret = cdev_add(&gpbbd_dev->dev[i], devno[i], 1);
+               if (ret) {
+                       printk(KERN_ERR "failed to add bbd_device device(ret=%d).\n", ret);
+                       while(--i)
+                               cdev_del(&gpbbd_dev->dev[i]);
+                       goto destroy_dev;
+               }
+       }
+
+       if (platform_device_register(&bbd_platform_dev)) {
+               printk(KERN_ERR "%s(): failed to register platfrom device(bbd_device)\n", __func__);
+               goto del_cdev;
+       }
+
+       dev = &bbd_platform_dev.dev;
+       dev_set_drvdata(dev, (void *)gpbbd_dev);
+
+       if (bbd_sysfs_init(&dev->kobj))
+               goto unreg_platform_dev;
+
+        bbd_ssi_spi_open();
+
+       return 0;
+
+unreg_platform_dev:
+       platform_device_unregister(&bbd_platform_dev);
+del_cdev:
+       for (i=0; i<BBD_DEVICE_INDEX; i++)
+               cdev_del(&gpbbd_dev->dev[i]);
+destroy_dev:
+       for (i=0; i<BBD_DEVICE_INDEX; i++)
+               device_destroy(bbd_class, devno[i]);
+unregister_dev:
+       for (i=0; i<BBD_DEVICE_INDEX; i++)
+               unregister_chrdev_region(MKDEV(bbd_dev_major, i), 1);
+free_bbd_class:
+       class_destroy(bbd_class);
+free_bbd_dev:
+            bbd_free(gpbbd_dev);
+            gpbbd_dev = NULL;
+exit:
+       return ret;
+}
+
+int bbd_qitem_cache_uninit(void);
+
+static void __exit bbd_device_exit(void)
+{
+       struct bbd_device *pbbd_dev = gpbbd_dev;
+       struct device *dev = &bbd_platform_dev.dev;
+       int i=0;
+       int freedActive = 0;
+       int freedIdle   = 0;
+
+       if (pbbd_dev == NULL)
+               return;
+
+
+       for (i=0; i<BBD_DEVICE_INDEX; i++) {
+               cdev_del(&pbbd_dev->dev[i]);
+               unregister_chrdev_region(MKDEV(bbd_dev_major, i), 1);
+       }
+
+        BbdEngine_dtor(&pbbd_dev->bbd_engine);
+
+        bbd_tty_close();
+        freedActive += bbd_patch_uninit();
+        freedActive += bbd_reliable_uninit();
+        freedActive += bbd_packet_uninit();
+        freedActive += bbd_control_uninit();
+        freedActive += bbd_sensor_uninit();
+
+        freedIdle    = bbd_qitem_cache_uninit();
+        pbbd_dev->qfree = 0;
+       bbd_free(pbbd_dev);
+       gpbbd_dev = 0;
+
+        printk("%s Buffer stats: %d active %d idle  %d lost\n", __func__,
+                        freedActive, freedIdle, bbd_alloc_count());
+
+        bbd_sysfs_uninit(&dev->kobj);
+       platform_device_unregister(&bbd_platform_dev);
+}
+
+MODULE_AUTHOR("Broadcom");
+MODULE_LICENSE("Dual BSD/GPL");
+/* bbd_device_init() should be called before shmd/ssp init function */
+subsys_initcall(bbd_device_init);
+module_exit(bbd_device_exit);
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_packet.c b/drivers/sensors/brcm/bbdpl1/bbd_packet.c
new file mode 100644 (file)
index 0000000..ba5b0cc
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+
+void BbdEngine_Open(struct BbdEngine *p);
+void BbdEngine_Close(struct BbdEngine *p);
+
+/**
+ * initialize packet-specific variables
+ *
+ * @pbbd_dev: bbd driver pointer
+ *
+ * @return: 0 = success, others = failure
+ */
+
+void bbd_packet_init_vars(struct bbd_device *dev, int* result)
+{
+        struct bbd_packet_device *p = NULL;
+
+        if (*result)
+                return;
+
+       p = bbd_alloc(sizeof(struct bbd_packet_device));
+        if (!p) {
+               *result = -ENOMEM;
+               return;
+        }
+
+        bbd_base_init_vars(dev, &p->base, result);
+        if (*result) {
+                bbd_free(p);
+                return;
+        }
+        dev->bbd_ptr[BBD_MINOR_PACKET] = p;
+        p->base.name = "packet";
+}
+
+struct bbd_packet_device* bbd_packet_ptr(void)
+{
+       if (!gpbbd_dev)
+               return NULL;
+       return gpbbd_dev->bbd_ptr[BBD_MINOR_PACKET];
+}
+
+struct bbd_base* bbd_packet_ptr_base(void)
+{
+        struct bbd_packet_device *p = bbd_packet_ptr();
+       if (!p)
+               return NULL;
+       return &p->base;
+}
+
+int bbd_packet_uninit(void)
+{
+        struct bbd_packet_device* p = bbd_packet_ptr();
+        int freed = 0;
+        if (p) {
+                freed = bbd_base_uninit(&p->base);
+                bbd_free(p);
+                gpbbd_dev->bbd_ptr[BBD_MINOR_PACKET] = NULL;
+        }
+        return freed;
+}
+
+/**
+ * open bbd driver
+ */
+int bbd_packet_open(struct inode *inode, struct file *filp)
+{
+       dprint("BBD:%s()\n", __func__);
+
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+        BbdEngine_Open(&gpbbd_dev->bbd_engine);
+
+       return 0;
+}
+
+/**
+ * close bbd driver
+ */
+int bbd_packet_release(struct inode *inode, struct file *filp)
+{
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       dprint("BBD:%s()\n", __func__);
+        BbdEngine_Close(&gpbbd_dev->bbd_engine);
+
+        return bbd_base_reinit(BBD_MINOR_PACKET);
+}
+
+/**
+ * read signal/data from bbd_list_head to user
+ */
+ssize_t bbd_packet_read(struct file *filp,
+                       char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+        return bbd_read(BBD_MINOR_PACKET, buf, size, true);
+}
+
+/*
+ * send a packet from user space to external driver
+ */
+ssize_t bbd_packet_write(struct file *filp,
+                       const char __user *rpcStream,
+                       size_t size, loff_t *ppos)
+{
+       ssize_t len = bbd_write(BBD_MINOR_PACKET, rpcStream, size, true);
+       if (len < 0)
+               return len;
+       BbdBridge_SendPacket(&bbd_engine()->bridge,
+               bbd_packet_ptr_base()->rxb.pbuff, len);
+       return len;
+}
+
+/**
+ * this function is for tx packet
+ */
+unsigned int bbd_packet_poll(struct file *filp, poll_table * wait)
+{
+    return bbd_poll(BBD_MINOR_PACKET, filp, wait);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_patch.c b/drivers/sensors/brcm/bbdpl1/bbd_patch.c
new file mode 100644 (file)
index 0000000..c2d9303
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+
+static unsigned char bbd_new_patch[] =
+{
+#if defined(CONFIG_SENSORHUB_TM2)
+#include "../platform/bbd_tm2_patch_file.h"
+#elif defined(CONFIG_SENSORHUB_S333)
+#include "../platform/bbd_s333_patch_file.h"
+#endif
+};
+
+void bbd_patch_init_vars(struct bbd_device *dev, int* result)
+{
+       printk(KERN_INFO "BBD:%s() %lu\n", __func__, sizeof(bbd_new_patch));
+       dev->bbd_ptr[BBD_MINOR_PATCH] = NULL;
+}
+
+int bbd_patch_uninit(void)
+{
+       return 0;
+}
+
+int bbd_patch_open(struct inode *inode, struct file *filp)
+{
+       printk(KERN_INFO "BBD:%s() %lu\n", __func__, sizeof(bbd_new_patch));
+
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+
+       return 0;
+}
+
+int bbd_patch_release(struct inode *inode, struct file *filp)
+{
+       return 0;
+}
+
+ssize_t bbd_patch_read( struct file *filp,
+               char __user *buf,
+               size_t size, loff_t *ppos)
+{
+       ssize_t rd_size = size;
+       size_t  offset = filp->f_pos;
+
+       if (offset >= sizeof(bbd_new_patch)) {       /* signal EOF */
+               *ppos = 0;
+               return 0;
+       }
+       if (offset+size > sizeof(bbd_new_patch))
+               rd_size = sizeof(bbd_new_patch) - offset;
+       if (copy_to_user(buf, bbd_new_patch + offset, rd_size))
+               rd_size = -EFAULT;
+       else
+               *ppos = filp->f_pos + rd_size;
+       return rd_size;
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_reliable.c b/drivers/sensors/brcm/bbdpl1/bbd_reliable.c
new file mode 100644 (file)
index 0000000..8fe3b6e
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+
+/**
+ * initialize reliable-specific variables
+ *
+ * @pbbd_dev: bbd driver pointer
+ *
+ * @return: 0 = success, others = failure
+ */
+
+void bbd_reliable_init_vars(struct bbd_device *dev, int* result)
+{
+        struct bbd_reliable_device *p = NULL;
+
+        if (*result)
+                return;
+
+       p = bbd_alloc(sizeof(struct bbd_reliable_device));
+        if (!p) {
+               *result = -ENOMEM;
+               return;
+        }
+
+        bbd_base_init_vars(dev, &p->base, result);
+        if (*result) {
+                bbd_free(p);
+                return;
+        }
+        dev->bbd_ptr[BBD_MINOR_RELIABLE] = p;
+        p->base.name = "reliable";
+}
+
+struct bbd_reliable_device* bbd_reliable_ptr(void)
+{
+       if (!gpbbd_dev)
+               return NULL;
+       return gpbbd_dev->bbd_ptr[BBD_MINOR_RELIABLE];
+}
+
+struct bbd_base* bbd_reliable_ptr_base(void)
+{
+        struct bbd_reliable_device *ps = bbd_reliable_ptr();
+       if (!ps)
+               return NULL;
+       return &ps->base;
+}
+
+int bbd_reliable_uninit(void)
+{
+        struct bbd_reliable_device* p = bbd_reliable_ptr();
+        int freed = 0;
+        if (p) {
+                freed = bbd_base_uninit(&p->base);
+                bbd_free(p);
+                gpbbd_dev->bbd_ptr[BBD_MINOR_RELIABLE] = NULL;
+        }
+        return freed;
+}
+
+int bbd_tty_open (void);
+int bbd_tty_close(void);
+
+/**
+ * open bbd driver
+ */
+int bbd_reliable_open(struct inode *inode, struct file *filp)
+{
+       dprint(KERN_INFO "BBD:%s()\n", __func__);
+
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+
+        if (gpbbd_dev->sio_type == BBD_SERIAL_TTY)
+                bbd_tty_open();
+
+       return 0;
+}
+
+/**
+ * close bbd driver
+ */
+int bbd_reliable_release(struct inode *inode, struct file *filp)
+{
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+        bbd_tty_close();
+
+        return bbd_base_reinit(BBD_MINOR_RELIABLE);
+}
+
+/**
+ * read signal/data from bbd_list_head to user
+ */
+ssize_t bbd_reliable_read(struct file *filp,
+                       char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+        return bbd_read(BBD_MINOR_RELIABLE, buf, size, true);
+}
+
+/**
+ * send data from user space to external driver
+ */
+ssize_t bbd_reliable_write(struct file *filp,
+                       const char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+       ssize_t len = -EINVAL;
+        if (size != sizeof(struct sBbdReliableTransaction))
+                return len;
+
+       len = bbd_write(BBD_MINOR_RELIABLE, buf, size, true);
+       if (len < 0)
+               return len;
+
+        /* Send reliable data to the BbdBridge --> PacketLayer
+         * --> uart --> ESW */
+       if (BbdBridge_SendReliablePacket(&bbd_engine()->bridge,
+            (struct sBbdReliableTransaction *) bbd_reliable_ptr_base()->rxb.pbuff))
+            return len;
+        return -EINVAL;
+}
+
+/*
+ *
+ */
+unsigned int bbd_reliable_poll(struct file *filp, poll_table * wait)
+{
+       return bbd_poll(BBD_MINOR_RELIABLE, filp, wait);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_sensor.c b/drivers/sensors/brcm/bbdpl1/bbd_sensor.c
new file mode 100644 (file)
index 0000000..4158133
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+
+struct bbd_control_device *bbd_control_ptr(void);
+
+struct bbd_sensor_device *bbd_sensor_ptr(void)
+{
+       if (!gpbbd_dev)
+               return NULL;
+       return (struct bbd_sensor_device *) gpbbd_dev->bbd_ptr[BBD_MINOR_SENSOR];
+}
+
+struct bbd_base *bbd_sensor_ptr_base(void)
+{
+        struct bbd_sensor_device *ps = bbd_sensor_ptr();
+       if (!ps)
+               return NULL;
+       return &ps->base;
+}
+
+/**
+ * initialize sensor-specific variables
+ *
+ * @pbbd_dev: bbd driver pointer
+ *
+ * @return: 0 = success, others = failure
+ */
+
+void bbd_sensor_init_vars(struct bbd_device *dev, int* result)
+{
+        struct bbd_sensor_device *p = NULL;
+
+        if (*result)
+                return;
+
+       p = bbd_alloc(sizeof(struct bbd_sensor_device));
+        if (!p) {
+               *result = -ENOMEM;
+               return;
+        }
+
+        bbd_base_init_vars(dev, &p->base, result);
+        if (*result) {
+                bbd_free(p);
+                return;
+        }
+        p->priv_data = NULL;
+        p->callbacks = NULL;
+        dev->bbd_ptr[BBD_MINOR_SENSOR] = p;
+        p->base.name = "sensor";
+}
+
+int bbd_sensor_uninit(void)
+{
+        struct bbd_sensor_device* p = bbd_sensor_ptr();
+        int freed = 0;
+        if (p) {
+                freed = bbd_base_uninit(&p->base);
+                bbd_free(p);
+                gpbbd_dev->bbd_ptr[BBD_MINOR_SENSOR] = NULL;
+        }
+        return freed;
+}
+
+/**
+ * external driver registers callback function for getting data from bbd driver
+ *
+ * @ssh_data: sensor hub driver data pointer
+ * @pcallbacks: callback function list
+ */
+void bbd_register(void *ssh_data, bbd_callbacks *pcallbacks)
+{
+        struct bbd_sensor_device *ps = bbd_sensor_ptr();
+       if (!ps)
+               return;
+       ps->priv_data = ssh_data;
+        ps->callbacks = pcallbacks;
+}
+EXPORT_SYMBOL(bbd_register);
+
+
+/**
+ * send packet from external (SHMD) driver to bbd driver
+ *
+ * @pbuff: buffer pointer
+ * @len:   buffer length
+ *
+ * @return: pushed data length = success
+ */
+
+ssize_t bbd_send_packet(unsigned char *pbuff, size_t size)
+{
+        if (gpbbd_dev->shmd)
+                return BbdEngine_SendSensorData(&gpbbd_dev->bbd_engine,
+                                                pbuff, size);
+        /* Stage 1 fallback: */
+       return bbd_on_read(BBD_MINOR_SENSOR, pbuff, size);
+}
+
+EXPORT_SYMBOL(bbd_send_packet);
+
+/**
+ * pull packet from rx_list buffer directly
+ *
+ * @pbuff: buffer pointer
+ * @len  : length of pulling data
+ * @timeout_ms: timeout for waiting data in rx_list buffer
+ *              if timeout_ms is 0, pull one packet from rx_list buffer directly
+ *
+ * @return: length of buffer, -ETIMEDOUT = timeout
+ */
+ssize_t bbd_pull_packet(unsigned char *pbuff,
+                       size_t         len,
+                       unsigned int   timeout_ms)
+{
+       struct bbd_buffer *prxb = NULL;
+       int pull_size = 0;
+       int timeout = 0;
+        struct bbd_base* p = bbd_sensor_ptr_base();
+
+       if (!p || pbuff == NULL)
+               return -EINVAL;
+
+       prxb = &p->rxb;
+
+       if (prxb->buff_size <= 0) {
+               dprint("error : prxb->buff_size = %d\n", prxb->buff_size);
+               return prxb->buff_size;
+       }
+
+       if (timeout_ms) {
+               timeout = wait_event_interruptible_timeout(
+                                               prxb->poll_inq,
+                                               (prxb->buff_size > 0),
+                                               msecs_to_jiffies(timeout_ms));
+               if (!timeout) {
+                       dprint("error : timeout for prx->poll_inq\n");
+                       prxb->buff_size = -ETIMEDOUT;
+                       return -ETIMEDOUT;
+               }
+       }
+
+       mutex_lock(&prxb->lock);
+       pull_size = MIN(prxb->buff_size, len);
+       memcpy(pbuff, prxb->pbuff, pull_size);
+       prxb->buff_size -= pull_size;
+
+       /* shift. TODO: circ buf */
+       {
+               unsigned char *top =  prxb->pbuff + pull_size;
+               memcpy(prxb->pbuff, top, prxb->buff_size);
+       }
+       mutex_unlock(&prxb->lock);
+
+       wake_up(&prxb->comp_inq);
+
+       return pull_size;
+}
+EXPORT_SYMBOL(bbd_pull_packet);
+
+/**
+ * open bbd driver
+ */
+int bbd_sensor_open(struct inode *inode, struct file *filp)
+{
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+
+       return 0;
+}
+
+/**
+ * close bbd driver
+ */
+int bbd_sensor_release(struct inode *inode, struct file *filp)
+{
+       if (gpbbd_dev)
+                return bbd_base_reinit(BBD_MINOR_SENSOR);
+        return -EFAULT;
+}
+
+/**
+ * read sensor data from bbd_list_head to user
+ * (This should be used only when shmd-->bridge is disabled
+ */
+ssize_t bbd_sensor_read(struct file *filp,
+                       char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+        return bbd_read(BBD_MINOR_SENSOR, buf, size, true);
+}
+
+static ssize_t bbd_sensor_write_handshake(struct bbd_sensor_device *ps,
+                                          struct bbd_buffer        *prxb)
+{
+       if (!ps->callbacks)
+            return 0;
+
+       /* If registred on_packet_alarm: Inform alarm to ssh driver.
+        * ssh driver can pull the received data from rx_list directly
+         */
+       if (ps->callbacks && ps->callbacks->on_packet_alarm) {
+               ps->callbacks->on_packet_alarm(ps->priv_data);
+               wake_up(&prxb->poll_inq);
+       }
+
+       return 0;
+}
+
+/**
+ * send data from user space to external driver
+ */
+ssize_t bbd_sensor_write(struct file        *filp,
+                       const char __user   *buf,
+                       size_t size, loff_t *ppos)
+{
+       int                       wr_size = MIN(BBD_MAX_DATA_SIZE, size);
+       struct bbd_buffer        *prxb    = NULL;
+        struct bbd_sensor_device* ps = bbd_sensor_ptr();
+        struct bbd_base*          p  = bbd_sensor_ptr_base();
+
+       if (!p || !ps)
+               return -EINVAL;
+
+       dprint("%s[%d]\n", __func__, (int) size);
+
+       prxb = &p->rxb;
+
+       mutex_lock(&prxb->lock);
+       if (copy_from_user(prxb->pbuff, buf, wr_size)) {
+               wr_size = -EFAULT;
+        }
+        else {
+               prxb->buff_size = wr_size;
+               bbd_sensor_write_handshake(ps, prxb);
+        }
+       mutex_unlock(&prxb->lock);
+       return wr_size;
+}
+
+
+/**
+ * send data from user space to external driver
+ */
+
+ssize_t bbd_sensor_write_internal(const char *sensorData, size_t size)
+{
+       int                       wr_size;
+       struct bbd_buffer        *prxb    = NULL;
+        struct bbd_sensor_device* ps = bbd_sensor_ptr();
+        struct bbd_base*          p  = bbd_sensor_ptr_base();
+
+       if (!p || !ps)
+               return -EINVAL;
+
+       dprint("%s[%d]\n", __func__, (int) size);
+
+       prxb = &p->rxb;
+
+       mutex_lock(&prxb->lock);
+
+       wr_size = MIN((BBD_MAX_DATA_SIZE - prxb->buff_size), size);
+        memcpy(prxb->pbuff + prxb->buff_size, sensorData, wr_size);
+        prxb->buff_size += wr_size;
+       prxb->count += wr_size;
+        bbd_sensor_write_handshake(ps, prxb);
+
+       mutex_unlock(&prxb->lock);
+
+       return wr_size;
+}
+
+/**
+ * this function is for tx packet
+ */
+unsigned int bbd_sensor_poll(struct file *filp, poll_table * wait)
+{
+        return bbd_poll(BBD_MINOR_SENSOR, filp, wait);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_sio.c b/drivers/sensors/brcm/bbdpl1/bbd_sio.c
new file mode 100644 (file)
index 0000000..ab86e92
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_internal.h"
+#include "transport/bbd_engine.h"
+#include "transport/bbd_bridge_c.h"
+
+/**
+ * initialize sio-specific variables
+ *
+ * @pbbd_dev: bbd driver pointer
+ *
+ * @return: 0 = success, others = failure
+ */
+
+void bbd_sio_init_vars(struct bbd_device *dev, int* result)
+{
+        struct bbd_sio_device *p = NULL;
+        if (*result)
+                return;
+
+       p = bbd_alloc(sizeof(struct bbd_sio_device));
+        if (!p) {
+               *result = -ENOMEM;
+               return;
+        }
+
+        bbd_base_init_vars(dev, &p->base, result);
+        if (*result) {
+                bbd_free(p);
+                return;
+        }
+        dev->bbd_ptr[BBD_MINOR_SIO] = p;
+        p->base.name = "sio";
+}
+
+struct bbd_sio_device* bbd_sio_ptr(void)
+{
+       if (!gpbbd_dev)
+               return NULL;
+       return gpbbd_dev->bbd_ptr[BBD_MINOR_SIO];
+}
+
+struct bbd_base* bbd_sio_ptr_base(void)
+{
+        struct bbd_sio_device *p = bbd_sio_ptr();
+       if (!p)
+               return NULL;
+       return &p->base;
+}
+
+int bbd_sio_uninit(void)
+{
+        struct bbd_sio_device* p = bbd_sio_ptr();
+        int freed = 0;
+        if (p) {
+                freed = bbd_base_uninit(&p->base);
+                bbd_free(p);
+                gpbbd_dev->bbd_ptr[BBD_MINOR_SIO] = NULL;
+        }
+        return freed;
+}
+
+/*      We are passed a pointer to the bridge
+ *      if we're active, zero otherwise
+ *      Could consider a pass-thru flag
+ *      from /dev/bbd_control for testing.
+ */
+void bbd_sio_install(struct BbdBridge* bbd)
+{
+    FUNC();
+}
+
+/**
+ * open bbd driver
+ */
+int bbd_sio_open(struct inode *inode, struct file *filp)
+{
+       dprint(KERN_INFO "BBD:%s()\n", __func__);
+
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+
+       return 0;
+}
+
+/**
+ * close bbd driver
+ */
+int bbd_sio_release(struct inode *inode, struct file *filp)
+{
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+        return bbd_base_reinit(BBD_MINOR_SIO);
+}
+
+/**
+ * read signal/data from bbd_list_head to user
+ */
+ssize_t bbd_sio_read(struct file *filp,
+                       char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+        return bbd_read(BBD_MINOR_SIO, buf, size, true);
+}
+
+/**
+ * send data from user space to external driver
+ */
+ssize_t bbd_sio_write(struct file *filp,
+                       const char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+       ssize_t len = bbd_write(BBD_MINOR_SIO, buf, size, true);
+       struct BbdEngine* pEng;
+       struct BbdBridge* bbd = NULL;
+       if (len != size)
+               return len;
+
+       pEng = bbd_engine();
+       if (pEng) {
+               bbd = &pEng->bridge;
+               BbdBridge_SetData(bbd, buf, size);
+       } else  {
+               len = -EINVAL;
+       }
+
+       return len;
+}
+
+/**
+ * this function is for tx sio
+ */
+unsigned int bbd_sio_poll(struct file *filp, poll_table * wait)
+{
+        return bbd_poll(BBD_MINOR_SIO, filp, wait);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_ssi_spi.c b/drivers/sensors/brcm/bbdpl1/bbd_ssi_spi.c
new file mode 100644 (file)
index 0000000..c579b5a
--- /dev/null
@@ -0,0 +1,388 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Interface from BBD to the SSI SPI:
+ * (Broadcom Bridge Driver to the Serial Streaming Interface -SPI)
+ * Placeholder until actual code is ready.
+ */
+
+#include "bbd_internal.h"
+#include "transport/bbd_engine.h"
+#include "transport/bbd_bridge_c.h"
+#include "bcm477x_debug.h"
+#include "bcm477x_ssi_spi.h"
+
+extern unsigned char* bcm477x_debug_buffer(size_t* len);
+extern int bcm477x_debug_write(const unsigned char* buf, size_t len, int flag);
+extern int bcm477x_debug_transfer(unsigned char *tx, unsigned char *rx, int len, int flag);
+
+extern int bbd_tty_send(unsigned char *buf, int count);
+extern int bbd_tty_open(void);
+extern int bbd_tty_close(void);
+
+int bbd_ssi_spi_open(void)
+{
+       return bbd_tty_open();
+}
+
+int bbd_ssi_spi_send(unsigned char *buf, int count)
+{
+       return bbd_tty_send(buf, count);
+}
+
+//-----------------------------------------------------------------------------
+//
+//      bbd_ssi_spi_debug
+//
+//  Use debug mode to push download data directly into 477x memory,
+//  bypassing all TL, RPCs, CRC, etc.
+//
+//-----------------------------------------------------------------------------
+
+struct bbd_ssi_spi_debug_device *bbd_ssi_spi_debug_ptr(void)
+{
+        if (!gpbbd_dev)
+                return NULL;
+        return (struct bbd_ssi_spi_debug_device *) gpbbd_dev->bbd_ptr[BBD_MINOR_SSI_SPI_DEBUG];
+}
+
+struct bbd_base *bbd_ssi_spi_debug_ptr_base(void)
+{
+        struct bbd_ssi_spi_debug_device *ps = bbd_ssi_spi_debug_ptr();
+        if (!ps)
+                return NULL;
+        return &ps->base;
+}
+
+int bbd_ssi_spi_debug_open(struct inode *inode, struct file *filp)
+{
+       printk(KERN_INFO "BBD:%s()\n", __func__);
+
+       if (!gpbbd_dev)
+               return -EFAULT;
+
+       filp->private_data = gpbbd_dev;
+
+       return 0;
+}
+
+int bbd_ssi_spi_debug_release(struct inode *inode, struct file *filp)
+{
+       return 0;
+}
+
+//-----------------------------------------------------------------------------
+//
+//      bbd_ssi_spi_debug_init_vars
+//
+//-----------------------------------------------------------------------------
+
+void bbd_ssi_spi_debug_init_vars(struct bbd_device* dev, int* result)
+{
+        struct bbd_ssi_spi_debug_device* p = NULL;
+
+        if (*result)
+                return;
+
+        p = bbd_alloc(sizeof(struct bbd_ssi_spi_debug_device));
+        if (!p) {
+                *result = -ENOMEM;
+                return;
+        }
+
+        bbd_base_init_vars(dev, &p->base, result);
+        if (*result) {
+                bbd_free(p);
+                return;
+        }
+        p->numXfers = 0;
+        p->numBytes = 0;
+        dev->bbd_ptr[BBD_MINOR_SSI_SPI_DEBUG] = p;
+        p->base.name = "ssi_spi_debug";
+}
+
+struct bbd_download_direct
+{
+        unsigned long  addr;
+        unsigned char* buf;         // CAUTION: user address
+        int            size;
+};
+
+static
+ssize_t bbd_ssi_spi_debug_data(const struct bbd_download_direct* d,
+                               unsigned char*                    spi_buf,
+                               size_t*                           payload_len);
+static
+ssize_t bbd_ssi_spi_debug_addr(const struct bbd_download_direct* d,
+                               unsigned char*                    spi_buf);
+
+
+//-----------------------------------------------------------------------------
+//
+//      bbd_ssi_spi_debug_read
+//
+//-----------------------------------------------------------------------------
+
+ssize_t bbd_ssi_spi_debug_read( struct file *filp,
+                       char __user *buf,
+                       size_t size, loff_t *ppos)
+{
+       int status = 1;
+       struct bbd_download_direct d;
+       unsigned char* p_rx_buf;
+       int            rx_len,tx_len;
+       unsigned char tx_dbg_read[256] = {0x80, 0xD1, 0x00};
+       unsigned char rx_dbg_read[256] = {0x00, 0x00, 0x00};
+       unsigned char tx_dbg_rfifo_depth[4] = {0xA0, 0xD1, (0x21<<1), 0x00};
+       unsigned char rx_dbg_rfifo_depth[4] = {0x00, 0x00, 0x00, 0x00};
+
+       dprint("%s(%u)\n", __func__, size);
+       if (size != sizeof(d))
+               return -EINVAL;
+
+       if (copy_from_user(&d, buf, size))
+               return -EFAULT;
+
+       p_rx_buf = &d.buf[0];
+       rx_len = d.size;
+       tx_len = 0;
+
+       tx_dbg_read[3] = (unsigned char)(d.addr & 0xff);
+       tx_dbg_read[4] = (unsigned char)((d.addr >> 8)  & 0xff);
+       tx_dbg_read[5] = (unsigned char)((d.addr >> 16) & 0xff);
+       tx_dbg_read[6] = (unsigned char)((d.addr >> 24)  & 0xff);
+
+       tx_dbg_read[7] = (unsigned char)(d.size & 0xff);
+       tx_dbg_read[8] = (unsigned char)((d.size >> 8) & 0xff);
+
+       tx_dbg_read[9] = 1;  /* Bit0: 0:disable/done, 1:enable */
+
+       bcm477x_debug_transfer(tx_dbg_read,rx_dbg_read,10,0);
+
+       while ( rx_len && status ) {
+               /* Read target RFIFO Depth to determine how much we can read from it */
+               bcm477x_debug_transfer(tx_dbg_rfifo_depth,rx_dbg_rfifo_depth,4,0);
+
+               status = (int)rx_dbg_rfifo_depth[2];
+               if ( status ) {
+                       memset(tx_dbg_read, 0x00, sizeof(tx_dbg_read));
+                       memset(rx_dbg_read, 0x00, sizeof(rx_dbg_read));
+
+                       /* FIXME: 0xA0, 0xD1 ? probably 0xA0, 0xD0 brcause it's read operation */
+                       tx_dbg_read[0] = 0xA0;
+                       tx_dbg_read[1] = 0xD1;
+                       tx_dbg_read[3] = (0x22 << 1);  /* RFIFO Read Data */
+
+                       bcm477x_debug_transfer(tx_dbg_read,rx_dbg_read,status + 3,0);
+
+                       if ( rx_len < status ) status = rx_len;  /* To be safe only */
+                       if (copy_to_user(buf + tx_len, (void *)rx_dbg_read + 2, status)) {
+                               return -EFAULT;
+                       }
+
+                       rx_len -= status;
+                       tx_len += status;
+               }
+       }
+
+       return d.size - rx_len;
+}
+
+//-----------------------------------------------------------------------------
+//
+//      bbd_ssi_spi_debug_write
+//
+//-----------------------------------------------------------------------------
+
+ssize_t bbd_ssi_spi_debug_write(struct file         *filp,
+                                const char __user   *buf,
+                                size_t size, loff_t *ppos)
+{
+       struct bbd_download_direct d;
+
+       dprint("%s(%u)\n", __func__, size);
+       if (size != sizeof(d))
+               return -EINVAL;
+
+       if (copy_from_user(&d, buf, size))
+               return -EFAULT;
+
+       do
+       {
+               ssize_t        spi_buf_len = -__LINE__;
+               unsigned char* spi_buf     = bcm477x_debug_buffer(&spi_buf_len);
+               size_t         payload_len = 0;
+               int            written     = 0;
+
+               if (!spi_buf || spi_buf_len < sizeof(d))
+                       return -EINVAL;
+
+               d.size += 16 - ((d.size + 3) % 16);
+
+               /* Send the addr+len+DMA start command: */
+               spi_buf_len = bbd_ssi_spi_debug_addr(&d, spi_buf);
+               dprint("%s(%d)/%d\n", __func__, spi_buf_len,__LINE__);
+               if (spi_buf_len < 1)
+                       return spi_buf_len;
+
+               written = bcm477x_debug_write(spi_buf, spi_buf_len, 0);
+               dprint("%s(%d)/%d %d\n", __func__, spi_buf_len,__LINE__, written);
+               if (written != spi_buf_len)
+                       return -EINVAL;
+
+               /* Send the DATA: */
+               spi_buf_len = bbd_ssi_spi_debug_data(&d, spi_buf, &payload_len);
+               dprint("%s(%d)/%d\n", __func__, spi_buf_len,__LINE__);
+               if (spi_buf_len < 0)
+                       return spi_buf_len;
+
+               written = bcm477x_debug_write(spi_buf, spi_buf_len, 0);
+               dprint("%s(%d)/%d %d\n", __func__, spi_buf_len,__LINE__, written);
+               if (written != spi_buf_len)
+                       return -EINVAL;
+
+               d.size -= payload_len;
+               d.addr += payload_len;
+               d.buf  += payload_len;
+       } while (d.size > 0);
+
+       return size;
+}
+
+//-----------------------------------------------------------------------------
+//
+//      bbd_ssi_spi_debug_addr
+//      bbd_ssi_spi_debug_data
+//
+//      Fill the buffer with SSI-debug data.
+//      Do two transfers inside one transaction:
+//      a)  DebugMode(addr+len)
+//      b)  DebugMode(data)
+//
+//-----------------------------------------------------------------------------
+
+/* True overhead for SSI:  (no b_data[1]) */
+#define SSI_DEBUG_OVERHEAD    4
+
+#define MAX_TX_DEBUG_BUF_SIZE (MAX_TX_RX_BUF_SIZE - SSI_DEBUG_OVERHEAD)
+
+#define SSI_SPI_SLAVE_ADDR     0x68     /* From Romi's spec. */
+#define SSI_SPI_SLAVE_WR       0x01
+#define SSI_SPI_SLAVE_RD       0x00
+
+#define SSI_SPI_SLAVE          ((SSI_SPI_SLAVE_ADDR << 1) | SSI_SPI_SLAVE_WR)
+
+#define SSI_SPI_DMA_START_ADDR 0x00
+#define SSI_I2C_DMA_DATA_ADDR  0x12             /* From Romi's I2C DEBUG spec. */
+#define SSI_SPI_DMA_DATA_ADDR (SSI_I2C_DMA_DATA_ADDR << 1)
+
+#define DMA_CONTROL_ENABLE     0x1
+#define DMA_CONTROL_WRITE      0x2
+#define DMA_CONTROL            (DMA_CONTROL_ENABLE | DMA_CONTROL_WRITE)
+
+static ssize_t bbd_ssi_spi_debug_addr(const struct bbd_download_direct* d,
+                               unsigned char*                    spi_buf)
+{
+    struct Bcm477x_Debug_Xfer*       x = (struct Bcm477x_Debug_Xfer*) spi_buf;
+    struct bbd_ssi_spi_debug_device* p = bbd_ssi_spi_debug_ptr();
+
+    union long_union
+    {
+        unsigned char uc[sizeof(unsigned long)];
+        unsigned long ul;
+    } swap_addr;
+
+    union short_union
+    {
+        unsigned char  uc[sizeof(unsigned short)];
+        unsigned short us;
+    } swap_len;
+
+    int len = d->size;
+    if (len > MAX_TX_DEBUG_BUF_SIZE)
+        len = MAX_TX_DEBUG_BUF_SIZE;
+
+    x->a_mode     = (SSI_MODE_DEBUG | SSI_MODE_HALF_DUPLEX | SSI_WRITE_TRANS);
+    x->a_cmd      = SSI_SPI_SLAVE;
+    x->a_spi_addr = SSI_SPI_DMA_START_ADDR;
+
+    swap_addr.ul = d->addr;
+    x->a_addr[0] = swap_addr.uc[0];
+    x->a_addr[1] = swap_addr.uc[1];
+    x->a_addr[2] = swap_addr.uc[2];
+    x->a_addr[3] = swap_addr.uc[3];
+
+    swap_len.us = len;
+    x->a_len[0] = swap_len.uc[0];
+    x->a_len[1] = swap_len.uc[1];
+    x->a_dma    = DMA_CONTROL;
+
+    len = 10;
+    if (p) {
+           memcpy(&p->trace, x, len);
+           ++p->numXfers;
+    }
+
+    if (bbd_debug()) {
+           const unsigned char* p = spi_buf;
+           printk("bbd_ssi_spi_debug_addr(0x%lx, 0x%lx[%u] = \n",
+                           (unsigned long)d->addr,  (unsigned long)d->buf,  d->size);
+           printk("  a { %02X %02X %02X   %02X.%02X.%02X.%02X  %02X.%02X  %02X }\n",
+                           p[0],p[1],p[2],  p[3],p[4],p[5],p[6], p[7],p[8], p[9]     );
+           // Expect:    80,  D1,  00,    address(byte-swap)   len(swap), 03
+    }
+    return len;
+}
+
+static ssize_t bbd_ssi_spi_debug_data(const struct bbd_download_direct* d,
+                               unsigned char*                    spi_buf,
+                               size_t*                           payload_len)
+{
+    struct Bcm477x_Debug_Xfer*       x = (struct Bcm477x_Debug_Xfer*) spi_buf;
+    struct bbd_ssi_spi_debug_device* p = bbd_ssi_spi_debug_ptr();
+
+    int len = d->size;
+    if (len > MAX_TX_DEBUG_BUF_SIZE)
+        len = MAX_TX_DEBUG_BUF_SIZE;
+
+    if (!payload_len)
+        return -EINVAL;
+
+    x->a_mode     = (SSI_MODE_DEBUG | SSI_MODE_HALF_DUPLEX | SSI_WRITE_TRANS);
+    x->a_cmd      = SSI_SPI_SLAVE;
+    x->a_spi_addr = SSI_SPI_DMA_DATA_ADDR;
+
+    if (copy_from_user(x->a_addr, d->buf, len))
+        return -EFAULT;
+
+    if (p)
+    {
+        memcpy(&p->trace.b_mode, x, 4);
+        p->numBytes += len;
+    }
+
+    if (bbd_debug())
+    {
+           const unsigned char* p = spi_buf;
+           printk("bbd_ssi_spi_debug_data(0x%lx, 0x%lx[%u] = \n",
+                           (unsigned long)d->addr,  (unsigned long)d->buf,  d->size);
+           printk("  b { %02X %02X %02X   %02X,%02X,%02X,%02X... }[%u]\n",
+                           p[0],p[1],p[2],  p[3],p[4],p[5],p[6], len);
+    }
+    *payload_len = len;
+    return len + 3;
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_sysfs.c b/drivers/sensors/brcm/bbdpl1/bbd_sysfs.c
new file mode 100644 (file)
index 0000000..15ceab6
--- /dev/null
@@ -0,0 +1,324 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/device.h>
+#include <linux/platform_device.h>
+#include <linux/init.h>
+#include <linux/list.h>
+
+#include <linux/kernel.h>      /* printk()             */
+#include <linux/slab.h>                /* kmalloc()            */
+#include <linux/fs.h>          /* everything           */
+#include <linux/errno.h>       /* error codes          */
+#include <linux/types.h>       /* size_t               */
+#include <linux/proc_fs.h>
+#include <linux/fcntl.h>       /* O_ACCMODE            */
+#include <linux/sysfs.h>
+#include <linux/cdev.h>
+#include <linux/workqueue.h>
+#include <linux/semaphore.h>
+
+#include <linux/uaccess.h>
+#include <linux/sched.h>
+#include <linux/poll.h>
+
+#include "bbd_internal.h"
+#include "transport/transport_layer_c.h"
+
+struct  bbd_control_device* bbd_control_ptr    (void);
+struct  bbd_base*           bbd_sensor_ptr_base(void);
+struct  bbd_sensor_device*  bbd_sensor_ptr     (void);
+ssize_t bbd_ESW_control     (char *buf, ssize_t len);
+struct  bbd_ssi_spi_debug_device*  bbd_ssi_spi_debug_ptr(void);
+
+/*****************************************************************************
+*
+* sysfs for bbd
+* sysfs directory : /sys/devices/platform/bbd/
+* files : BBD = send control to lhd
+*         ESW = send control to ssp
+*         bbd_info = display information of bbd driver
+*
+******************************************************************************/
+
+static ssize_t store_sysfs_BBD_control(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t len)
+{
+        bbd_on_read(BBD_MINOR_CONTROL, buf, len);
+       return len;
+}
+
+static ssize_t store_sysfs_ESW_control(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t len)
+{
+        struct bbd_sensor_device* ps = bbd_sensor_ptr();
+       /* struct bbd_device *gpbbd_dev = dev_get_drvdata(dev); */
+
+       if (!ps || !ps->callbacks) {
+               printk(KERN_ERR "%s():callbacks not registered.\n", __func__);
+               return -EFAULT;
+       }
+
+        {
+                char str_ctrl[BBD_ESW_CTRL_MAX_STR_LEN];
+                sscanf(buf, "%s", str_ctrl);
+                bbd_ESW_control(str_ctrl, strlen(buf) + 1);
+        }
+       return len;
+}
+
+/*      Same as ESW, except callbacks can be missing.
+ */
+
+static ssize_t store_sysfs_DEV_control(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t len)
+{
+        struct bbd_sensor_device* ps = bbd_sensor_ptr();
+       if (ps) {
+                char str_ctrl[BBD_ESW_CTRL_MAX_STR_LEN];
+                sscanf(buf, "%s", str_ctrl);
+                bbd_ESW_control(str_ctrl, strlen(buf) + 1);
+        }
+        else
+               len = -EFAULT;
+       return len;
+}
+
+static ssize_t show_sysfs_bbd_shmd(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+        struct bbd_base* p  = bbd_sensor_ptr_base();
+       struct bbd_queue  *ptxq = NULL;
+       struct bbd_buffer *prxb = NULL;
+       int len = 0;
+
+       if (!p)
+               return -EFAULT;
+
+       ptxq = &p->txq;
+       prxb = &p->rxb;
+
+       len = sprintf(buf, "Tx:total=%dB,tout=%d, Rx:total=%dB, tout=%d\n",
+                               ptxq->count, ptxq->tout_cnt,
+                               prxb->count, prxb->tout_cnt);
+       return len;
+}
+
+static ssize_t show_sysfs_bbd_debug(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       if (!gpbbd_dev)
+               return 0;
+       return sprintf(buf, "%d", gpbbd_dev->db);
+}
+
+static ssize_t store_sysfs_bbd_debug(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t len)
+{
+       int debug = 0;
+       if (!gpbbd_dev)
+               return 0;
+       sscanf(buf, "%d", &debug);
+       gpbbd_dev->db = debug;
+       return len;
+}
+
+static ssize_t show_sysfs_bbd_baud(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       if (!gpbbd_dev)
+               return 0;
+       return sprintf(buf, "%d", gpbbd_dev->tty_baud);
+}
+
+static ssize_t store_sysfs_bbd_baud(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t len)
+{
+        int tty_baud = 0;
+       if (!gpbbd_dev)
+               return 0;
+        sscanf(buf, "%d", &tty_baud);
+       gpbbd_dev->tty_baud = tty_baud;
+       return len;
+}
+
+static ssize_t show_sysfs_bbd_passthru(struct device *dev,
+                               struct device_attribute *attr, char *buf)
+{
+       if (!gpbbd_dev)
+               return 0;
+       return sprintf(buf, "%d",
+                gpbbd_dev->bbd_engine.bridge.m_otTL.m_bPassThrough);
+}
+
+static ssize_t show_sysfs_bbd_pl(struct device *dev,
+                                struct device_attribute *attr,
+                                 char   *buf)
+{
+        const struct stTransportLayerStats *p = NULL;
+       if (!gpbbd_dev)
+               return 0;
+        p = TransportLayer_GetStats(&gpbbd_dev->bbd_engine.bridge.m_otTL);
+        if (!p)
+               return 0;
+
+       return sprintf(buf,
+                    "RxGarbageBytes=%lu\n"
+                    "RxPacketLost=%lu\n"
+                    "RemotePacketLost=%lu\n"
+                    "RemoteGarbage=%lu\n"
+                    "PacketSent=%lu\n"
+                    "PacketReceived=%lu\n"
+                    "AckReceived=%lu\n"
+                    "ReliablePacketSent=%lu\n"
+                    "ReliableRetransmit=%lu\n"
+                    "ReliablePacketReceived=%lu\n"
+                    "MaxRetransmitCount=%lu\n",
+            p->ulRxGarbageBytes,
+            p->ulRxPacketLost,
+            p->ulRemotePacketLost, /* approximate */
+            p->ulRemoteGarbage, /* approximate */
+            p->ulPacketSent,         /* number of normal packets sent */
+            p->ulPacketReceived,
+            p->ulAckReceived,
+            p->ulReliablePacketSent,
+            p->ulReliableRetransmit,
+            p->ulReliablePacketReceived,
+            p->ulMaxRetransmitCount);
+}
+
+/*      Show the number of buffers
+ */
+
+int bbd_count(int minor);
+int bbd_alloc_count(void);
+
+static ssize_t show_sysfs_bbd_buf(struct device *dev,
+                                struct device_attribute *attr,
+                                 char   *buf)
+{
+       if (!gpbbd_dev)
+               return 0;
+       return sprintf(buf,
+                    "sensor=%d\n"
+                    "control=%d\n"
+                    "packet=%d\n"
+                    "reliable=%d\n"
+                    "freed=%d\n"
+                    "nAlloc=%d\n",
+            bbd_count(BBD_MINOR_SENSOR),
+            bbd_count(BBD_MINOR_CONTROL),
+            bbd_count(BBD_MINOR_PACKET),
+            bbd_count(BBD_MINOR_RELIABLE),
+            gpbbd_dev->qcount,
+           bbd_alloc_count());
+}
+
+static ssize_t show_sysfs_bbd_ssi_xfer(struct device *dev,
+                                struct device_attribute *attr,
+                                 char   *buf)
+{
+        struct  bbd_ssi_spi_debug_device* p = bbd_ssi_spi_debug_ptr();
+       if (!gpbbd_dev || !p)
+               return 0;
+       return sprintf(buf, "%lu\n", p->numXfers);
+}
+
+static ssize_t show_sysfs_bbd_ssi_count(struct device *dev,
+                                struct device_attribute *attr,
+                                 char   *buf)
+{
+        struct  bbd_ssi_spi_debug_device* p = bbd_ssi_spi_debug_ptr();
+       if (!gpbbd_dev || !p)
+               return 0;
+       return sprintf(buf, "%lu\n", p->numBytes);
+}
+
+static ssize_t show_sysfs_bbd_ssi_trace(struct device *dev,
+                                       struct device_attribute *attr,
+                                        char   *buf)
+{
+        struct bbd_ssi_spi_debug_device* d = bbd_ssi_spi_debug_ptr();
+        const unsigned char* p = NULL;
+       if (!gpbbd_dev || !d || !d->numXfers)
+               return 0;
+        p = (const unsigned char*) &d->trace;
+        return sprintf(buf,
+                "a { %02X %02X %02X   %02X.%02X.%02X.%02X  %02X.%02X  %02X }\n"
+                "b { %02X %02X %02X   %02X... }\n",
+                  p[ 0],p[ 1],p[ 2],  p[ 3],p[4],p[5],p[6], p[7],p[8], p[9],
+                  p[10],p[11],p[12],  p[13]);
+}
+
+static DEVICE_ATTR(BBD,     0640, NULL,                store_sysfs_BBD_control);
+static DEVICE_ATTR(ESW,     0640, NULL,                store_sysfs_ESW_control);
+static DEVICE_ATTR(DEV,     0640, NULL,                store_sysfs_DEV_control);
+static DEVICE_ATTR(debug,   0640, show_sysfs_bbd_debug,store_sysfs_bbd_debug);
+static DEVICE_ATTR(baud,    0640, show_sysfs_bbd_baud, store_sysfs_bbd_baud);
+static DEVICE_ATTR(shmd,    0640, show_sysfs_bbd_shmd,     NULL);
+static DEVICE_ATTR(pl,      0640, show_sysfs_bbd_pl,       NULL);
+static DEVICE_ATTR(buf,     0640, show_sysfs_bbd_buf,      NULL);
+static DEVICE_ATTR(passthru,0640, show_sysfs_bbd_passthru, NULL);
+static DEVICE_ATTR(ssi_xfer,    0640, show_sysfs_bbd_ssi_xfer,  NULL);
+static DEVICE_ATTR(ssi_count,   0640, show_sysfs_bbd_ssi_count, NULL);
+static DEVICE_ATTR(ssi_trace,   0640, show_sysfs_bbd_ssi_trace, NULL);
+
+static struct attribute *bbd_esw_attributes[] = {
+       &dev_attr_BBD.attr,
+       &dev_attr_ESW.attr,
+       &dev_attr_DEV.attr,
+       &dev_attr_shmd.attr,
+       &dev_attr_debug.attr,
+       &dev_attr_baud.attr,
+       &dev_attr_pl.attr,
+       &dev_attr_buf.attr,
+       &dev_attr_passthru.attr,
+       &dev_attr_ssi_xfer.attr,
+       &dev_attr_ssi_count.attr,
+       &dev_attr_ssi_trace.attr,
+       NULL
+};
+
+static const struct attribute_group bbd_esw_group = {
+       .attrs = bbd_esw_attributes,
+};
+
+int bbd_sysfs_init(struct kobject *kobj)
+{
+       int ret = sysfs_create_group(kobj, &bbd_esw_group);
+       if (ret < 0) {
+               printk(KERN_ERR "%s():couldn't register current attribute\n",
+                                               __func__);
+       }
+        return ret;
+}
+
+void bbd_sysfs_uninit(struct kobject *kobj)
+{
+       sysfs_remove_group(kobj, &bbd_esw_group);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bbd_tty.c b/drivers/sensors/brcm/bbdpl1/bbd_tty.c
new file mode 100644 (file)
index 0000000..7f252fa
--- /dev/null
@@ -0,0 +1,463 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD TTY (Broadcom Bridge TTY Driver)
+ */
+
+#include <linux/workqueue.h>
+#include <linux/uaccess.h>
+#include <linux/tty.h>
+#include <linux/serial.h>
+#include <linux/errno.h>
+#include <linux/poll.h>
+#include <linux/sched.h>
+#include <linux/delay.h>
+#include "bbd_internal.h"
+#include "transport/bbd_engine.h"
+#include "transport/bbd_bridge_c.h"
+
+void BbdEngine_Open(struct BbdEngine *p);
+void BbdEngine_Close(struct BbdEngine *p);
+
+/*------------------------------------------------------------------------------
+ *
+ *      internal static data
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static struct file        *tty;
+static bool                sent_autobaud;
+static atomic_t                bbd_tty_run;
+
+/*------------------------------------------------------------------------------
+ *
+ *      Customization
+ *
+ * 1)  Autobaud sequence
+ * 2)  portname, speed, etc.
+ * 3)  Stop condition
+ *
+ *------------------------------------------------------------------------------
+ */
+#define GN3
+#define OPT_WORK_QUEUE
+#define BBD_USE_AUTOBAUD_not
+
+#ifdef OPT_WORK_QUEUE
+static struct workqueue_struct *workq;
+#endif
+static struct work_struct       bbd_tty_read_work;
+
+
+#ifdef GN3      /* { */
+
+#define PORT_NAME "/dev/ttyBCM0";
+
+static bool bbd_tty_ioctl(struct file *f, int config, unsigned long param,
+                        const char* msg)
+{
+        return (tty_ioctl(f, config, param) >= 0);
+}
+
+#else           /* } else not GN3 { */
+
+#define PORT_NAME "/dev/ttyO1";
+
+static bool bbd_tty_ioctl(struct file *f, int config, unsigned long param,
+                        const char* msg)
+{
+        int result = f->f_op->unlocked_ioctl(f, config, param);
+        dprint("%s(%p,%d,0x%lx) %s = %d\n",
+                __func__, f, config, param, msg, result);
+        return result >= 0;
+}
+
+#endif          /* } // GN3 */
+
+
+/* configure port to use a custom speed.
+ *      Set the custom divisor using ioctl(TIOSSERIAL)
+ *      Set the speed to 38400 to use the custom speed.
+ */
+
+static bool bbd_tty_setcustomspeed(struct file *f, int speed)
+{
+    bool result = true;
+
+    struct serial_struct ss;
+    int closestSpeed = 0;
+    if (!bbd_tty_ioctl(f, TIOCGSERIAL, (unsigned long) &ss, "TIOCGSERIAL"))
+        result = false;
+
+    ss.flags = (ss.flags & ~ASYNC_SPD_MASK) | ASYNC_SPD_CUST;
+    ss.custom_divisor = (ss.baud_base + (speed / 2)) / speed;
+    closestSpeed = ss.baud_base / ss.custom_divisor;
+
+    if (    closestSpeed < speed *  98 / 100
+         || closestSpeed > speed * 102 / 100) {
+            dprint("BBDTTY: Cannot set serial port speed to %d. "
+                                       "Closest possible is %d\n",
+                            speed, closestSpeed);
+    }
+    return bbd_tty_ioctl(f, TIOCSSERIAL, (unsigned long) &ss, "TIOCSSERIAL");
+}
+
+
+
+
+
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_setspeed
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static bool bbd_tty_setspeed(struct file *f, int speed)
+{
+       mm_segment_t oldfs;
+        bool result = true;
+
+       oldfs = get_fs();
+       set_fs(KERNEL_DS);
+       {
+               /*  Set speed */
+               struct termios settings;
+
+               if (!bbd_tty_ioctl(f, TCGETS, (unsigned long)&settings,
+                                        "TCGETS"))
+                    result = false;
+               settings.c_iflag = 0;
+               settings.c_oflag = 0;
+               settings.c_lflag = 0;
+               settings.c_cflag = CRTSCTS | CLOCAL | CS8 | CREAD;
+               settings.c_cc[VMIN ] = 0;
+               settings.c_cc[VTIME] = 1;       /* 100ms timeout */
+               switch (speed) {
+               case 2400:
+                       settings.c_cflag |= B2400;
+                       break;
+               case 4800:
+                       settings.c_cflag |= B4800;
+                       break;
+               case 9600:
+                       settings.c_cflag |= B9600;
+                       break;
+               case 19200:
+                       settings.c_cflag |= B19200;
+                       break;
+               case 38400:
+                       settings.c_cflag |= B38400;
+                       break;
+               case 57600:
+                       settings.c_cflag |= B57600;
+                       break;
+               case 115200:
+                       settings.c_cflag |= B115200;
+                       break;
+               case 921600:
+                       settings.c_cflag |= B921600;
+                       break;
+               case 1000000:
+                       settings.c_cflag |= B1000000;
+                       break;
+               case 1152000:
+                       settings.c_cflag |= B1152000;
+                       break;
+               case 1500000:
+                       settings.c_cflag |= B1500000;
+                       break;
+               case 2000000:
+                       settings.c_cflag |= B2000000;
+                       break;
+               case 2500000:
+                       settings.c_cflag |= B2500000;
+                       break;
+               case 3000000:
+                       settings.c_cflag |= B3000000;
+                       break;
+               case 3500000:
+                       settings.c_cflag |= B3500000;
+                       break;
+               case 4000000:
+                       settings.c_cflag |= B4000000;
+                       break;
+               default:
+                        bbd_tty_setcustomspeed(f, speed);
+                        settings.c_cflag |= B38400;
+                       break;
+               }
+               if (!bbd_tty_ioctl(f, TCSETS, (unsigned long)&settings,
+                                        "TCSETS"))
+                    result = false;
+       }
+       {
+               /*  Set low latency */
+               struct serial_struct settings;
+
+               if (!bbd_tty_ioctl(f, TIOCGSERIAL, (unsigned long)&settings,
+                                "TIOCGSERIAL"))
+                    result = false;
+               settings.flags |= ASYNC_LOW_LATENCY;
+               if (!bbd_tty_ioctl(f, TIOCSSERIAL, (unsigned long)&settings,
+                                "TIOCSSERIAL"))
+                    result = false;
+       }
+
+       set_fs(oldfs);
+        return result;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_close
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static inline struct tty_struct *file_tty(struct file *file)
+{
+       return ((struct tty_file_private *)file->private_data)->tty;
+}
+
+int bbd_tty_close(void)
+{
+       if (!atomic_read(&bbd_tty_run)) {
+               dprint("BBDTTY: already closed\n");
+               return 0;
+       }
+
+       /* This is needed for JTAG download (without LHD) */
+        BbdEngine_Close(&gpbbd_dev->bbd_engine);
+
+        sent_autobaud = false;
+       atomic_set(&bbd_tty_run, 0);
+
+       dprint("BBDTTY: %s TTY %p  ERR %ld\n", __func__, tty, IS_ERR(tty));
+
+#ifdef OPT_WORK_QUEUE
+       if (workq) {
+               struct tty_struct *tty_st = file_tty(tty);
+               set_bit(TTY_OTHER_CLOSED, &tty_st->flags);
+               wake_up_interruptible(&tty_st->read_wait);
+               wake_up_interruptible(&tty_st->write_wait);
+
+               cancel_work_sync(&bbd_tty_read_work);
+       }
+#endif
+       if ((tty != 0) && !IS_ERR(tty)) {
+               filp_close(tty, 0);             /* REVIEW: should cause read() to exit */
+                tty = 0;
+        }
+
+#ifdef OPT_WORK_QUEUE
+       if (workq) {
+                dprint("BBDTTY: %s()/%d\n", __func__, __LINE__);
+               destroy_workqueue(workq);
+               workq = 0;
+       }
+#endif
+       return 0;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_read
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static int bbd_tty_read(struct file *f, int maxRead, unsigned char *ch)
+{
+       int result = -1;
+
+       if (!IS_ERR(f)) {
+               mm_segment_t oldfs = get_fs();
+               set_fs(KERNEL_DS);
+
+               f->f_pos = 0;
+               result = f->f_op->read(f, ch, maxRead, &f->f_pos);
+               set_fs(oldfs);
+       }
+
+       return result;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_write
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static int bbd_tty_write(struct file *f, unsigned char *buf, int count)
+{
+       int result = -1;
+       mm_segment_t oldfs;
+        bbd_log_hex(__func__, buf, count);
+       oldfs = get_fs();
+       set_fs(KERNEL_DS);
+       f->f_pos = 0;
+       result = f->f_op->write(f, buf, count, &f->f_pos);
+       set_fs(oldfs);
+
+       return result;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_read_func
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static void bbd_tty_read_func(struct work_struct *work)
+{
+       struct BbdEngine *pEng = 0;
+
+       while (atomic_read(&bbd_tty_run) && tty) {
+                char buf[256];
+                int  nRead = bbd_tty_read(tty, sizeof(buf), buf);
+               if (nRead <= 0)
+                       continue;
+               pEng = bbd_engine();
+
+                bbd_log_hex(__func__, buf, nRead);
+               if (pEng && atomic_read(&bbd_tty_run))
+                       BbdBridge_SetData(&pEng->bridge, buf, nRead);
+               else
+                       dprint("BBDTTY: bbdengine %p run %d, rx ignored\n",
+                                pEng, atomic_read(&bbd_tty_run));
+       }
+       dprint("BBDTTY: exit\n");
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_open
+ *
+ *------------------------------------------------------------------------------
+ */
+
+int bbd_tty_open(void)
+{
+       int   result   = 0;
+       char *portname = PORT_NAME;
+
+       if (atomic_read(&bbd_tty_run)) {
+               dprint("BBDTTY: already opened\n");
+               return 0;
+       }
+
+       dprint("BBDTTY: open(%s)\n", portname);
+
+       tty = filp_open(portname, O_RDWR, 0);
+       if (IS_ERR(tty)) {
+               result = (int)PTR_ERR(tty);
+               dprint("serial_2002: open(%s) error = %d\n", 
+                       portname, result);
+       }
+       else {
+               bool ok = false;
+               dprint("BBDTTY: open(%s) OK\n", portname);
+               ok = bbd_tty_setspeed(tty, gpbbd_dev->tty_baud);
+               dprint("BBDTTY: setspeed(%d) %s\n", gpbbd_dev->tty_baud,
+                               ok ? "OK" : "FAIL");
+                atomic_set(&bbd_tty_run, 1);
+#ifdef OPT_WORK_QUEUE
+               {
+                    int q = 0;
+                    workq = create_singlethread_workqueue("BbdTty");
+                   INIT_WORK(&bbd_tty_read_work, bbd_tty_read_func);
+                    q = queue_work(workq, &bbd_tty_read_work);
+                    dprint("BBDTTY: BbdTty worker %s\n",
+                            (q) ? "Already running" : "OK");
+               }
+#else
+               {
+                       INIT_WORK(&bbd_tty_read_work, bbd_tty_read_func);
+                       schedule_work(&bbd_tty_read_work);
+                       dprint("BBDTTY: worker OK\n");
+               }
+#endif
+               /* Needed for JTAG download of ESW without LH daemon */
+               BbdEngine_Open(&gpbbd_dev->bbd_engine);
+       }
+       return result;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_autobaud
+ *
+ *------------------------------------------------------------------------------
+ */
+
+int bbd_tty_autobaud(void)
+{
+        int res = -1;
+
+       if (!tty || IS_ERR(tty))
+               return res;
+
+       if (!atomic_read(&bbd_tty_run))
+               return res;
+
+#ifdef BBD_USE_AUTOBAUD
+        res = bbd_tty_write(tty, autobaud, sizeof(autobaud));
+        sent_autobaud = (res == sizeof(autobaud));
+        dprint("BBDTTY: autobaud %d res %d\n", sent_autobaud, res);
+#else
+        res = 0;
+#endif
+        return res;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      bbd_tty_send
+ *
+ *------------------------------------------------------------------------------
+ */
+
+int bbd_tty_send(unsigned char *buf, int count)
+{
+        int res = -1;
+
+       if (!tty || IS_ERR(tty))
+               return res;
+
+       if (!atomic_read(&bbd_tty_run))
+               return res;
+
+#ifdef BBD_USE_AUTOBAUD
+        if (!sent_autobaud) {
+                res = bbd_tty_autobaud();
+        }
+#endif
+
+        res = bbd_tty_write(tty, buf, count);
+        return res;
+}
+
+void __init bbd_tty_init(void)
+{
+       atomic_set(&bbd_tty_run, 0);
+}
diff --git a/drivers/sensors/brcm/bbdpl1/bcm477x_debug.h b/drivers/sensors/brcm/bbdpl1/bcm477x_debug.h
new file mode 100644 (file)
index 0000000..09c3cab
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef _BCM477x_DEBUG_
+#define _BCM477x_DEBUG_
+
+#define MAX_BCM477X_DEBUG_BUFFER_SIZE (64*1024)
+
+struct bcm477x_debug
+{
+    bool is_opened;
+
+       bool buf_full;
+       unsigned long buf_head;
+       unsigned long buf_tail;
+       unsigned char *buf;
+};
+
+#endif /* _BCM477x_DEBUG_ */
diff --git a/drivers/sensors/brcm/bbdpl1/bcm477x_ssi_spi.h b/drivers/sensors/brcm/bbdpl1/bcm477x_ssi_spi.h
new file mode 100644 (file)
index 0000000..94000d1
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _BCM477x_SSI_SPI_H_
+#define _BCM477x_SSI_SPI_H_
+#define MAX_TX_RX_BUF_SIZE (2048 + 2)
+
+enum
+{
+    SSI_MODE_STREAM = 0
+    ,SSI_MODE_DEBUG  = 0x80
+};
+
+enum
+{
+    SSI_MODE_HALF_DUPLEX = 0
+    ,SSI_MODE_FULL_DUPLEX = 0x40
+};
+
+enum
+{
+    SSI_WRITE_TRANS = 0x0
+    ,SSI_READ_TRANS  = 0x20
+};
+
+struct bcm477x_platform_data {
+    unsigned int host_req_gpio; /* HOST_REQ : to indicate that ASIC has data to send. */
+};
+
+typedef int (*bcm477x_on_read_cb)(unsigned char *buf, size_t len);
+
+struct bcm477x_ssi_spi
+{
+    bool is_opened;
+    bool is_driver_loaded;
+    struct spi_device *spi;
+
+    bcm477x_on_read_cb on_read;
+};
+
+extern int bcm477x_open(bcm477x_on_read_cb on_read);
+extern int bcm477x_write(const unsigned char* buf, size_t len, int flag);
+
+#endif  /* _BCM477x_SSI_SPI_H_ */
diff --git a/drivers/sensors/brcm/bbdpl1/bcm_gps_spi.c b/drivers/sensors/brcm/bbdpl1/bcm_gps_spi.c
new file mode 100644 (file)
index 0000000..42c245c
--- /dev/null
@@ -0,0 +1,1719 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#define DEBUG
+
+#include <linux/module.h>
+#include <linux/ioport.h>
+#include <linux/device.h>
+#include <linux/init.h>
+#include <linux/sysrq.h>
+#include <linux/console.h>
+#include <linux/tty.h>
+#include <linux/tty_flip.h>
+#include <linux/serial_core.h>
+#include <linux/serial.h>
+#include <linux/delay.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spidev.h>
+#include <linux/kthread.h>
+#include <linux/circ_buf.h>
+#include <linux/irq.h>
+#include <linux/wakelock.h>
+#include <linux/suspend.h>
+#include <linux/kernel.h>
+#include "bcm_gps_spi.h"
+#include "bbd_internal.h"
+
+#include <linux/ssp_platformdata.h>
+#include <linux/gpio.h>
+
+#include <linux/of_gpio.h>
+#include <asm/io.h>
+#include <asm/irq.h>
+
+#define xCONFIG_SPI_BCM4773_DMA       0
+#define CONFIG_SPI_DMA_BITS_PER_WORD  32
+#define xCONFIG_SPI_NO_FULL_DUPLEX    0
+#define CONFIG_SPI_NO_IDENTIFY        1
+#define CONFIG_SPI_NO_AUTOBAUD       0
+#define CONFIG_DDS
+#define CONFIG_4WORD_BURST
+
+
+#ifdef CONFIG_SPI_DMA_BITS_PER_WORD
+#define CONFIG_SPI_DMA_BYTES_PER_WORD (CONFIG_SPI_DMA_BITS_PER_WORD >> 3)
+#else
+#define CONFIG_SPI_DMA_BYTES_PER_WORD 1
+#endif
+
+#ifdef CONFIG_4WORD_BURST
+#define WORD_BURST_SIZE                4
+#else
+#define WORD_BURST_SIZE                1
+#endif
+
+
+#ifdef CONFIG_SPI_BCM4773_DMA   /* Should be defined in the configuration file, e.g. arm/arch/panda_defconfig or drivers/char/Kconfig */
+#include <linux/dma-mapping.h>
+#endif
+
+#define GPS_VERSION    "1.26"
+#define PFX            "bcmgps:"
+/* FIXME: Temporary disabled. Do we need this code at all ? */
+
+
+#ifdef DEBUG
+#define xDEBUG_PROFILE                  1
+#define xDEBUG_SET_TERMIOS              0
+#define DEBUG_TRANSFER                 0
+#define xDEBUG_TRANSFER__READ_TRANSMIT  0
+#define xDEBUG_TRANSFER__RXTX_WORK      0
+#define xDEBUG_TX                       0
+#define xDEBUG_IRQ_HANDLER              0
+#define xDEBUG_RX                       0
+#define xDEBUG_INSERT_FLIP_STRING       0
+#define xDEBUG_DDS_GPIO                        0
+
+#ifdef DEBUG_TRANSFER
+bool ssi_dbg;
+static void pk_log(const struct device *dev,char* dir,unsigned char cmd_stat, char* data, int len, int transferred, short status);
+#endif  //DEBUG_TRANSFER
+#ifdef DEBUG_PROFILE
+unsigned long clock_get_us(void);
+struct bcm4773_profile
+{              
+       unsigned long   count[2];
+       unsigned long   total_time[2];
+       unsigned long   total_size[2];
+       unsigned long   min_time[2];
+       unsigned long   max_time[2];
+       unsigned long   rxtx_work[2];      // rxtx_work_profile
+       unsigned long   rxtx_enter[2];     //
+};
+
+#define WRITE_TRANS_NUM 500
+
+struct bcm4773_profile_collect_data
+{              
+       int             trans_type;  // 0 - DMA, 1 - GPIO 
+       int             io;          // 0 - W, 1 - R
+       unsigned long   len;
+       unsigned long   time;
+       unsigned long   start_time;
+};
+
+int    trans = 0;
+int    bcm4773_trans = 0;
+struct bcm4773_profile profile_rxtx_work;
+struct bcm4773_profile profile_spi_sync;
+
+static void bcm4773_init_the_profile(struct bcm4773_profile *p)
+{
+       p->count[0]=0;      p->count[1]=0;
+       p->total_time[0]=0; p->total_time[1]=0;
+       p->total_size[0]=0; p->total_size[1]=0;
+       p->min_time[0]=0;   p->min_time[1]=0;
+       p->max_time[0]=0;   p->max_time[1]=0;
+
+       p->rxtx_work[0]=0;   p->rxtx_work[1]=0;   // rxtx_work_profile
+       p->rxtx_enter[0]=0;  p->rxtx_enter[1]=0;  //
+
+}
+
+#if DEBUG_PROFILE==2
+static void bcm4773_get_freq(unsigned long bit_len,unsigned long time,unsigned long *d,unsigned long *d1,unsigned long *d2 )
+{
+       unsigned long n;
+       
+       *d = bit_len / time;
+       n = (bit_len - (*d * time)) * 10;
+       *d1 = n / time;
+       *d1 %= 10;
+       n = (*d - (*d1 * time)) * 10;
+    *d2 = n / time;                                      
+       *d2 %= 10;
+}
+#endif
+
+static void bcm4773_profile_print(struct uart_port     *port,const char *func,long line)
+{
+       pr_debug(PFX "[SSPBBD]: %s.01 rxtx_work: count %ld time %ld in %s(%ld)\n",__func__,
+                  profile_rxtx_work.count[0], profile_rxtx_work.total_time[0],
+                  func, line);
+
+#if DEBUG_PROFILE==2
+       pr_debug(PFX "[SSPBBD]: %s.02.1 spi_sync: W: count %ld time %ld, R: count %ld time %ld\n",__func__,
+                  profile_spi_sync.count[0], profile_spi_sync.total_time[0], 
+                                 profile_spi_sync.count[1], profile_spi_sync.total_time[1]);
+#endif
+
+       pr_debug(PFX "[SSPBBD]: %s.02.2 rxtx_start: tx %ld(%ld) irq %ld(%ld), rxtx_work: tx %ld(%ld) irq %ld(%ld)\n",__func__,
+                             profile_spi_sync.rxtx_work[0],profile_spi_sync.rxtx_enter[0],profile_spi_sync.rxtx_work[1],profile_spi_sync.rxtx_enter[1],       // rxtx_work_profile
+                  profile_rxtx_work.rxtx_work[0],profile_rxtx_work.rxtx_enter[0],profile_rxtx_work.rxtx_work[1],profile_rxtx_work.rxtx_enter[1]);
+
+       pr_debug(PFX "[SSPBBD]: %s.03 uart_port: RX: icnt=%lu be=%lu oe=%lu, TX: icnt=%lu ff=%lu\n",__func__,
+                             (unsigned long)port->icount.rx,
+                             (unsigned long)port->icount.brk,
+                             (unsigned long)port->icount.overrun,
+                             (unsigned long)port->icount.tx,
+                             (unsigned long)port->icount.buf_overrun);
+}
+
+static void bcm4773_profile_init(struct uart_port      *port)
+{
+       trans = 0;
+    port->icount.rx = 0;
+    port->icount.brk = 0;
+    port->icount.overrun = 0;
+    port->icount.tx = 0;
+    port->icount.buf_overrun = 0;
+
+    bcm4773_init_the_profile(&profile_rxtx_work);
+       bcm4773_init_the_profile(&profile_spi_sync);
+
+}
+
+#endif  //DEBUG_PROFILE
+
+#endif  //DEBUG
+
+/* Ted :: Exported Samsung SSP Driver */
+extern struct spi_driver *pssp_driver;
+
+/* Setting up maximum size of buffer (UART_XMIT_SIZE) for transfer that corresponds size of xmit_uart_circ buffer */
+/* FIXME:: Temporary fix for H-phone: Using transfer size 254 instead of more because there is bug in bus driver spi-s3c64xx.c 
+           DMA starts working automatically if transfer block has more 256 bytes size. 
+                  During transfer of a few packets (size > 256 bytes), one block transfer has CS0 low delay about 2.5ms after all bytes has been transferred in packet */
+#define     BCM4773_MSG_BUF_SIZE   (UART_XMIT_SIZE) 
+struct bcm4773_message
+{              
+       unsigned char                   cmd_stat;
+       unsigned char                   data[UART_XMIT_SIZE];
+} __attribute__((__packed__));
+
+/* structures */
+struct bcm4773_uart_port
+{
+       int                             host_req_pin;
+       int                             mcu_req;
+       int                             mcu_resp;
+       volatile int                    rx_enabled;
+       volatile int                    tx_enabled;
+       struct ktermios                 termios;
+       spinlock_t                      lock;
+       struct uart_port                port;
+       struct work_struct              rxtx_work;
+       struct work_struct              start_tx;
+       struct work_struct              stop_rx;
+       struct work_struct              stop_tx;
+       struct workqueue_struct         *serial_wq;
+       spinlock_t                      irq_lock;
+       atomic_t                        irq_enabled;
+       atomic_t                        suspending;
+
+       struct spi_transfer             master_transfer;
+       struct spi_transfer             dbg_transfer;
+       struct wake_lock             bcm4773_wake_lock;
+};
+
+/* UART name and device definitions */
+#define BCM4773_SERIAL_NAME    "ttyBCM"
+#define BCM4773_SERIAL_MAJOR   205
+#define BCM4773_SERIAL_MINOR   0
+
+struct uart_driver             bcm4773_uart_driver=
+{
+       .owner                  = THIS_MODULE,
+       .driver_name    = BCM4773_SERIAL_NAME,
+       .dev_name               = BCM4773_SERIAL_NAME,
+       .nr                         = 1,
+       .major                  = BCM4773_SERIAL_MAJOR,
+       .minor                  = BCM4773_SERIAL_MINOR,
+       .cons                   = NULL,
+};
+
+static struct bcm4773_uart_port        *g_bport;
+
+static struct spi_driver       bcm4773_spi_driver;
+static struct uart_ops         bcm4773_serial_ops;
+static bcm4773_stat_t bcm4773_read_transmit( struct bcm4773_uart_port *bcm_port, int *length );
+static irqreturn_t bcm4773_irq_handler( int irq, void *pdata );
+#ifndef CONFIG_SPI_NO_AUTOBAUD
+static void bcm4773_autobaud(struct bcm4773_uart_port *bport);
+#endif
+static bcm4773_stat_t bcm4773_reset_fifo( struct bcm4773_uart_port *bcm_port );
+#ifndef CONFIG_SPI_NO_IDENTIFY
+static int bcm4773_do_identify( struct bcm4773_uart_port *bcm_port );
+#endif
+
+static inline struct spi_device *bcm4773_uart_to_spidevice( struct bcm4773_uart_port *bcm_port )
+{
+       return to_spi_device( bcm_port->port.dev );
+}
+
+static inline unsigned char *bcm4773_get_write_buf( struct bcm4773_uart_port *bcm_port )
+{
+       struct bcm4773_message  *mesg=(struct bcm4773_message *) bcm_port->master_transfer.tx_buf;
+
+       return mesg->data;
+}
+
+static inline unsigned char *bcm4773_get_read_buf( struct bcm4773_uart_port *bcm_port )
+{
+       struct bcm4773_message  *mesg=(struct bcm4773_message *) bcm_port->master_transfer.rx_buf;
+
+       return mesg->data;
+}
+
+
+/**
+ * bcm4773_debug_buffer - Return a pointer to a buffer usable by the SSI-debug layer above us.
+ * @bport: bcm uart device which is requesting to transfer
+ * @len: length of internal tx buffer
+ */
+static inline unsigned char* bcm4773_debug_buffer(struct bcm4773_uart_port *bport, size_t* len)
+{
+       if ( len ) {
+               struct bcm4773_message  *bcm4773_write_msg=(struct bcm4773_message *) (bport->dbg_transfer.tx_buf);
+               memset(bcm4773_write_msg, 0xA5, sizeof(struct bcm4773_message));
+               *len = sizeof( *bcm4773_write_msg);
+               return (unsigned char*) bcm4773_write_msg;
+       }
+       return NULL;
+}
+
+static inline int bcm4773_debug_transfer(struct bcm4773_uart_port *bport, const unsigned char* buf, size_t length)
+{
+       int status = 0;
+       struct bcm4773_message          *bcm4773_write_msg=(struct bcm4773_message *) (bport->dbg_transfer.tx_buf);
+       struct bcm4773_message          *bcm4773_read_msg=(struct bcm4773_message *) (bport->dbg_transfer.rx_buf);
+       struct spi_message              msg;
+       struct spi_transfer             transfer   = {0,};
+       unsigned char                   cmd_stat;
+#ifdef DEBUG_TRANSFER
+       char                            the_dir[10] = {'w',' ',0 };
+#endif
+
+       if( length > sizeof( bcm4773_write_msg->data ) || length == 0 )
+               return -EFAULT;
+
+       if ( buf != &bcm4773_write_msg->cmd_stat )
+               return -EFAULT;
+
+       /* Prepare the data. */
+       memcpy( &transfer, &(bport->dbg_transfer), sizeof( transfer ) );
+       cmd_stat = bcm4773_write_msg->cmd_stat;
+       spi_message_init( &msg );
+
+       msg.spi=bcm4773_uart_to_spidevice( bport );
+       msg.is_dma_mapped=0;
+
+       transfer.len = length;
+       transfer.tx_dma=0;
+       transfer.rx_dma=0;
+       transfer.bits_per_word = 8;
+
+#ifdef DEBUG_TRANSFER
+       the_dir[0] = cmd_stat & SSI_READ_TRANS ? 'W':'w';
+       pk_log(bport->port.dev,the_dir, cmd_stat,(char *)bcm4773_write_msg->data, length, length, status);
+#endif
+
+
+       spi_message_add_tail( &transfer, &msg );
+       
+#ifdef CONFIG_SPI_DMA_BITS_PER_WORD
+       if ( (cmd_stat == (SSI_MODE_HALF_DUPLEX | SSI_WRITE_TRANS | SSI_MODE_DEBUG)) && (length > SSI_MAX_RW_BYTE_COUNT))
+       {
+               int align = (CONFIG_SPI_DMA_BYTES_PER_WORD * WORD_BURST_SIZE);
+               transfer.bits_per_word = (transfer.len % align) ? 8 : CONFIG_SPI_DMA_BITS_PER_WORD;
+               if (transfer.bits_per_word == 8)
+                       printk("%s: byte not aligned\n", __func__);
+       }
+#endif
+
+       status = spi_sync_locked( msg.spi, &msg );
+
+       if( status )
+               return 0;
+       else {
+#ifdef DEBUG_TRANSFER
+               the_dir[0] = cmd_stat & SSI_READ_TRANS ? 'R':'r';
+               cmd_stat = bcm4773_read_msg->cmd_stat;  //bcm4773_write_msg->data[0];
+               pk_log(bport->port.dev,the_dir, cmd_stat, (char *)&bcm4773_read_msg->data[0], length, length, status);
+#endif
+               return length;
+       }
+}
+
+
+static unsigned int bcm4773_get_mctrl( struct uart_port *port )
+{
+       return TIOCM_CAR | TIOCM_DSR | TIOCM_CTS;
+}
+
+static void bcm4773_set_mctrl( struct uart_port *port, unsigned int mctrl )
+{
+       return;
+}
+
+static unsigned int bcm4773_tx_empty( struct uart_port *port )
+{
+       if( uart_circ_chars_pending( &port->state->xmit ) == 0 )
+               return TIOCSER_TEMT;
+       else
+               return 0;
+}
+
+static void bcm4773_stop_tx_work( struct work_struct *work )
+{
+#ifdef DEBUG_TX
+       struct bcm4773_uart_port        *bport=container_of( work, struct bcm4773_uart_port, stop_tx );
+
+       pr_debug(PFX "[SSPBBD]: %s tx_enabled %d rx_enabled %d\n",__func__,bport->tx_enabled,bport->rx_enabled);
+#endif
+       return;
+}
+
+static void bcm4773_stop_tx( struct uart_port *port )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+
+       queue_work( bport->serial_wq, &(bport->stop_tx) );
+       return;
+}
+
+static void bcm4773_start_tx_work( struct work_struct *work )
+{
+       struct bcm4773_uart_port        *bport=container_of( work, struct bcm4773_uart_port, start_tx );
+       unsigned long int               flags;
+
+#ifdef DEBUG_IRQ_HANDLER
+       struct uart_port                *port=&(bport->port);
+       int pending=uart_circ_chars_pending( &port->state->xmit );
+       pr_debug(PFX "[SSPBBD]: %s.RXTX_WORK pn %d, tx %d\n",__func__,pending,bport->tx_enabled);
+#endif
+
+       spin_lock_irqsave( &(bport->lock), flags );
+
+       queue_work(bport->serial_wq, &(bport->rxtx_work) );
+
+#ifdef DEBUG_PROFILE
+       profile_spi_sync.rxtx_work[0]++;   // rxtx_work_profile
+#endif
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       return;
+}
+
+static void bcm4773_start_tx( struct uart_port *port )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+       unsigned long int               flags;
+
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (atomic_xchg(&bport->irq_enabled, 0)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=0) {
+                       printk("[SSPBBD]: %s irq depth mismatch. enabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 0;
+               }
+               disable_irq_nosync(bport->port.irq);
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+
+       queue_work(bport->serial_wq, &(bport->start_tx) );
+
+       return;
+}
+
+static void bcm4773_stop_rx_work( struct work_struct *work )
+{
+       struct bcm4773_uart_port        *bport=container_of( work, struct bcm4773_uart_port, stop_rx );
+       unsigned long int               flags;
+
+#ifdef DEBUG_RX
+       struct uart_port                *port=&(bport->port);
+       pr_debug(PFX "[SSPBBD]: %s tx %d, rx %d, oe %d\n",__func__,bport->tx_enabled,bport->rx_enabled,port->icount.buf_overrun);
+#endif
+
+       spin_lock_irqsave( &(bport->lock), flags );
+       if( bport->rx_enabled )
+       {
+               bport->rx_enabled=0;
+       }
+       
+#ifdef DEBUG_PROFILE
+    bcm4773_profile_print(__func__,__LINE__);
+#endif 
+
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       return;
+}
+
+static void bcm4773_stop_rx( struct uart_port *port )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+
+       queue_work( bport->serial_wq, &(bport->stop_rx) );
+       return;
+}
+
+static void bcm4773_enable_ms(struct uart_port *port)
+{
+       return;
+}
+
+static void bcm4773_break_ctl(struct uart_port *port, int break_state)
+{
+       return;
+}
+
+static int bcm4773_startup( struct uart_port *port )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+       unsigned long int               flags;
+
+       spin_lock_irqsave( &(bport->lock), flags );
+       bport->rx_enabled=1;
+       bport->tx_enabled=0;
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (!atomic_xchg(&bport->irq_enabled, 1)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=1) {
+                       printk("[SSPBBD]: %s irq depth mismatch. disabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 1;
+               }
+               enable_irq(bport->port.irq);
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+
+       enable_irq_wake(bport->port.irq);
+
+#ifndef CONFIG_SPI_NO_AUTOBAUD
+       bcm4773_autobaud(bport);
+#endif
+
+#ifdef DEBUG_PROFILE
+       bcm4773_profile_init();
+#endif 
+
+       return 0;
+}
+
+static void bcm4773_shutdown( struct uart_port *port )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+       unsigned long int               flags;
+
+       spin_lock_irqsave( &(bport->lock), flags );
+
+       if( bport->rx_enabled )
+               bcm4773_stop_rx( port );
+
+       if( bport->tx_enabled )
+               bcm4773_stop_tx( port );
+               
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       msleep(10);
+
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (atomic_xchg(&bport->irq_enabled, 0)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=0) {
+                       printk("[SSPBBD]: %s irq depth mismatch. enabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 0;
+               }
+               disable_irq_nosync(bport->port.irq);
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+
+       disable_irq_wake(bport->port.irq);
+       return;
+}
+
+static void bcm4773_set_termios(struct uart_port *port, struct ktermios *termios, struct ktermios *old )
+{
+       struct bcm4773_uart_port        *bport=container_of( port, struct bcm4773_uart_port, port );
+
+#ifdef DEBUG_SET_TERMIOS
+       pr_debug(PFX "[SSPBBD]: %s TTY <== i=0x%08X o=0x%08X c=0x%08X l=0x%08X m%d t%d %d %d...oe %d\n",__func__,
+            termios->c_iflag, termios->c_oflag,
+            termios->c_cflag, termios->c_lflag,
+            termios->c_cc[VMIN], termios->c_cc[VTIME],
+            termios->c_ispeed,termios->c_ospeed,
+                       port->icount.buf_overrun);
+       pr_debug(PFX "[SSPBBD]: %s opened line %d\n",__func__, port->line);
+#endif
+
+       /* Termios field is fake. */
+       memcpy( &(bport->termios), termios, sizeof( bport->termios ) );
+
+       /* It doesn't matter. */
+       uart_update_timeout( port, CS8, 115200 );
+       return;
+}
+
+static const char *bcm4773_type(struct uart_port *port)
+{
+       return "[SSPBBD]: BCM4773_SPI";
+}
+
+static void bcm4773_release_port(struct uart_port *port)
+{
+       return;
+}
+
+static int bcm4773_request_port(struct uart_port *port)
+{
+       return 0;
+}
+
+static void bcm4773_config_port(struct uart_port *port, int flags)
+{
+       return;
+}
+
+static int bcm4773_verify_port(struct uart_port *port, struct serial_struct *ser)
+{
+       if( port->type == PORT_16550A )
+               return 0;
+       else
+               return -EINVAL;
+}
+
+static bool bcm4773_hello(struct bcm4773_uart_port *bport)
+{
+#ifdef CONFIG_DDS
+       int count=0, retries=0;
+
+       gpio_set_value(bport->mcu_req, 1);
+#ifdef DEBUG_DDS_GPIO
+       printk("%s get MCU_REQ_RESP %d\n", __func__, gpio_get_value(bport->mcu_resp));
+       printk("%s set MCU_REQ %d\n", __func__, gpio_get_value(bport->mcu_req));
+#endif
+       while (!gpio_get_value(bport->mcu_resp)) {
+#ifdef DEBUG_DDS_GPIO
+               printk("%s get MCU_REQ_RESP %d\n", __func__, gpio_get_value(bport->mcu_resp));
+#endif
+
+               if (count++ > 100) {
+                       gpio_set_value(bport->mcu_req, 0);
+                       printk("%s get MCU_REQ_RESP timeout. MCU_RESP(gpio%d) not responding to MCU_REQ(gpio%d)\n",
+                                __func__, bport->mcu_resp, bport->mcu_req);
+                       return false;
+               }
+
+               mdelay(1);
+
+               if (gpio_get_value(bport->mcu_resp)) {
+                       break;
+               }
+
+               if (count%20==0 && retries++ < 3) {
+                       gpio_set_value(bport->mcu_req, 0);
+#ifdef DEBUG_DDS_GPIO
+                       printk("%s set MCU_REQ %d\n", __func__, gpio_get_value(bport->mcu_req));
+#endif
+                       mdelay(1);
+                       gpio_set_value(bport->mcu_req, 1);
+#ifdef DEBUG_DDS_GPIO
+                       printk("%s set MCU_REQ %d\n", __func__, gpio_get_value(bport->mcu_req));
+#endif
+                       mdelay(1);
+               }
+
+       }
+#ifdef DEBUG_DDS_GPIO
+       printk("%s get MCU_REQ_RESP %d\n", __func__, gpio_get_value(bport->mcu_resp));
+#endif
+#endif
+       return true;
+}
+
+static void bcm4773_bye(struct bcm4773_uart_port *bport)
+{
+#ifdef CONFIG_DDS
+       gpio_set_value(bport->mcu_req, 0);
+#ifdef DEBUG_DDS_GPIO
+       printk("%s set MCU_REQ %d\n", __func__, gpio_get_value(bport->mcu_req));
+#endif
+#endif
+}
+
+void bcm4773_mcu_resp_float(bool do_float)
+{
+#ifdef CONFIG_DDS
+       if(!g_bport)
+               return;
+#endif
+}
+
+/* returns status. */
+static bcm4773_stat_t bcm4773_transfer( struct bcm4773_uart_port *bport, unsigned char cmd_stat, int length, int use_dma )
+{
+       int status = 0;
+       struct bcm4773_message          *bcm4773_write_msg=(struct bcm4773_message *) (bport->master_transfer.tx_buf);
+       struct bcm4773_message          *bcm4773_read_msg=(struct bcm4773_message *) (bport->master_transfer.rx_buf);
+       struct spi_message              msg;
+       struct spi_transfer             transfer;
+#ifdef DEBUG_TRANSFER
+       char   the_dir[10] = {'w',' ',0 };
+#endif
+#ifdef DEBUG_PROFILE
+#if DEBUG_PROFILE==2
+       unsigned long t1, t0 = clock_get_us();
+       trans = cmd_stat & SSI_READ_TRANS ? 1:0;
+#endif
+#endif 
+
+       if( length > sizeof( bcm4773_write_msg->data ) || length == 0 )
+               return 0xFF;
+
+    /* Prepare the data. */
+    memcpy( &transfer, &(bport->master_transfer), sizeof( transfer ) );
+    spi_message_init( &msg );
+
+       if( use_dma )
+       {
+        msg.is_dma_mapped=1;
+       }
+       else
+       {
+               transfer.tx_dma=0;
+               transfer.rx_dma=0;
+        msg.is_dma_mapped=0;
+       }
+
+       bcm4773_write_msg->cmd_stat=cmd_stat;
+
+       if ( length != 0 && (cmd_stat & SSI_READ_TRANS) == 0 ) {
+
+          if ( (cmd_stat & SSI_MODE_FULL_DUPLEX)  != 0 ) {
+             bcm4773_write_msg->data[0]=length;
+                 length += 1;                                  // 1 means RX_PKT_LEN for Full Duplex Mode
+          } else {
+             transfer.rx_buf = NULL;                       // FIXME: To get rid of call of callback function in bus driver in DMA mode.
+                 bcm4773_read_msg->cmd_stat = 0;
+                 bcm4773_read_msg->data[0]= 0;
+          }
+       }
+
+#ifdef DEBUG_TRANSFER
+       the_dir[0] = cmd_stat & SSI_READ_TRANS ? 'W':'w';
+       pk_log(bport->port.dev,the_dir, cmd_stat,(char *)bcm4773_write_msg->data, length, length, status);
+#endif
+
+       transfer.len=length + 1;  // + 1 byte is for cmd_stat
+
+#ifdef CONFIG_SPI_DMA_BITS_PER_WORD
+    if ( (cmd_stat == (SSI_MODE_HALF_DUPLEX | SSI_WRITE_TRANS))  
+#ifdef  CONFIG_SPI_NO_FULL_DUPLEX      
+             &&  
+            (length >= SSI_MAX_RW_BYTE_COUNT) 
+#endif          
+               ) 
+       {
+          transfer.bits_per_word=CONFIG_SPI_DMA_BITS_PER_WORD;
+       }
+#endif
+
+       spi_message_add_tail( &transfer, &msg );
+       msg.spi=bcm4773_uart_to_spidevice( bport );
+
+#ifdef DEBUG_PROFILE
+#if DEBUG_PROFILE==2
+       bcm4773_trans = 1;      
+#endif 
+#endif
+       status = spi_sync( msg.spi, &msg );
+
+#ifdef DEBUG_PROFILE
+#if DEBUG_PROFILE==2
+       bcm4773_trans = 0;         
+       t1 = clock_get_us();
+       profile_spi_sync.count[trans]++;
+       profile_spi_sync.total_time[trans] += (t1-t0);
+#endif
+#endif 
+
+       if( status )
+               return 0xFF;
+       else {
+#ifdef DEBUG_TRANSFER
+               the_dir[0] = cmd_stat & SSI_READ_TRANS ? 'R':'r';
+               cmd_stat = bcm4773_read_msg->cmd_stat;  //bcm4773_write_msg->data[0];
+               pk_log(bport->port.dev,the_dir, cmd_stat, (char *)&bcm4773_read_msg->data[0], length, length, status);
+#endif
+               return  BCM4773_RET(bcm4773_read_msg);
+       }
+}
+
+static bcm4773_stat_t bcm4773_read( struct bcm4773_uart_port *bcm_port, unsigned char cmd_stat, int length )
+{
+       unsigned char   *write_buf=bcm4773_get_write_buf( bcm_port );
+
+       memset( write_buf, 0, length );
+
+#ifdef CONFIG_SPI_BCM4773_DMA
+       return bcm4773_transfer( bcm_port, cmd_stat, length, (length > 1 ? 1 : 0) );
+#else
+       return bcm4773_transfer( bcm_port, cmd_stat, length, 0 );
+#endif
+}
+
+static inline bcm4773_stat_t bcm4773_write( struct bcm4773_uart_port *bcm_port, unsigned char cmd_stat, int length)
+{
+#ifdef CONFIG_SPI_BCM4773_DMA
+       return bcm4773_transfer( bcm_port, cmd_stat, length, (length > 1 ? 1 : 0) );
+#else
+       return bcm4773_transfer( bcm_port, cmd_stat, length, 0 );
+#endif
+}
+
+static bcm4773_stat_t bcm4773_reset_fifo( struct bcm4773_uart_port *bcm_port )
+{
+    int i=0;
+    bcm4773_stat_t retval;
+    int                           length = 0;
+    do {
+       i++;
+       retval = bcm4773_read_transmit( bcm_port, &length );
+    } while (i < 3 );
+
+    return 0;
+}
+
+
+static inline bcm4773_stat_t bcm4773_read_status( struct bcm4773_uart_port *bcm_port )
+{
+       return bcm4773_read( bcm_port, SSI_READ_TRANS | SSI_MODE_HALF_DUPLEX, 1 );
+}
+
+static bcm4773_stat_t bcm4773_read_transmit( struct bcm4773_uart_port *bcm_port, int *length )
+{
+       bcm4773_stat_t retval = bcm4773_read_status( bcm_port );
+       bcm4773_stat_t status = BCM4773_MSG_STAT(retval);
+
+#ifdef DEBUG_TRANSFER__READ_TRANSMIT
+       pr_debug(PFX "[SSPBBD]:  %s: retval=0x%04X ( len %d , stat = 0x%02X )\n", __func__,retval,BCM4773_MSG_LEN(retval),status);
+#endif
+
+       if( status == 0 ) 
+       {
+               *length=BCM4773_MSG_LEN(retval);
+               if( *length != 0 ) 
+               {
+                       int len2;
+                       if (*length == 255) {
+                               *length = 254;
+                       }
+                       retval=bcm4773_read( bcm_port, SSI_READ_TRANS | SSI_MODE_HALF_DUPLEX, *length+1); //KOM:: FIXME It doesn't matter what we are using HALF or FULL DUPLEX
+                       len2 = BCM4773_MSG_LEN(retval);
+                       if ( len2 < *length ) {
+                               struct uart_port *port=&(bcm_port->port);
+                               pr_err(PFX "[SSPBBD]: %s error reading from the chipset! Read %d, expected %d\n", __func__,len2,*length);
+                               *length = len2;
+                          port->icount.brk++;
+                 }
+                       /* Keep using length in bcm4773_read_status for return value (*length) not length in next bcm4773_read because
+                       next length in bcm4773_read may be > length of previous read in bcm4773_read_status */
+               }
+       }
+
+       return retval;
+}
+
+static bcm4773_stat_t bcm4773_write_receive( struct bcm4773_uart_port *bcm_port, int n, int *length )
+{
+       bcm4773_stat_t retval = bcm4773_write( bcm_port, SSI_WRITE_TRANS | SSI_MODE_FULL_DUPLEX, n);
+       
+       /* See comment in bcm4773_read_transmit
+          Don't need to check status because "retval" is returned 
+          bcm4773_stat_t status = BCM4773_MSG_STAT(retval);
+       if( status == 0 )
+       */
+       {
+          int len2 = BCM4773_MSG_LEN(retval);
+          if ( n > len2)
+            *length = len2;
+          else 
+            *length = n; 
+       }
+       
+       return retval;
+}
+
+
+static irqreturn_t bcm4773_irq_handler( int irq, void *pdata )
+{
+       struct bcm4773_uart_port        *bport=(struct bcm4773_uart_port *) pdata;
+
+       /* [FW4773-413] Check if we really have pending irq */
+       bcm4773_stat_t  status = gpio_get_value(bport->host_req_pin);
+       if (!status)
+               return IRQ_HANDLED;
+
+#ifdef DEBUG_IRQ_HANDLER
+       // FIXME Do we need to check HOST_REQ is set or not ???
+       bcm4773_stat_t  status = gpio_get_value(bport->host_req_pin);
+
+       struct uart_port                *port=&(bport->port);
+       pr_debug(PFX "[SSPBBD]: %s.RXTX_WORK hq %d, rx %d\n",__func__,status,bport->rx_enabled);
+#endif
+       spin_lock(&bport->irq_lock);
+       if (atomic_xchg(&bport->irq_enabled, 0)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=0) {
+                       printk("[SSPBBD]: %s irq depth mismatch. enabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 0;
+               }
+               disable_irq_nosync(bport->port.irq);
+       }
+       spin_unlock(&bport->irq_lock);
+
+       queue_work(bport->serial_wq, &bport->rxtx_work);
+
+       return IRQ_HANDLED;
+}
+
+static void bcm4773_insert_flip_string(struct uart_port        *port, struct bcm4773_uart_port *bport,int length,const char *func,long line)
+{
+       int count;
+
+       if( port->state->port.tty != NULL && length > 0 )
+       {
+               unsigned char *data = bcm4773_get_read_buf( bport);
+
+               count=tty_insert_flip_string(&port->state->port, data + 1, length );     /* 1 means excluding RX_PKT_LEN */
+               if( count < length )
+               {
+                       pr_err(PFX "[SSPBBD]: tty_insert_flip_string input overrun error by (%i - %i) = %i bytes!\n", length, count, length - count );
+                       port->icount.buf_overrun+=length - count;
+               }
+               port->icount.rx+=count;
+               tty_flip_buffer_push(&port->state->port);
+
+#ifdef DEBUG_INSERT_FLIP_STRING
+               pr_debug(PFX "[SSPBBD]: %s inserts %d bytes from %s(%ld)\n",__func__,length,func,line);
+#endif
+       }
+}
+
+
+static void bcm4773_rxtx_work( struct work_struct *work )
+{
+       struct bcm4773_uart_port        *bport=container_of( work, struct bcm4773_uart_port, rxtx_work );
+       struct uart_port                *port=&(bport->port);
+       int                             length = 0;
+       int                             pending;
+       int                             count;
+       bcm4773_stat_t                  status;
+       unsigned long int               flags;
+       
+#ifdef DEBUG_PROFILE
+       t0=clock_get_us();
+       count = (bport->tx_enabled-1) % 2;      // rxtx_work_profile
+       profile_rxtx_work.rxtx_work[count]++;
+       profile_rxtx_work.rxtx_enter[count]++;
+#endif 
+
+       status = gpio_get_value(bport->host_req_pin);
+       pending=uart_circ_chars_pending( &port->state->xmit );
+       
+#ifdef DEBUG_TRANSFER__RXTX_WORK
+       pr_debug(PFX "[SSPBBD]: %s.START pn %d, hq %d, rx %d, tx %d, oe %d\n",__func__,pending,status,bport->rx_enabled,bport->tx_enabled,port->icount.buf_overrun);
+#endif
+       if (bcm4773_hello(bport)) {
+       
+               /* Drain the TX/RX buffer in a loop equally. */
+               do
+               {
+                       if ( status ) 
+                       {
+                               status=bcm4773_read_transmit( bport, &length );
+
+                               if( BCM4773_MSG_STAT(status) != 0x00 )
+                               { 
+                                       pr_err(PFX "[SSPBBD]: bcm4773_read_transmit buffer error! retval=0x%04X, port->irq = %d\n", status,port->irq);
+
+                                       break;  //FIXME: return ???
+                               } else if ( BCM4773_MSG_LEN(status) != 0x00 ) {
+
+                                       bcm4773_insert_flip_string(port,bport,length,__func__,__LINE__);
+                               }
+
+#ifndef CONFIG_SPI_NO_FULL_DUPLEX
+                               status = gpio_get_value(bport->host_req_pin);   /* Keep checking HOST_REQ for the following write operation in Full Duplex Mode. */
+#else
+                               status = 0;        
+#endif            
+                       }
+
+                       if( pending != 0 )
+                       {
+                               /* We need to update the buffer first, as it can change while we work with it. */
+                               spin_lock_irqsave(&port->lock, flags);
+                               if( pending > BCM4773_MSG_BUF_SIZE ) pending=BCM4773_MSG_BUF_SIZE;
+
+                               count=CIRC_CNT_TO_END( port->state->xmit.head, port->state->xmit.tail, UART_XMIT_SIZE );
+                               if( pending > count ) pending=count;
+
+                               /* Select Half or Full Duplex mode for writing, because maximum size for Full Duplex is 255 bytes */
+                               /* Where: 1 means TX_PKT_LEN byte for Full Duplex mode */
+
+#ifndef CONFIG_SPI_NO_FULL_DUPLEX
+                               length = 1;
+#else
+                               length = 0; 
+#endif                 
+                               if ( pending > SSI_MAX_RW_BYTE_COUNT ) {  
+                                       if ( status ) {                        /* Checking HOST_REQ (status) also if data is available to read. */ 
+                                               pending = SSI_MAX_RW_BYTE_COUNT;
+                                       } else  {
+#ifdef CONFIG_SPI_DMA_BITS_PER_WORD
+                                               pending = pending - (pending % (CONFIG_SPI_DMA_BYTES_PER_WORD * WORD_BURST_SIZE)) - 1; // "-1" because we need align at 16 or 32 bound and we have extra byte "cmd_stat"
+#endif
+                                               length = 0;
+                                       }
+                               }                        
+
+                               /* Copy the data. */
+                               memcpy( bcm4773_get_write_buf( bport ) + length, port->state->xmit.buf + port->state->xmit.tail, pending );
+
+                               /* Update the circular buffer. */
+                               port->state->xmit.tail=(port->state->xmit.tail + pending) & (UART_XMIT_SIZE - 1);
+                               spin_unlock_irqrestore(&port->lock, flags);
+
+                               if ( length == 0 ) {
+                                       /* Write the data in Half Duplex mode */
+                                       status=bcm4773_write( bport, SSI_WRITE_TRANS | SSI_MODE_HALF_DUPLEX, pending);
+                                       status = BCM4773_MSG_STAT(status);
+                               } else {
+                                       /* Write/Read the data in Full Duplex mode */
+                                       status=bcm4773_write_receive( bport, pending, &length );
+                               }
+
+                               if( BCM4773_MSG_STAT(status) == 0x00 )
+                               {
+                                       /* Transmission successfull. Update the TX count. */
+                                       port->icount.tx+=pending;
+
+                                       //FIXED: Full Duplex issue,  length = BCM4773_MSG_LEN(status);
+                                       if ( length != 0 )
+                                               bcm4773_insert_flip_string(port,bport,length,__func__,__LINE__);
+                               }
+                               else
+                               {
+                                       /* Very unlikely that we get here.... */
+                                       port->icount.overrun+=pending;
+                               }
+                       }
+
+                       status = gpio_get_value(bport->host_req_pin);
+                       pending=uart_circ_chars_pending( &port->state->xmit );
+
+#ifdef DEBUG_TRANSFER__RXTX_WORK_LOOP
+                       pr_debug(PFX "[SSPBBD]: %s.LOOP pending %d, host_req %d, rx %d,  tx %d\n",__func__,pending,status,bport->rx_enabled,bport->tx_enabled);
+#endif
+
+               } while( ( pending || status));
+
+               bcm4773_bye(bport);
+       }
+       else {
+               pr_err("[SSPBBD]: %s timeout!!\n", __func__);
+       }
+
+       pending=uart_circ_chars_pending( &port->state->xmit );
+       if( (pending < WAKEUP_CHARS) && (port->state->port.tty != NULL) )
+               tty_wakeup( port->state->port.tty );
+
+       spin_lock_irqsave( &(bport->lock), flags );
+
+
+#ifdef DEBUG_TRANSFER__RXTX_WORK
+       pr_debug(PFX "[SSPBBD]: %s.EXIT pn %d, hq %d, rx %d, tx %d, oe %d\n",__func__,pending,status,bport->rx_enabled,bport->tx_enabled,port->icount.buf_overrun);
+#endif
+
+#ifdef DEBUG_PROFILE
+       t1 = clock_get_us();
+       profile_rxtx_work.count[0]++;
+       profile_rxtx_work.total_time[0] += (t1-t0);
+       count = (bport->tx_enabled-1) % 2;      // rxtx_work_profile
+       profile_rxtx_work.rxtx_enter[count]--;
+#endif
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (!atomic_read(&bport->suspending))   // we dont' want to enable irq when going to suspendq
+       {
+               /* Let irq happen again */
+               if (!atomic_xchg(&bport->irq_enabled, 1)) {
+                       struct irq_desc *desc = irq_to_desc(bport->port.irq);
+                       if (desc->depth!=1) {
+                               printk("[SSPBBD]: %s irq depth mismatch. disabled irq has depth %d!\n", __func__, desc->depth);
+                               desc->depth = 1;
+                       }
+                       enable_irq(bport->port.irq);
+               }
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+       return;
+}
+
+
+#ifndef CONFIG_SPI_NO_AUTOBAUD
+static void bcm4773_autobaud(struct bcm4773_uart_port *bport)
+{
+       struct spi_device *spidev = bcm4773_uart_to_spidevice( bport );
+
+       unsigned char autobaud[16] = {
+           0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+           0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
+       };
+       unsigned char dummy[16];
+       struct spi_message msg;
+       struct spi_transfer transfer = {
+               .tx_buf = autobaud,
+               .rx_buf = dummy,
+               .len = 16,
+       };
+
+       spi_message_init(&msg);
+       msg.spi = spidev;
+       spi_message_add_tail(&transfer, &msg);
+
+       if (bcm4773_hello(bport)) {
+               spi_sync(spidev, &msg);
+               bcm4773_bye(bport);
+       }
+       else {
+               pr_err("[SSPBBD]: %s timeout!!\n", __func__);
+       }
+}
+#endif
+
+#ifndef CONFIG_SPI_NO_IDENTIFY
+static int bcm4773_do_identify( struct bcm4773_uart_port *bcm_port )
+{
+       const char                      ident_write[]= { //0x00, // Space is for TX_PKT_LEN for Full Duplex Mode
+                                                    0xB0, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x37, 0xb0, 0x01
+                                          };
+       const char                      ident_read[] = {
+                                                    0xB0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8F, 0xB0, 0x01, 0xB0,
+                                                                                0x00, 0x01, 0x06, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
+                                                    0x20, 0xB0, 0x01
+                                          };
+
+       char                             buffer[255+1];
+       int                                  length=0,n=0,n2;
+       bcm4773_stat_t status;
+
+       /* Do identify. */
+       memcpy( bcm4773_get_write_buf( bcm_port ) + 1, ident_write, sizeof( ident_write ) );  // 1 means RX_PKT_LEN for Full Duplex Mode
+       status=bcm4773_write_receive( bcm_port, sizeof( ident_write ), &length );
+
+       if( BCM4773_MSG_STAT(status) != 0x00 )
+       {
+               pr_err(PFX "[SSPBBD]: Error writing identify! Status %.2X\n", status );
+               return -ENODEV;
+       }
+       //FIXED: Full Duplex issue, length = BCM4773_MSG_LEN(status);
+       if ( length > 0 ) {
+           memcpy( buffer, bcm4773_get_read_buf( bcm_port ) + 1, length);  // 1 means RX_PKT_LEN for both modes
+       }
+       n = length;
+
+       mdelay( 10 );
+       status=bcm4773_read_transmit( bcm_port, &length );
+       if( BCM4773_MSG_STAT(status) != 0x00 )
+       {
+               pr_err(PFX "[SSPBBD]: Error receiving identify result! Status %.2X\n", status );
+               return -ENODEV;
+       }
+
+       n2 = BCM4773_MSG_LEN(status);
+       length = sizeof(buffer) - n;
+       if ( length > n2 )
+          length = n2;
+       
+       if ( length > 0 ) {
+         memcpy( &buffer[n], bcm4773_get_read_buf( bcm_port ) + 1, length);  // 1 means RX_PKT_LEN for both modes
+         length +=n;
+       }
+       
+    length +=n;
+
+       if( (length != sizeof( ident_read )) || memcmp( ident_read, buffer, length ) )
+       {
+               pr_err(PFX "[SSPBBD]: Ident data received is not correct!\n" );
+               for( length=0; length < sizeof( ident_read ); length++ )
+                       pr_notice(PFX "[SSPBBD]: SPI Data Compare passed for byte           %2d. Exp = %.2X, Act = %.2X\n",length,ident_read[length],buffer[length]);
+                                               
+               pr_err(PFX "[SSPBBD]: Length received: %i, expected %u\n", n + n2, sizeof( ident_read ) );
+               return -ENODEV;
+       }
+
+       pr_notice(PFX "[SSPBBD]: Identify success!\n" );
+       pr_notice(PFX "[SSPBBD]: Received: " );
+       for( length=0; length < sizeof( ident_read ); length++ )
+               pr_notice( "%.2X ", buffer[length] );
+       pr_notice(PFX "\n[SSPBBD]: Status: %.2X\n", status );
+       return 0;
+}
+#endif
+
+static int bcm4773_spi_probe( struct spi_device *spi )
+{
+       struct bcm4773_uart_port        *bcm4773_uart_port;
+       int                             retval;
+       struct ssp_platform_data        dflt;
+       
+       struct ssp_platform_data *pdata = spi->dev.platform_data;
+       if (!pdata) {
+               pr_warning(PFX "[SSPBBD]: Platform_data null has been provided. Use local allocation.\n");
+               pdata = &dflt; 
+               if (!spi->dev.of_node) {
+                       pr_err(PFX "[SSPBBD]: Failed to find of_node\n");
+                       return -1;
+               }
+       }       
+
+       /*   All the gpio pins SCLK,CS0,MOSI,MISO and HOST_REQ should be defined in arch/arm/boot/dts/exynos5430-kqlte_eur_open_00.dts
+        *   The fake HOST_REQ pin is commented out.
+        *   pdata->mcu_int1 = of_get_named_gpio(spi->dev.of_node, "ssp-irq2", 0);
+        */
+       pdata->mcu_int1 = of_get_named_gpio(spi->dev.of_node, "ssp-irq", 0);
+               
+               /* We don't need to setup the gpio HOST_REQ pin "mcu_int1"
+                *  - gpio_request(pdata->mcu_int1, "mcu_ap_int1");
+                *  - gpio_export(pdata->mcu_int1,1);
+                *  - gpio_direction_input(pdata->mcu_int1);
+                */
+
+       if (pdata->mcu_int1<0) {
+               pr_err(PFX "[SSPBBD]: Failed to get mcu_ap_int1 from DT, err %d\n",pdata->mcu_int1);
+               return -1;
+       }
+
+       spi->irq = gpio_to_irq(pdata->mcu_int1);
+       if ( spi->irq < 0 ) {
+               pr_err(PFX "[SSPBBD]: Failed to get mcu_ap_int1 gpio %d, err %d\n",pdata->mcu_int1,spi->irq);
+               return -1;                      
+       }
+               
+       if (pdata->mcu_int1 <0)
+       {
+               pr_err(PFX "[SSPBBD]: Failed to find ssp-irq in of_node\n");
+               return -1;
+       }
+       pr_debug(PFX "[SSPBBD]: OK, found ssp-irq %d ", pdata->mcu_int1);
+               
+       /* Allocate memory for the private driver data. */
+       bcm4773_uart_port=(struct bcm4773_uart_port *) kmalloc( sizeof( struct bcm4773_uart_port ), GFP_ATOMIC );
+
+       pr_notice(PFX "[SSPBBD]: %s SPI/SSI UART Driver v"GPS_VERSION", pdata->gpio_spi = %d, spi->irq = %d, ac_data = 0x%p\n",__func__, 
+                       pdata->mcu_int1,spi->irq, bcm4773_uart_port);
+
+       if( bcm4773_uart_port == NULL )
+       {
+               pr_err(PFX "[SSPBBD]: Failed to allocate memory for the BCM4773 SPI-UART driver.\n");
+               return -ENOMEM;
+       }
+       else memset( bcm4773_uart_port, 0, sizeof( struct bcm4773_uart_port ) );
+
+       /* Initialize the structure. */
+       spin_lock_init( &(bcm4773_uart_port->port.lock) );
+       spin_lock_init( &(bcm4773_uart_port->lock) );
+       spin_lock_init( &(bcm4773_uart_port->irq_lock) );
+       bcm4773_uart_port->port.iotype=UPIO_MEM;
+       bcm4773_uart_port->port.irq=spi->irq;
+       bcm4773_uart_port->port.custom_divisor=1;
+       bcm4773_uart_port->port.fifosize=256;        // It doesn't matter fifosize for us
+       bcm4773_uart_port->port.ops=&bcm4773_serial_ops;
+       bcm4773_uart_port->port.flags=UPF_BOOT_AUTOCONF;
+       bcm4773_uart_port->port.type=PORT_16550A;    // It doesn't matter what serial type is used
+       bcm4773_uart_port->port.dev=&(spi->dev);
+
+       /* Allocate memory for the transfer buffer. */
+#ifdef CONFIG_SPI_BCM4773_DMA
+       spi->dev.coherent_dma_mask = 0xffffffffUL;
+
+       bcm4773_uart_port->master_transfer.rx_buf=dma_alloc_coherent( &(spi->dev), sizeof( struct bcm4773_message ),
+                                                                     &(bcm4773_uart_port->master_transfer.rx_dma), GFP_KERNEL | GFP_DMA );
+       bcm4773_uart_port->master_transfer.tx_buf=dma_alloc_coherent( &(spi->dev), sizeof( struct bcm4773_message ),
+                                                                     &(bcm4773_uart_port->master_transfer.tx_dma), GFP_KERNEL | GFP_DMA );
+       bcm4773_uart_port->dbg_transfer.rx_buf=dma_alloc_coherent( &(spi->dev), sizeof( struct bcm4773_message ),
+                                                                     &(bcm4773_uart_port->dbg_transfer.rx_dma), GFP_KERNEL | GFP_DMA );
+       bcm4773_uart_port->dbg_transfer.tx_buf=dma_alloc_coherent( &(spi->dev), sizeof( struct bcm4773_message ),
+                                                                     &(bcm4773_uart_port->dbg_transfer.tx_dma), GFP_KERNEL | GFP_DMA );
+#else
+       bcm4773_uart_port->master_transfer.tx_buf=kmalloc( sizeof( struct bcm4773_message ), GFP_KERNEL );
+       bcm4773_uart_port->master_transfer.rx_buf=kmalloc( sizeof( struct bcm4773_message ), GFP_KERNEL );
+       bcm4773_uart_port->master_transfer.tx_dma=0;
+       bcm4773_uart_port->master_transfer.rx_dma=0;
+       bcm4773_uart_port->dbg_transfer.tx_buf=kmalloc( sizeof( struct bcm4773_message ), GFP_KERNEL );
+       bcm4773_uart_port->dbg_transfer.rx_buf=kmalloc( sizeof( struct bcm4773_message ), GFP_KERNEL );
+       bcm4773_uart_port->dbg_transfer.tx_dma=0;
+       bcm4773_uart_port->dbg_transfer.rx_dma=0;
+#endif
+
+       if( !bcm4773_uart_port->master_transfer.tx_buf || !bcm4773_uart_port->master_transfer.rx_buf ||
+           !bcm4773_uart_port->dbg_transfer.tx_buf || !bcm4773_uart_port->dbg_transfer.rx_buf )
+       {
+               pr_err(PFX "[SSPBBD]: Failed to allocate transfer buffer memory.\n" );
+               if( bcm4773_uart_port->master_transfer.tx_buf )
+#ifdef CONFIG_SPI_BCM4773_DMA
+                       dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.tx_buf,
+                                          bcm4773_uart_port->master_transfer.tx_dma );
+#else
+                       kfree( bcm4773_uart_port->master_transfer.tx_buf );
+#endif
+               if( bcm4773_uart_port->master_transfer.rx_buf )
+#ifdef CONFIG_SPI_BCM4773_DMA
+                       dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.rx_buf,
+                                          bcm4773_uart_port->master_transfer.rx_dma );
+#else
+                       kfree( bcm4773_uart_port->master_transfer.rx_buf );
+#endif
+                       kfree( bcm4773_uart_port );
+                       return -ENOMEM;
+       }
+       bcm4773_uart_port->master_transfer.speed_hz=0;  /* Setting 0 and SPI low driver will use .max_speed_hz from arch/arm/mach-omap2/board-omap4panda.c.
+                                                          Otherwise we can change speed_hz in bcm4773_set_termios() */
+       bcm4773_uart_port->master_transfer.bits_per_word=8;
+       bcm4773_uart_port->master_transfer.delay_usecs=0;
+
+       bcm4773_uart_port->dbg_transfer.speed_hz=0; 
+       bcm4773_uart_port->dbg_transfer.bits_per_word=8;
+       bcm4773_uart_port->dbg_transfer.delay_usecs=0;
+
+       /* Reset FIFO */
+       bcm4773_reset_fifo( bcm4773_uart_port );
+
+       /* Detect. */
+#ifndef CONFIG_SPI_NO_IDENTIFY
+    retval = bcm4773_do_identify( bcm4773_uart_port );
+       if( retval < 0 )
+       {
+               pr_err(PFX "[SSPBBD]: Failed to identify BCM4773 chip! (Is the chip powered?)\n");
+#ifdef CONFIG_SPI_BCM4773_DMA
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.tx_buf,
+                               bcm4773_uart_port->master_transfer.tx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.rx_buf,
+                               bcm4773_uart_port->master_transfer.rx_dma );
+#else
+               kfree( bcm4773_uart_port->master_transfer.tx_buf );
+               kfree( bcm4773_uart_port->master_transfer.rx_buf );
+#endif
+               kfree( bcm4773_uart_port );
+               return -ENODEV;
+       }
+#endif 
+
+       /* Register the serial driver. */
+       retval=uart_register_driver( &bcm4773_uart_driver );
+       if( retval )
+       {
+               pr_err(PFX "[SSPBBD]: Failed to register BCM4773 SPI-UART driver.\n");
+#ifdef CONFIG_SPI_BCM4773_DMA
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.tx_buf,
+                               bcm4773_uart_port->master_transfer.tx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.rx_buf,
+                               bcm4773_uart_port->master_transfer.rx_dma );
+#else
+               kfree( bcm4773_uart_port->master_transfer.tx_buf );
+               kfree( bcm4773_uart_port->master_transfer.rx_buf );
+#endif
+               kfree( bcm4773_uart_port );
+               return retval;
+       }
+
+       /* Register the one TTY device. */
+       uart_add_one_port( &bcm4773_uart_driver, &(bcm4773_uart_port->port) );
+
+       //set closing_wait 0. See jira FW4773-391
+       bcm4773_uart_driver.state->port.closing_wait = ASYNC_CLOSING_WAIT_NONE;
+
+       bcm4773_uart_port->host_req_pin = pdata->mcu_int1;
+       bcm4773_uart_port->mcu_req = of_get_named_gpio(spi->dev.of_node, "ssp-mcu-req", 0);
+       bcm4773_uart_port->mcu_resp = of_get_named_gpio(spi->dev.of_node, "ssp-mcu-resp", 0);
+
+       /* Set the private info. */
+       spi_set_drvdata( spi, bcm4773_uart_port );
+
+       /* Setup the workqueue. */
+       INIT_WORK( &(bcm4773_uart_port->rxtx_work), bcm4773_rxtx_work );
+       INIT_WORK( &(bcm4773_uart_port->start_tx), bcm4773_start_tx_work );
+       INIT_WORK( &(bcm4773_uart_port->stop_rx), bcm4773_stop_rx_work );
+       INIT_WORK( &(bcm4773_uart_port->stop_tx), bcm4773_stop_tx_work );
+       bcm4773_uart_port->serial_wq= alloc_workqueue("bcm4773_wq", WQ_HIGHPRI | WQ_UNBOUND | WQ_MEM_RECLAIM, 1);
+
+       //FIXME: Do we need make this call here?
+       pssp_driver->probe(spi);
+
+       /* Request the interrupt. */
+       retval=request_irq( bcm4773_uart_port->port.irq, bcm4773_irq_handler,
+                       IRQF_TRIGGER_HIGH,
+                       bcm4773_uart_driver.driver_name,
+                       bcm4773_uart_port );
+       if( retval )
+       {
+               pr_err(PFX "[SSPBBD]: Failed to register BCM4773 SPI TTY IRQ %d.\n",bcm4773_uart_port->port.irq);
+               uart_remove_one_port( &bcm4773_uart_driver, &(bcm4773_uart_port->port) );
+               uart_unregister_driver( &bcm4773_uart_driver );
+#ifdef CONFIG_SPI_BCM4773_DMA
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.tx_buf,
+                               bcm4773_uart_port->master_transfer.tx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bcm4773_uart_port->master_transfer.rx_buf,
+                               bcm4773_uart_port->master_transfer.rx_dma );
+#else
+               kfree( bcm4773_uart_port->master_transfer.tx_buf );
+               kfree( bcm4773_uart_port->master_transfer.rx_buf );
+#endif
+               kfree( bcm4773_uart_port );
+               return retval;
+       }
+
+       g_bport = bcm4773_uart_port;
+
+       // Init wakelock
+       wake_lock_init(&bcm4773_uart_port->bcm4773_wake_lock, WAKE_LOCK_SUSPEND, "bcm4773_wake_lock");
+
+       /* Disable interrupts */
+       pr_notice(PFX "[SSPBBD]: Initialized. irq = %d\n", bcm4773_uart_port->port.irq);
+       disable_irq( bcm4773_uart_port->port.irq );
+       atomic_set( &(bcm4773_uart_port->irq_enabled), 0 );
+
+       atomic_set(&bcm4773_uart_port->suspending, 0);
+
+#ifdef CONFIG_DDS
+       /* Prepare MCU request/response */
+       gpio_request(g_bport->mcu_req, "MCU REQ");
+       gpio_direction_output(g_bport->mcu_req, 0);
+
+       gpio_request(g_bport->mcu_resp, "MCU RESP");
+       gpio_direction_input(g_bport->mcu_resp);
+#endif
+       return 0;
+}
+
+static inline struct bcm4773_uart_port* bcm4773_spi_get_drvdata( struct spi_device *spi )
+{
+       // TODO: This is a temporary solution. 
+       //       We sometimes have wrong drv data from spi_get_drvdata.
+       if (g_bport)
+               return g_bport;
+       else
+               return (struct bcm4773_uart_port *) spi_get_drvdata( spi );
+}
+
+static int bcm4773_spi_remove( struct spi_device *spi )
+{
+       struct bcm4773_uart_port        *bport = bcm4773_spi_get_drvdata( spi );
+       unsigned long int               flags;
+
+       pr_notice(PFX "[SSPBBD]:  %s : called\n", __func__);
+
+       spin_lock_irqsave( &(bport->lock), flags );
+
+       bport->rx_enabled = 0;
+       bport->tx_enabled = 0;
+
+       spin_unlock_irqrestore( &(bport->lock), flags );
+
+       flush_workqueue( bport->serial_wq );
+       destroy_workqueue( bport->serial_wq );
+       uart_remove_one_port( &bcm4773_uart_driver, &(bport->port) );
+       uart_unregister_driver( &bcm4773_uart_driver );
+#ifdef CONFIG_SPI_BCM4773_DMA
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bport->master_transfer.tx_buf,
+                               bport->master_transfer.tx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bport->master_transfer.rx_buf,
+                               bport->master_transfer.rx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bport->dbg_transfer.tx_buf,
+                               bport->dbg_transfer.tx_dma );
+               dma_free_coherent( &(spi->dev), sizeof( struct bcm4773_message ), (void *) bport->dbg_transfer.rx_buf,
+                               bport->dbg_transfer.rx_dma );
+#else
+       kfree( bport->master_transfer.rx_buf );         
+       kfree( bport->master_transfer.tx_buf );
+       kfree( bport->dbg_transfer.rx_buf );            
+       kfree( bport->dbg_transfer.tx_buf );
+#endif
+       free_irq( spi->irq, bport );
+       kfree( bport );
+       g_bport = NULL;
+
+       return 0;
+}
+
+static struct uart_ops bcm4773_serial_ops=
+{
+        .tx_empty       = bcm4773_tx_empty,
+        .get_mctrl      = bcm4773_get_mctrl,
+        .set_mctrl      = bcm4773_set_mctrl,
+        .stop_tx        = bcm4773_stop_tx,
+        .start_tx       = bcm4773_start_tx,
+        .stop_rx        = bcm4773_stop_rx,
+        .enable_ms      = bcm4773_enable_ms,
+        .break_ctl      = bcm4773_break_ctl,
+        .startup        = bcm4773_startup,
+        .shutdown       = bcm4773_shutdown,
+        .set_termios    = bcm4773_set_termios,
+        .type           = bcm4773_type,
+        .release_port   = bcm4773_release_port,
+        .request_port   = bcm4773_request_port,
+        .config_port    = bcm4773_config_port,
+        .verify_port    = bcm4773_verify_port,
+};
+
+static int bcm4773_suspend( struct device *dev, pm_message_t state )
+{
+       struct spi_device *spi = container_of(dev, struct spi_device, dev);
+       struct bcm4773_uart_port *bport = bcm4773_spi_get_drvdata( spi );
+       unsigned long int               flags;
+
+       atomic_set(&bport->suspending, 1);
+
+
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (atomic_xchg(&bport->irq_enabled, 0)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=0) {
+                       printk("[SSPBBD]: %s irq depth mismatch. enabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 0;
+               }
+               disable_irq_nosync(bport->port.irq);
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+
+       flush_workqueue(bport->serial_wq );
+
+       if (pssp_driver->driver.pm && pssp_driver->driver.pm->suspend)
+               pssp_driver->driver.pm->suspend(&spi->dev);
+
+        return 0;
+}
+
+static int bcm4773_resume( struct device *dev )
+{
+       struct spi_device *spi = container_of(dev, struct spi_device, dev);
+       struct bcm4773_uart_port *bport = bcm4773_spi_get_drvdata( spi );
+       unsigned long int               flags;
+
+       if (pssp_driver->driver.pm && pssp_driver->driver.pm->suspend)
+               pssp_driver->driver.pm->resume(&spi->dev);
+
+       atomic_set(&bport->suspending, 0);
+
+       /* Let irq happen again */
+       spin_lock_irqsave( &bport->irq_lock, flags);
+       if (!atomic_xchg(&bport->irq_enabled, 1)) {
+               struct irq_desc *desc = irq_to_desc(bport->port.irq);
+               if (desc->depth!=1) {
+                       printk("[SSPBBD]: %s irq depth mismatch. disabled irq has depth %d!\n", __func__, desc->depth);
+                       desc->depth = 1;
+               }
+               enable_irq(bport->port.irq);
+       }
+       spin_unlock_irqrestore( &bport->irq_lock, flags);
+
+       wake_lock_timeout(&g_bport->bcm4773_wake_lock, HZ/2);
+
+       return 0;
+}
+
+/* Ted */
+static void bcm4773_spi_shutdown(struct spi_device *spi)
+{
+       pssp_driver->shutdown(spi);
+}
+
+
+static const struct spi_device_id gpsspi_id[] = {
+       {"ssp-spi", 0},
+    {}
+};
+
+#ifdef CONFIG_OF
+static struct of_device_id ssp_match_table[] = {
+       { .compatible = "ssp,BCM4773",},
+       {},
+};
+#endif
+
+static struct spi_driver       bcm4773_spi_driver=
+{
+       .id_table       = gpsspi_id,
+       .probe                  = bcm4773_spi_probe,
+       .remove                 = bcm4773_spi_remove,
+       .shutdown               = bcm4773_spi_shutdown,
+
+
+       .driver=
+       {
+               .name           = "ssp",
+               .owner          = THIS_MODULE,
+               .suspend        = bcm4773_suspend,
+               .resume         = bcm4773_resume,
+#ifdef CONFIG_OF
+               .of_match_table = ssp_match_table
+#endif
+       },
+};
+
+
+
+#ifdef DEBUG_PROFILE
+#define THOUSAND(p)     (1000 * (p))
+#define MILLION(p)     (THOUSAND(THOUSAND(p)))
+unsigned long clock_get_us(void)
+{
+    unsigned long ulMicroseconds;
+    struct timeval tv;
+       do_gettimeofday(&tv);
+    ulMicroseconds = ((unsigned long) tv.tv_sec) * (unsigned long) MILLION(1);
+    ulMicroseconds += (unsigned long) tv.tv_usec;
+    return ulMicroseconds;
+}
+EXPORT_SYMBOL_GPL(clock_get_us);
+#endif
+
+
+#ifdef DEBUG_TRANSFER
+static unsigned long init_time = 0;
+static unsigned long clock_get_ms(void)
+{
+        struct timeval t;
+        unsigned long now;
+
+        do_gettimeofday(&t);
+        now = t.tv_usec / 1000 + t.tv_sec * 1000;
+        if ( init_time == 0 )
+        init_time = now;
+
+        return now - init_time;
+}
+
+
+static void pk_log(const struct device *dev,char* dir,unsigned char cmd_stat, char* data, int len, int transferred, short status)
+{
+       char acB[960];
+       char *p = acB;
+       char the_dir[10];
+       int  the_trans = transferred;
+       int i,j,n;
+       bool w;
+
+       char ic = len == transferred ? 'D':'E';
+       char xc = dir[0] == 'r' || dir[0] == 'w' ? 'x':'X';
+
+       if (likely(!ssi_dbg))
+               return;
+
+       strcpy(the_dir, dir);
+
+       if ( the_trans == 0 )  the_dir[0] = xc;
+
+       n = len ? len+1:0;
+       p += snprintf(acB,sizeof(acB),"#%06ld%c %s 0x%02X, %5d: %02X ",
+                       clock_get_ms() % 1000000,ic, the_dir, cmd_stat,n,cmd_stat); // Where 'D' means droped data, cmd_stat instead of "data[0] & 0xff"
+
+       w = dir[0] == 'w' || dir[0] == 'W';
+       i = 0;
+
+       for(n=31; i < len; i = j,n=32)
+       {
+               for(j = i; j < (i + n) && j < len && the_trans != 0; j++,the_trans--) {
+                       p += snprintf(p,sizeof(acB) - (p - acB), "%02X ", data[j] & 0xFF);
+               }
+               dev_dbg(dev,"%s\n",acB); //pr_debug
+               if(j < len) {
+                       p = acB;
+                       if ( the_trans == 0 )  { the_dir[0] = xc; the_trans--; }
+                       p += snprintf(acB,sizeof(acB),"         %2s              ",the_dir);
+               }
+       }
+
+       if ( i == 0 )
+               dev_dbg(dev,"%s\n",acB);  //pr_debug  //
+
+       if(len != transferred) {
+               pr_err("error, stat %d trans'd %d\n", status,transferred);
+       }
+}
+#endif /* DEBUG */
+
+
+unsigned char* bcm477x_debug_buffer(size_t* len)
+{
+    if (!g_bport) {
+        return 0;
+    }
+
+    return bcm4773_debug_buffer(g_bport, len);
+}
+EXPORT_SYMBOL(bcm477x_debug_buffer);
+
+
+
+int bcm477x_debug_write(const unsigned char* buf, size_t len, int flag)
+{
+    if (!g_bport) {
+        return 0;
+    }
+    return bcm4773_debug_transfer(g_bport, buf, len);
+}
+EXPORT_SYMBOL(bcm477x_debug_write);
+
+
+int bcm477x_debug_transfer(unsigned char *tx, unsigned char *rx, int len, int flag)
+{
+    if (!g_bport) {
+        return 0;
+    }
+    return bcm4773_debug_transfer(g_bport, tx, len);
+}
+EXPORT_SYMBOL(bcm477x_debug_transfer);
+
+
+static int __init bcm4773_spi_init( void )
+{
+       return spi_register_driver( &bcm4773_spi_driver );
+}
+
+static void __exit bcm4773_spi_exit( void )
+{
+       spi_unregister_driver( &bcm4773_spi_driver );
+       return;
+}
+
+module_init( bcm4773_spi_init );
+module_exit( bcm4773_spi_exit );
+
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("BCM4773 SPI/SSI UART Driver");
+
diff --git a/drivers/sensors/brcm/bbdpl1/bcm_gps_spi.h b/drivers/sensors/brcm/bbdpl1/bcm_gps_spi.h
new file mode 100644 (file)
index 0000000..69dca3f
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _BCM_GPS_SPI_H_
+#define _BCM_GPS_SPI_H_
+
+
+typedef unsigned short bcm4773_stat_t;
+#define BCM4773_MSG_STAT(w) (w & 0xFF)
+#define BCM4773_MSG_LEN(w)  ((w & 0xFF00)>>8)
+#define BCM4773_RET(msg)    ((bcm4773_stat_t)msg->cmd_stat | ((bcm4773_stat_t)msg->data[0] << 8))
+
+enum
+{
+    SSI_HW_FIFO_DEPTH = 128
+    ,SSI_MAX_RW_BYTE_COUNT = 255
+    ,SSI_OUTPUT_BUFFER_SIZE = 10000   // buffer size for the output. That should match what the APP sends
+       ,SSI_INPUT_BUFFER_SIZE = 20000    // buffer size for the input. That should match what the APP sends
+    ,SSI_OVERLAP_BUFFER_SIZE = 1024   // partial buffer to hold data while overlap operation completes
+       ,SSI_INPUT_ROUTINE_BUFFER_SIZE = 2000
+};
+
+enum
+{
+    SSI_MODE_STREAM = 0
+    ,SSI_MODE_DEBUG  = 0x80
+};
+
+enum
+{
+    SSI_MODE_HALF_DUPLEX = 0
+    ,SSI_MODE_FULL_DUPLEX = 0x40
+};
+
+enum
+{
+    SSI_WRITE_TRANS = 0x0
+    ,SSI_READ_TRANS  = 0x20
+};
+
+
+struct bcm4773_gps_platform_data {
+       unsigned int gpio_spi; /* HOST_REQ : to indicate that ASIC has data to send. */
+       void (*suspend) (void);
+       void (*resume)  (void);
+};
+
+#endif  //_BCM_GPS_SPI_H_
diff --git a/drivers/sensors/brcm/bbdpl1/transport/Makefile b/drivers/sensors/brcm/bbdpl1/transport/Makefile
new file mode 100644 (file)
index 0000000..23d2ec2
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# Makefile for the Broadcom Bridge Driver
+#
+
+# Each configuration option enables a list of files.
+obj-$(CONFIG_SENSORS_SSP_BBD)          +=      bbd_bridge_c.o bbd_engine.o bbd_packet_layer_c.o transport_layer_c.o
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.c b/drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.c
new file mode 100644 (file)
index 0000000..a40b1bd
--- /dev/null
@@ -0,0 +1,328 @@
+/******************************************************************************
+ ** \file bbd_bridge_c.c  BbdBridge is a "mini-RpcEngine" inside the BBD
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_bridge_c.h"
+#include "bbd_engine.h"
+#include "rpc_codec_c.h"
+#include "transport_layer_c.h"
+#include "bbd_packet_layer_c.h"
+#include <linux/memory.h>
+
+static bool BbdBridge_CheckPacketSanity(struct BbdBridge *p,
+                unsigned char *pucData, unsigned short usSize);
+
+static void BbdBridge_OnRpcReceived(struct BbdBridge *p,
+                unsigned short usRpcId,
+                unsigned char *pRpcPayload, unsigned short usRpcLen,
+                unsigned char *pPacket,     unsigned short usPacketLen);
+
+/*------------------------------------------------------------------------------
+ *
+ *      Constructor()
+ *
+ *------------------------------------------------------------------------------
+ */
+
+struct BbdBridge *BbdBridge_BbdBridge(struct BbdBridge *p,
+                                      struct sITransportLayerCb* rCallbacks)
+{
+    p->callback = rCallbacks;
+    TransportLayer_TransportLayer(&p->m_otTL, rCallbacks, "BBDtl");
+    p->m_pRpcDecoderHead = 0;
+    StreamEncoder_StreamEncoder(&p->m_otStreamEncoder,
+                    p->m_ucStreamBuffer,
+                    sizeof(p->m_ucStreamBuffer));
+    p->m_uiTransactionPayloadSize = 0;
+    return p;
+}
+
+void BbdBridge_dtor(struct BbdBridge *p)
+{
+    TransportLayer_dtor(&p->m_otTL);
+}
+
+void BbdBridge_RegisterRpcDecoder(struct BbdBridge *p,
+                                  struct sRpcDecoder* pRpc)
+{
+    p->m_pRpcDecoderHead = pRpc;
+}
+
+void BbdBridge_UnregisterRpcDecoder(struct BbdBridge   *p,
+                                    struct sRpcDecoder *pRpcDecoder)
+{
+    p->m_pRpcDecoderHead = NULL;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      OnPacketReceived()
+ *
+ *  Convert the output of normal transactions from the ESW PacketLayer
+ *  into separate RPCs and send the data to the RpcEngine:
+ *      - The only fully decoded RPCs are sensor responses.  These are
+ *        sent directly to the SHMD.
+ *      - packet data goes to /dev/bbd_packet
+ *
+ *------------------------------------------------------------------------------
+ */
+
+void BbdBridge_OnPacketReceived(struct sTransportLayer* pp,
+                        unsigned char *pucData,
+                        unsigned short usSize)
+{
+       struct BbdBridge* p = (struct BbdBridge *) pp;
+       if (BbdBridge_CheckPacketSanity(p, pucData, usSize))
+       {
+               long lSize = (long)usSize;
+
+               while (lSize > 0)
+               {
+                       unsigned char* pucDataOrig =  pucData;
+                       unsigned short usRpcId     = *pucData++;
+                       unsigned short usRpcLen;
+                       lSize--;
+
+                       if (usRpcId&0x80)
+                       {
+                               usRpcId &= ~0x80;
+                               usRpcId <<= 8;
+                               usRpcId |= *pucData++; lSize--;
+                       }
+
+                       usRpcLen = *pucData++; lSize--;
+                       if (usRpcLen&0x80)
+                       {
+                               usRpcLen &= ~0x80;
+                               usRpcLen <<= 8;
+                               usRpcLen |= *pucData++; lSize--;
+                       }
+
+                       BbdBridge_OnRpcReceived(p, usRpcId, pucData, usRpcLen,
+                                       pucDataOrig, usRpcLen+pucData-pucDataOrig);
+                       pucData += usRpcLen;
+                       lSize -= usRpcLen;
+               }
+       }
+       else
+       {
+               p->callback->OnException(p->callback, __FILE__, __LINE__);
+       }
+}
+
+
+bool BbdBridge_CheckPacketSanity(struct BbdBridge* p,
+                        unsigned char *pucData, unsigned short usSize)
+{
+    long lSize = (long) usSize;
+    while (lSize > 0)
+    {
+        unsigned short usRpcId = *pucData++;
+        unsigned short usRpcLen;
+        lSize--;
+
+        if (usRpcId&0x80)
+        {
+            usRpcId &= ~0x80;
+            usRpcId <<= 8;
+            usRpcId |= *pucData++; lSize--;
+        }
+
+        usRpcLen = *pucData++; lSize--;
+        if (usRpcLen&0x80)
+        {
+            usRpcLen &= ~0x80;
+            usRpcLen <<= 8;
+            usRpcLen |= *pucData++; lSize--;
+        }
+
+        pucData += usRpcLen;
+        lSize -= usRpcLen;
+    }
+
+    return lSize == 0;
+}
+
+
+void BbdBridge_OnRpcReceived(struct BbdBridge *p,
+                             unsigned short    usRpcId,
+                             unsigned char    *pRpcPayload,
+                             unsigned short    usRpcLen,
+                             unsigned char    *pPacket,
+                             unsigned short    usPacketLen)
+{
+    struct sStreamDecoder str;
+    struct sRpcDecoder*   pDecoder = p->m_pRpcDecoderHead;
+
+    StreamDecoder_StreamDecoder(&str, pRpcPayload, usRpcLen);
+
+    /* Check our one decoder (sensors) */
+    if (pDecoder && pDecoder->cb(pDecoder, usRpcId, &str))
+    {
+        /* ensure the stream has been emptied completely and did not go beyond
+         */
+        if (StreamCodec_GetAvailableSize(&str))
+        {
+            p->callback->OnException(p->callback,__FILE__, __LINE__);
+        }
+        else if (StreamCodec_Fail(&str))
+        {
+            p->callback->OnException(p->callback,__FILE__, __LINE__);
+        }
+    }
+    else
+    {
+        /* Send this data upwards, to the LHD. */
+        p->callback->OnDataToLhd(p->callback, pPacket, usPacketLen);
+    }
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      SendSensorData()
+ *
+ *  Convert a raw sensor data stream from the SHMD into and RPC
+ *  and send the data to the packet layer.
+ *
+ *  This is a "mini RpcEngine"
+ *
+ *------------------------------------------------------------------------------
+ */
+
+bool BbdBridge_SendSensorData(struct BbdBridge* p,
+                unsigned char* pSensorData, unsigned short size)
+{
+    if (BbdEngine_Lock(__LINE__)) {
+           struct sStreamEncoder* str = &p->m_otStreamEncoder;
+           StreamCodec_Reset      (str);
+           StreamEncoder_PutU16   (str, size);
+           StreamEncoder_PutBuffer(str, pSensorData, size);
+
+           if (StreamCodec_Fail(str))
+           {
+               BbdEngine_Unlock();
+               return false;
+           }
+           if (!BbdBridge_AddRpc(p, RPC_DEFINITION(IRpcSensorRequest, Data)))
+           {
+               BbdEngine_Unlock();
+               return false;
+           }
+           TransportLayer_SendPacket(&p->m_otTL,
+                           p->m_aucTransactionPayload,
+                           p->m_uiTransactionPayloadSize);
+           p->m_uiTransactionPayloadSize = 0;
+
+               BbdEngine_Unlock();
+           return true;
+    }
+    return false;
+}
+
+bool BbdBridge_AddRpc(struct BbdBridge* p, unsigned short usRpcId)
+{
+    struct sStreamCodec* str   = &p->m_otStreamEncoder;
+    unsigned short usRpcLen   = StreamCodec_GetOffset(str);
+    unsigned int   uiNumBytes = usRpcLen +1 +1;
+                                    /* 1 for usRpcId, 1 for usRpcLen*/
+
+    if (usRpcId > 128)          /* large RPC IDs use 2 bytes */
+        ++uiNumBytes;
+    if (usRpcLen > 128)
+        ++uiNumBytes;
+
+    if ((p->m_uiTransactionPayloadSize+uiNumBytes) >= MAX_OUTGOING_PACKET_SIZE)
+    {
+        /* not enough space */
+        return false;
+        /* ASSERT(0);  // too many RPCs! doesn't fit inside the TL */
+    }
+
+    if (usRpcId >= 0x80)
+        p->m_aucTransactionPayload[p->m_uiTransactionPayloadSize++] =
+                        ((usRpcId>>8) & 0xFF) | 0x80;
+    p->m_aucTransactionPayload[p->m_uiTransactionPayloadSize++] = usRpcId&0xFF;
+
+    if (usRpcLen >= 0x80)
+        p->m_aucTransactionPayload[p->m_uiTransactionPayloadSize++] =
+                        ((usRpcLen>>8) & 0xFF) | 0x80;
+    p->m_aucTransactionPayload[p->m_uiTransactionPayloadSize++] = usRpcLen&0xFF;
+
+    memcpy(&p->m_aucTransactionPayload[p->m_uiTransactionPayloadSize],
+                        StreamCodec_GetStreamBuffer(str),
+                        StreamCodec_GetOffset      (str)  );
+    p->m_uiTransactionPayloadSize += usRpcLen;
+    return true;
+}
+
+/* called when LHD has a packet to send */
+void BbdBridge_SendPacket(struct BbdBridge *p, unsigned char* pkt, size_t len)
+{
+    if (!BbdEngine_Lock(__LINE__)) return;
+    BbdTransportLayer_SendPacket(&p->m_otTL, pkt, len);
+    BbdEngine_Unlock();
+}
+
+bool BbdBridge_SendReliablePacket(struct BbdBridge *p,
+                struct sBbdReliableTransaction *trans)
+{
+    bool result = false;
+    if (BbdEngine_Lock(__LINE__)) {
+        result = BbdTransportLayer_SendReliablePacket(&p->m_otTL, trans);
+        BbdEngine_Unlock();
+    }
+    return result;
+}
+
+bool BbdBridge_SetControlMessage(struct BbdBridge *p, char *msg)
+{
+    bool result = false;
+    if (BbdEngine_Lock(__LINE__)) {
+        result = BbdTransportLayer_SetControlMessage(&p->m_otTL, msg);
+        BbdEngine_Unlock();
+    }
+    return result;
+}
+
+/* called when remote data are received */
+
+void BbdBridge_SetData(struct BbdBridge *p,
+                const unsigned char *pucData,
+                unsigned short usSize)
+{
+    if (!BbdEngine_Lock(__LINE__)) return;
+    if (BbdTransportLayer_IsPassThrough(&p->m_otTL))
+    {
+        p->callback->OnDataToLhd(p->callback, pucData, usSize);
+    }
+    else
+    {
+        TransportLayer_SetData(&p->m_otTL, pucData, usSize);
+    }
+    BbdEngine_Unlock();
+}
+
+/* Provide a StreamEncoder that can be used when building a transaction */
+
+struct sStreamEncoder* BbdBridge_GetStreamEncoder(struct BbdBridge *p)
+{
+    return &p->m_otStreamEncoder;
+}
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.h b/drivers/sensors/brcm/bbdpl1/transport/bbd_bridge_c.h
new file mode 100644 (file)
index 0000000..2632a34
--- /dev/null
@@ -0,0 +1,138 @@
+/****************************************************************************** 
+ ** \file bbd_bridge_c.h  TransportLayer inside the BBD
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef BBD_BRIDGE_C_H  // {
+#define BBD_BRIDGE_C_H
+
+#include <linux/string.h>
+
+/* #include "rpc_engine.h" */
+#include "transport_layer_c.h"
+#include "../utils/stream_codec_c.h"
+
+#define MAX_RPC_HEADER_SIZE   4                           /* 2 for SeqId, 2 for Size */
+#define MAX_TRANSACTION_SIZE  MAX_OUTGOING_PACKET_SIZE    /* maximum size per transaction */
+#define MAX_RPC_PAYLOAD       (MAX_TRANSACTION_SIZE-MAX_RPC_HEADER_SIZE) /* maximum size per RPC payload */
+
+typedef bool (*ProcessRpc) (void* data, unsigned short usRpcId,
+                                struct sStreamDecoder *rStream);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sRpcDecoder
+{
+    ProcessRpc          cb;
+    void               *data;
+    struct sRpcDecoder *m_pNext;
+};
+
+/**
+* The BbdBridge class is a "mini RPC engine" that resides inside the BBD Linux
+* device driver.  BBD means "Broadcom Bridge Driver".
+*
+* The BbdBridge has these features and device channels:
+*
+*   LHD-->BBD
+*       receives packets from the LHD via /dev/bbd_packet
+*       receives reliable packets from the LHD via /dev/bbd_reliable
+*       receives control strings via /dev/bbd_control
+*               reliable sync request
+*               enable/disable the packet layer 
+*
+*   LHD<--BBD
+*       sends packets to the LHD via /dev/bbd_packet
+*       sends reliable packet acknowledgements to the LHD via /dev/bbd_reliable
+*       sends control results to /dev/bbd_control:
+*               reliable sync completed
+*
+*   SHMD<--BBD
+*       supports ONE RPC callback for sensors.  This data comes from the shmd device
+*       driver interface.
+*   SHMD-->BBD
+*       Converts the raw sensor data into an RPC suitable for consumption by the ESW
+*       and transport layer.  Only normal transactions are supported.
+*
+*   BBD internals
+*       Maintains a packet layer that is the peer of the ESW's packet layer.
+*       Has an option to disable this packet layer (for testing intermediate steps).
+*       The packet layer is a BbdTransportLayer (slightly modified) TransportLayer
+*
+*   SHMD-->LHD
+*       Reset request string.  So far, doesn't affect BbdBridge.
+*
+*   SHMD<--LHD
+*       ESW status messages (READY, NOTREADY, CRASHED).
+*/
+
+struct BbdBridge 
+{
+    struct sTransportLayer    m_otTL;         /* BbdBridge-->TransportLayer */
+    struct sITransportLayerCb* callback;       /* BBD<--BbdBridge     */
+
+    /* pointer to the first decoder. If more are registered, then
+     * they are added to a linked list
+     */
+    struct sRpcDecoder* m_pRpcDecoderHead;
+
+    /* place to hold a (sensor) packet before it is sent */
+    struct sStreamEncoder m_otStreamEncoder;
+    unsigned char m_ucStreamBuffer       [MAX_RPC_PAYLOAD         ];
+    unsigned char m_aucTransactionPayload[MAX_OUTGOING_PACKET_SIZE];
+    unsigned int  m_uiTransactionPayloadSize;
+};
+
+struct BbdBridge *BbdBridge_BbdBridge(struct BbdBridge *p,
+                                      struct sITransportLayerCb* rCallbacks);
+void BbdBridge_dtor(struct BbdBridge *p);
+
+void BbdBridge_RegisterRpcDecoder  (struct BbdBridge *p, struct sRpcDecoder *pRpcDecoder);
+void BbdBridge_UnregisterRpcDecoder(struct BbdBridge *p, struct sRpcDecoder *pRpcDecoder);
+
+bool BbdBridge_AddRpc(struct BbdBridge *p, unsigned short usRpcId);
+bool BbdBridge_SendSensorData(struct BbdBridge *p, unsigned char* data, unsigned short size);
+
+void BbdBridge_SetPassThrough(struct BbdBridge *p, bool passthru);
+
+/* called when LHD has a packet to send */
+void BbdBridge_SendPacket(struct BbdBridge *p, unsigned char* data, size_t len);
+bool BbdBridge_SendReliablePacket(struct BbdBridge *p, struct sBbdReliableTransaction *trans);
+bool BbdBridge_SetControlMessage(struct BbdBridge *p, char *msg);
+
+/* called when remote data are received */
+void BbdBridge_SetData(struct BbdBridge *p, const unsigned char *pData, unsigned short usSize);
+
+/* called when remote packet is decoded */
+void BbdBridge_OnPacketReceived(struct sTransportLayer* p,
+                        unsigned char *pucData,
+                        unsigned short usSize);
+
+/* Provide a StreamEncoder that can be used when building a transaction */
+struct sStreamEncoder* BbdBridge_GetStreamEncoder(struct BbdBridge *p);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // } BBD_BRIDGE_H
+
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_engine.c b/drivers/sensors/brcm/bbdpl1/transport/bbd_engine.c
new file mode 100644 (file)
index 0000000..eeb618b
--- /dev/null
@@ -0,0 +1,417 @@
+/****************************************************************************** 
+ ** \file bbd_engine.c  Engine to control the BBD bridge
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "../bbd_internal.h"
+#include "bbd_engine.h"
+#include "bbd_bridge_c.h"
+#include "../utils/stream_codec_c.h"
+#include "rpc_codec_c.h"
+#include "../utils/bbd_utils.h"
+#include "../bbd_ifc.h"
+
+#include <linux/workqueue.h>
+
+void BbdEngine_callback(struct sITransportLayerCb *p, struct BbdEngine *eng);
+void BbdEngine_SetUp(struct BbdEngine *p);
+
+ssize_t bbd_send_packet(unsigned char *pbuff, size_t size);
+
+//----------------------------------------------------------------------------
+//
+//      BBD Engine
+//
+//----------------------------------------------------------------------------
+
+bool BbdEngine_OnControlMessageToSend(void* p, const char* pcMsg)
+{
+    ssize_t len = strlen(pcMsg) + 1;
+    ssize_t res = bbd_on_read(BBD_MINOR_CONTROL, (unsigned char*)pcMsg, len);
+    return len == res;
+}
+
+// The synchronization with the remote side is complete, you can start using the
+// RpcEngine to communicate with the remote side
+void BbdEngine_OnRemoteSyncComplete(void* p)
+{
+    BbdEngine_OnControlMessageToSend(p, BBD_CTRL_PL_REMOTE_SYNC_COMPLETE);
+}
+
+// GetStats() is needed when the PL is pushed out of the TL into the BBD.
+bool BbdEngine_GetStats(void* p, struct stTransportLayerStats *rStats)
+{
+    return false;
+}
+
+/* Could also use the jiq, but I don't see how to delay the
+ * scheduling of it.  So use a fully-featured work queue.
+ */
+static struct workqueue_struct *workq; /*  = 0; ** Linux code standard: must assume static is cleared to zero */
+static struct delayed_work      bbd_tick_work;
+
+static void BbdEngine_Tick(struct work_struct *work)
+{
+    printk(KERN_INFO"%s()\n", __func__);
+    gpbbd_dev->bbd_engine.tickWorking = false;
+    bbd_on_read(BBD_MINOR_CONTROL, BBD_CTRL_TICK, sizeof(BBD_CTRL_TICK));
+}
+
+static void BbdEngine_StartWork(struct BbdEngine* p)
+{
+    if (p && p->constructed && !workq) {
+        p->tickWorking = false;
+        workq = create_singlethread_workqueue("BbdTick");
+        INIT_DELAYED_WORK(&bbd_tick_work, BbdEngine_Tick);
+    }
+}
+
+static void BbdEngine_StopWork(struct BbdEngine* p)
+{
+    const char              *workq_message = "No";
+
+    cancel_delayed_work(&bbd_tick_work);
+
+    if (workq) {
+        flush_workqueue(workq);
+        workq_message = "Destroyed";
+        destroy_workqueue(workq);
+        workq = 0;
+    }
+}
+
+void BbdEngine_Close(struct BbdEngine* p)
+{
+    if (p && p->constructed && p->open) {
+        FUNC();
+        p->open = false;
+        BbdEngine_Lock(__LINE__);      //should lock BBD here. Otherwise it may crash while handling packet.
+        BbdBridge_dtor(&p->bridge);
+        BbdEngine_StopWork(p);
+        BbdEngine_Unlock();
+    }
+}
+
+struct BbdEngine* BbdEngine_Open(struct BbdEngine* p)
+{
+    if (p && p->constructed && !p->open) {
+        FUNC();
+        p->open = true;
+        BbdEngine_StartWork(p);
+        BbdBridge_BbdBridge(&p->bridge,  &p->callback);
+        BbdEngine_SetUp(p);
+    }
+    return p;
+}
+
+struct BbdEngine* BbdEngine_BbdEngine(struct BbdEngine* p)
+{
+    if (p && !p->constructed) {
+        FUNC();
+        mutex_init(&p->lock);
+        workq = 0;
+        p->constructed = true;
+    }
+    return p;
+}
+
+void BbdEngine_dtor(struct BbdEngine* p)
+{
+    if (p && p->constructed) {
+        BbdEngine_Close(p);
+        p->constructed = false;
+    }
+}
+
+#define       LOCK_FEATURE
+#undef  DEBUG_LOCK_FEATURE
+
+bool BbdEngine_Lock(int from)
+{
+#ifdef LOCK_FEATURE
+#ifdef DEBUG_LOCK_FEATURE
+    FUNI(from);
+    if (gpbbd_dev && gpbbd_dev->bbd_engine.constructed) {
+        if (mutex_is_locked(&gpbbd_dev->bbd_engine.lock))
+            FUNS("locked!");
+    }
+    else
+        FUNS("uninit");
+#endif
+    if (gpbbd_dev && gpbbd_dev->bbd_engine.constructed) {
+        mutex_lock(&gpbbd_dev->bbd_engine.lock);
+#ifdef DEBUG_LOCK_FEATURE
+            FUNS("locked{...");
+#endif
+        return true;
+    }
+    return false;
+#else
+    return (gpbbd_dev && gpbbd_dev->bbd_engine.constructed);
+#endif
+}
+
+void BbdEngine_Unlock(void)
+{
+#ifdef LOCK_FEATURE
+    if (gpbbd_dev) {//  && gpbbd_dev->bbd_engine.constructed)
+#ifdef DEBUG_LOCK_FEATURE
+        FUNS("...} unlocked");
+#endif
+        mutex_unlock(&gpbbd_dev->bbd_engine.lock);
+    }
+#endif
+}
+
+ssize_t BbdEngine_SendSensorData(struct BbdEngine* p, unsigned char *pbuff, size_t size)
+{
+    if (BbdBridge_SendSensorData(&p->bridge, pbuff, size))
+        return size;
+    return -EINVAL;
+}
+
+bool BbdEngine_AddRpc(unsigned short usRpcId, struct sStreamCodec *rRpcStream);
+
+/* send sensor data to the SHMD */
+extern ssize_t bbd_sensor_write_internal(const char *sensorData, size_t size);
+
+
+bool SensorRpc_ProcessRpc(void* p, unsigned short usRpcId,
+                        struct sStreamDecoder *str)
+{
+    if (usRpcId == RPC_DEFINITION(IRpcSensorResponse, Data))
+    {
+        unsigned short size       = StreamDecoder_GetU16(str);
+        unsigned char* sensorData = StreamDecoder_GetBuffer(str, size);
+       ssize_t result = bbd_sensor_write_internal(sensorData , size);
+        return ((short) result == size);
+    }
+    return false;
+}
+
+void BbdEngine_SetUp(struct BbdEngine *p)
+{
+    p->m_rpcSensor.cb      = SensorRpc_ProcessRpc;
+    p->m_rpcSensor.data    = p;
+    p->m_rpcSensor.m_pNext = 0;
+
+    BbdBridge_RegisterRpcDecoder(&p->bridge,
+                (gpbbd_dev->shmd) ? &p->m_rpcSensor : 0);
+    BbdEngine_callback(&p->callback, p);
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      BbdEngineCb{}
+ *
+ *------------------------------------------------------------------------------
+ */
+
+static struct BbdEngine *GetEngine(struct sITransportLayerCb *pp)
+{
+    return (pp) ? ((struct BbdEngine *) pp->m_callbackData) : 0;
+}
+
+
+void BbdTransportCB_OnTimerSet(struct sITransportLayerCb *pp, long lTimerMs)
+{
+    if (gpbbd_dev->bbd_engine.tickWorking) {
+        cancel_delayed_work(&bbd_tick_work); 
+        gpbbd_dev->bbd_engine.tickWorking = false;
+    }
+    if (lTimerMs > 0) {
+        unsigned long delay_jiffies = msecs_to_jiffies(lTimerMs);
+        gpbbd_dev->jiffies_to_wake = jiffies + delay_jiffies;
+        FUNI(lTimerMs);
+        gpbbd_dev->bbd_engine.tickWorking = true;
+        queue_delayed_work(workq, &bbd_tick_work, delay_jiffies);
+    }
+    else {
+        FUNC();
+        gpbbd_dev->jiffies_to_wake = 0;
+    }
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      BbdEngine_OnTimer()
+ *
+ *   Call here periodically to see if the timer should expire.
+ *
+ *   To avoid a separate thread, send nonsense message "BBD:tick" to
+ *   waken the LHD via bbd_control().  Then bbd_read() will call
+ *   BbdEngine_OnTimer().
+ *
+ *------------------------------------------------------------------------------
+ */
+
+unsigned long BbdEngine_OnTimer(void)
+{
+    struct bbd_device *p = gpbbd_dev;
+    unsigned long result = 0;
+    if (!workq || mutex_is_locked(&p->bbd_engine.lock))
+        return 0;
+
+    if (BbdEngine_Lock(__LINE__)) {
+        if (p->jiffies_to_wake)
+        {
+            if (p->jiffies_to_wake > jiffies) {
+                result = p->jiffies_to_wake - jiffies;
+            }
+            else {
+                p->jiffies_to_wake = 0;
+                FUNC();
+                TransportLayer_Tick(&p->bbd_engine.bridge.m_otTL);
+            }
+        }
+        BbdEngine_Unlock();
+    }
+    return result;
+}
+
+unsigned long BbdTransportCB_OnTimeMsRequest(struct sITransportLayerCb *pp)
+{
+    return jiffies_to_msecs(jiffies);
+}
+
+
+/*------------------------------------------------------------------------------
+ *
+ *      Callbacks
+ *
+ * Connect BBD output to the real:
+ *
+ *  - TTY - bbd_tty.c
+ *  - SSI-SPI - TODO: add code here to connect to the SPI driver:
+ *
+ *------------------------------------------------------------------------------
+ */
+
+extern int bbd_tty_send(unsigned char *buf, int count);
+extern int bbd_ssi_spi_send(unsigned char *buf, int count);
+
+void BbdTransportCB_OnDataToSend_TTY(struct sITransportLayerCb *pp,
+            unsigned char *data, unsigned long len)
+{
+        bbd_tty_send(data, len);
+}
+
+void BbdTransportCB_OnDataToSend_SSI_SPI(struct sITransportLayerCb *pp,
+            unsigned char *data, unsigned long len)
+{
+        bbd_ssi_spi_send(data, len);
+}
+
+void BbdTransportCB_OnReliableAck(struct sITransportLayerCb *pp,
+                struct sBbdReliableTransaction* trans)
+{
+        bbd_on_read(BBD_MINOR_RELIABLE, (unsigned char*) trans, sizeof(*trans));
+}
+
+bool BbdTransportCB_OnControlMessageToSend(struct sITransportLayerCb *pp,
+                char* pcMsg)
+{
+    return BbdEngine_OnControlMessageToSend(pp, pcMsg);
+}
+
+void BbdTransportCB_OnCommunicationError(struct sITransportLayerCb *pp)
+{
+    /* struct BbdEngine *eng = GetEngine(pp); */
+    /* FUNC(); */
+    bbd_on_read(BBD_MINOR_CONTROL, 
+               BBD_CTRL_PL_ON_COMMUNICATION_ERROR,
+        sizeof(BBD_CTRL_PL_ON_COMMUNICATION_ERROR));
+}
+
+
+void BbdTransportCB_OnPacketReceived(struct sITransportLayerCb *pp,
+                unsigned char *pucData, unsigned short usSize)
+{
+    struct BbdEngine *eng = GetEngine(pp);
+    FUNI(usSize);
+    if (eng)
+        BbdBridge_OnPacketReceived(&eng->bridge.m_otTL, pucData, usSize);
+}
+
+/* an internal error occured */
+void BbdTransportCB_OnException(struct sITransportLayerCb *pp,
+        const char filename[], unsigned int uiLine)
+{
+    char  buf[80] = {0};
+    char* prefix = "";
+    int  len = strlen(filename);
+
+    FUNSI(filename, uiLine);
+    if (len > 30)
+    {
+        prefix = "...";
+        filename += len - 30;
+    }
+    snprintf(buf, sizeof(buf)-1, BBD_CTRL_PL_ON_EXCEPTION
+                "%s%s/%d", prefix, filename, uiLine);
+    BbdEngine_OnControlMessageToSend(pp, buf);
+}
+
+void BbdTransportCB_OnRemoteSyncComplete(struct sITransportLayerCb *pp)
+{
+    FUNC();
+    BbdTransportCB_OnControlMessageToSend(pp, BBD_CTRL_PL_REMOTE_SYNC_COMPLETE);
+}
+
+void BbdTransportCB_OnDataToLhd(struct sITransportLayerCb* pp,
+                const unsigned char *data, unsigned short size)
+{
+    FUNI(size);
+    bbd_on_read(BBD_MINOR_PACKET, data, size);
+}
+
+/*------------------------------------------------------------------------------
+ *
+ *      Callbacks
+ *
+ *------------------------------------------------------------------------------
+ */
+
+void BbdEngine_callback(struct sITransportLayerCb *p, struct BbdEngine *eng)
+{
+    p->m_callbackData       = eng;
+    p->OnTimerSet           = BbdTransportCB_OnTimerSet;
+    p->OnTimeMsRequest      = BbdTransportCB_OnTimeMsRequest;
+    p->OnCommunicationError = BbdTransportCB_OnCommunicationError;
+    p->OnPacketReceived     = BbdTransportCB_OnPacketReceived;
+    p->OnException          = BbdTransportCB_OnException;
+    p->OnRemoteSyncComplete = BbdTransportCB_OnRemoteSyncComplete;
+    p->OnReliableAck        = BbdTransportCB_OnReliableAck;
+    p->OnDataToLhd          = BbdTransportCB_OnDataToLhd;
+
+    p->OnDataToSend         = BbdTransportCB_OnDataToSend_SSI_SPI;
+    switch(gpbbd_dev->sio_type)
+    {
+    case BBD_SERIAL_TTY:
+        p->OnDataToSend = BbdTransportCB_OnDataToSend_TTY;
+        break;
+    case BBD_SERIAL_SPI:
+        p->OnDataToSend = BbdTransportCB_OnDataToSend_SSI_SPI;
+        break;
+    default:
+        p->OnDataToSend = BbdTransportCB_OnDataToSend_SSI_SPI;
+        break;
+    }
+}
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_engine.h b/drivers/sensors/brcm/bbdpl1/transport/bbd_engine.h
new file mode 100644 (file)
index 0000000..33868d7
--- /dev/null
@@ -0,0 +1,60 @@
+/****************************************************************************** 
+ ** \file bbd_engine.h  Engine to control the BBD bridge
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef BBD_ENGINE_H_ /* { */
+#define BBD_ENGINE_H_
+
+#include "bbd_bridge_c.h"
+#include <linux/mutex.h>
+
+//----------------------------------------------------------------------------
+//
+//      BBD Engine
+//
+//  Thin wrapper for the BbdBridge class to connect it to the bbd device driver.
+//
+//----------------------------------------------------------------------------
+
+struct BbdEngine
+{
+    struct BbdBridge   bridge;
+    struct mutex       lock;
+    struct sRpcDecoder m_rpcSensor;
+    unsigned char      m_aucTransactionPayload[MAX_OUTGOING_PACKET_SIZE];
+    unsigned long      m_uiTransactionPayloadSize;
+    struct sITransportLayerCb callback;
+    bool                      tickWorking;
+    bool                      constructed;
+    bool                      open;
+};
+
+struct BbdEngine* BbdEngine_BbdEngine(struct BbdEngine* p);
+
+bool BbdEngine_OnControlMessageToSend(void* p, const char* pcMsg);
+void BbdEngine_dtor(struct BbdEngine* p);
+ssize_t BbdEngine_SendSensorData(struct BbdEngine* p, unsigned char *pbuff, size_t size);
+void BbdEngine_SetUp(struct BbdEngine *p);
+unsigned long BbdEngine_OnTimer(void);
+bool BbdEngine_Lock  (int from);
+void BbdEngine_Unlock(void);
+
+#endif // } BBD_ENGINE_H_
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.c b/drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.c
new file mode 100644 (file)
index 0000000..a901885
--- /dev/null
@@ -0,0 +1,124 @@
+/****************************************************************************** 
+ ** \file bbd_packet_layer_c.c  TransportLayer inside the BBD
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_packet_layer_c.h"
+#include <linux/string.h>
+
+struct sBbdReliableTransaction* BbdReliableTransaction_init(struct sBbdReliableTransaction* p)
+{
+    memset(p, 0, sizeof(*p));
+    return p;
+}
+
+int bbd_tty_autobaud(void);
+
+bool BbdTransportLayer_SetControlMessage(struct sTransportLayer* p,
+                char* pcMessage)
+{
+    if (strstr(pcMessage, BBD_CTRL_PASSTHRU_ON))
+    {
+            p->m_bPassThrough = true;
+            return true;
+    }
+    if (strstr(pcMessage, BBD_CTRL_PASSTHRU_OFF))
+    {
+            p->m_bPassThrough = false;
+            return true;
+    }
+    if (strstr(pcMessage, BBD_CTRL_PL_START_REMOTE_SYNC))
+    {
+            TransportLayer_StartRemoteSync(p);
+            return true;
+    }
+    return false;
+}
+
+/* The BbdTransportLayer does reliable packet transfers via
+ * the BbdReliableTransaction structure.
+ */
+
+bool BbdTransportLayer_SendReliablePacket(struct sTransportLayer* p,
+                        struct sBbdReliableTransaction* trans)
+{
+    if (BbdTransportLayer_IsPassThrough(p))
+    {
+        p->m_callback->OnException(p->m_callback, __FILE__, __LINE__);
+        return false;
+    }
+    return TransportLayer_SendReliablePacket(p, trans->pucData, trans->usSize,
+                                         trans->cb, trans->pCbData, trans->ulCbData);
+}
+
+/* Send the reliable ack back to the user layer as we cannot call
+ * the BBD directly.
+ */
+
+void BbdTransportLayer_DispatchReliableAck(struct sTransportLayer* p,
+                        struct stCallback *resp)
+{
+    struct sBbdReliableTransaction trans;
+    if (BbdTransportLayer_IsPassThrough(p))
+    {
+        p->m_callback->OnException(p->m_callback, __FILE__, __LINE__);
+        return;
+    }
+    BbdReliableTransaction_init(&trans);
+    trans.cb       = resp->cb;
+    trans.pCbData  = resp->pCbData;
+    trans.ulCbData = resp->ulCbData;
+    
+    /* notify user the packet was delivered */
+    p->m_callback->OnReliableAck(p->m_callback, &trans);
+}
+
+void BbdTransportLayer_SetData(struct sTransportLayer* p,
+                    unsigned char* pucData, unsigned short usSize)
+{
+    TransportLayer_SetData(p, pucData, usSize);
+}
+
+bool BbdTransportLayer_IsPassThrough(const struct sTransportLayer * const p)
+{
+        return p->m_bPassThrough;
+}
+
+void BbdTransportLayer_SetPassThrough(struct sTransportLayer *p,
+                bool bPassThrough)
+{
+        p->m_bPassThrough = bPassThrough;
+}
+
+/* Send a packet to the remote TransportLayer. */
+
+void BbdTransportLayer_SendPacket(struct sTransportLayer *p,
+                unsigned char *pucData, unsigned short usSize)
+{
+    if (BbdTransportLayer_IsPassThrough(p))
+    {
+        p->m_callback->OnDataToSend(p->m_callback, pucData, usSize);
+    }
+    else
+    {
+        TransportLayer_SendPacket(p, pucData, usSize);
+    }
+}
+
diff --git a/drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.h b/drivers/sensors/brcm/bbdpl1/transport/bbd_packet_layer_c.h
new file mode 100644 (file)
index 0000000..cfd6c6b
--- /dev/null
@@ -0,0 +1,61 @@
+/****************************************************************************** 
+ ** \file bbd_packet_layer_c.h  Bridge (or mini-RpcEngine) inside the BBD
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef BBD_PACKET_LAYER_C_H  // {
+#define BBD_PACKET_LAYER_C_H
+
+#include "transport_layer_c.h"
+#include "../bbd_ifc.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // } defined __cplusplus
+
+
+/* --------------------  BBD-specific methods ------------------- */
+
+bool BbdTransportLayer_IsPassThrough(const struct sTransportLayer * const p);
+void BbdTransportLayer_SetPassThrough(struct sTransportLayer *p,
+                bool bPassThrough);
+
+/* Send a packet to the remote TransportLayer. */
+void BbdTransportLayer_SendPacket(struct sTransportLayer *p,
+                        unsigned char *pucData, unsigned short usSize);
+
+/* kernel-space reliable packet API */
+bool BbdTransportLayer_SendReliablePacket(struct sTransportLayer *p, struct sBbdReliableTransaction* trans);
+
+void BbdTransportLayer_SetData(struct sTransportLayer *p,
+                        unsigned char* pucData, unsigned short usSize);
+
+bool BbdTransportLayer_SetControlMessage(struct sTransportLayer *p,
+                        char* pcMessage);
+
+void BbdTransportLayer_DispatchReliableAck(struct sTransportLayer *p,
+                        struct stCallback *resp);
+
+
+#ifdef __cplusplus
+                        }
+#endif  // } defined __cplusplus
+
+#endif  // } BBD_PACKET_LAYER_H
diff --git a/drivers/sensors/brcm/bbdpl1/transport/rpc_codec_c.h b/drivers/sensors/brcm/bbdpl1/transport/rpc_codec_c.h
new file mode 100644 (file)
index 0000000..d1b27e2
--- /dev/null
@@ -0,0 +1,81 @@
+/****************************************************************************** 
+ * \file rpc_codec_c.h  RPC Codec class declaration
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef RPC_CODEC_C_H
+#define RPC_CODEC_C_H
+
+
+/* Enumeration of all the RPCs for the codec. DO NOT CHANGE THE ORDER,
+ * DELETE, or INSERT anything to keep backward compatibility.
+ */
+#define RPC_DEFINITION(klass, method) RPC_##klass##_##method
+enum
+{
+     RPC_DEFINITION(IRpcA, A)
+    ,RPC_DEFINITION(IRpcA, B)
+    ,RPC_DEFINITION(IRpcA, C)
+
+    ,RPC_DEFINITION(IRpcB, A)
+    ,RPC_DEFINITION(IRpcB, B)
+
+    ,RPC_DEFINITION(IRpcC, A)
+    ,RPC_DEFINITION(IRpcC, B)
+    ,RPC_DEFINITION(IRpcC, C)
+
+    ,RPC_DEFINITION(IRpcD, A)
+
+    ,RPC_DEFINITION(IRpcE, A)
+    ,RPC_DEFINITION(IRpcE, B)
+
+    ,RPC_DEFINITION(IRpcF, A)
+    ,RPC_DEFINITION(IRpcF, B)
+    ,RPC_DEFINITION(IRpcF, C)
+
+    ,RPC_DEFINITION(IRpcG, A)
+    ,RPC_DEFINITION(IRpcG, B)
+    ,RPC_DEFINITION(IRpcG, C)
+    ,RPC_DEFINITION(IRpcG, D)
+    ,RPC_DEFINITION(IRpcG, E)
+
+    ,RPC_DEFINITION(IRpcH, A)
+    ,RPC_DEFINITION(IRpcH, B)
+    ,RPC_DEFINITION(IRpcH, C)
+    ,RPC_DEFINITION(IRpcH, D)
+
+    ,RPC_DEFINITION(IRpcI, A)
+    ,RPC_DEFINITION(IRpcI, B)
+    ,RPC_DEFINITION(IRpcI, C)
+
+    ,RPC_DEFINITION(IRpcJ, A)
+    ,RPC_DEFINITION(IRpcJ, B)
+
+    ,RPC_DEFINITION(IRpcK, A)
+    ,RPC_DEFINITION(IRpcK, B)
+    ,RPC_DEFINITION(IRpcK, C)
+
+    ,RPC_DEFINITION(IRpcL, A)
+
+    ,RPC_DEFINITION(IRpcSensorRequest,  Data)
+    ,RPC_DEFINITION(IRpcSensorResponse, Data)
+};
+
+#endif /* RPC_CODEC_C_H */
diff --git a/drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.c b/drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.c
new file mode 100644 (file)
index 0000000..598898f
--- /dev/null
@@ -0,0 +1,1692 @@
+/******************************************************************************
+ ** \file transport_layer_c.c  TransportLayer struct definition
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * A copy of the GPL is available at
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "../utils/bbd_utils.h"
+#include "../bbd_internal.h"
+#include "bbd_packet_layer_c.h"
+#include "../utils/crc8bits_c.h"
+#include "../utils/stream_codec_c.h"
+#include "bbd_bridge_c.h"
+
+/*
+* The following are used for the software flow control (UART)
+*/
+static const unsigned char XON_CHARACTER = 0x11;
+static const unsigned char XOFF_CHARACTER = 0x13;
+
+/*
+* The following are used for the protocol.
+*/
+static const unsigned char ESCAPE_CHARACTER         = 0xB0;
+static const unsigned char SOP_CHARACTER            = 0x00;
+static const unsigned char EOP_CHARACTER            = 0x01;
+static const unsigned char ESCAPED_ESCAPE_CHARACTER = 0x03;
+static const unsigned char ESCAPED_XON_CHARACTER    = 0x04;
+static const unsigned char ESCAPED_XOFF_CHARACTER   = 0x05;
+
+/*
+* The following are the bit field definition for the flags
+*/
+static const unsigned short FLAG_PACKET_ACK      = (1<<0); // ACK of a received packet. Flag detail contains the ACK SeqId
+static const unsigned short FLAG_RELIABLE_PACKET = (1<<1); // Indicates that this is a reliable packet. Flag detail contains the remote reliable seqId
+static const unsigned short FLAG_RELIABLE_ACK    = (1<<2); // A reliable SeqId was Acked. Flag detail contains the acked reliable seqId
+static const unsigned short FLAG_RELIABLE_NACK   = (1<<3); // A reliable SeqId error was detected. Flag detail contains the last remote reliable seqId
+static const unsigned short FLAG_MSG_LOST        = (1<<4); // Remote PacketLayer detected lost packets (jumps in SeqId). The flag details contains the last remote seqId
+static const unsigned short FLAG_MSG_GARBAGE     = (1<<5); // Garbage bytes detected. The Flag details will contains the number of garbage bytes (capped to 255)
+static const unsigned short FLAG_SIZE_EXTENDED   = (1<<6); // Size of packet will have one byte extension (MSB), contained in the Flags detail
+static const unsigned short FLAG_EXTENDED        = (1<<7); // If set, then the flag details will contains a Byte representing the MSB of the 16bit flags
+static const unsigned short FLAG_INTERNAL_PACKET = (1<<8); // Packet in that message is internal, and should be processed by the TL
+static const unsigned short FLAG_IGNORE_SEQID    = (1<<9); // Remote side requested to ignore the seqId, i.e. error should not be accounted for in the stats
+
+/*
+ * Internal functions
+ */
+static void TransportLayer_ParseIncomingData(struct sTransportLayer* p,
+                        const unsigned char *pucData, unsigned short usLen);
+static bool TransportLayer_PacketReceived(struct sTransportLayer* p);
+static void TransportLayer_ReceivedReliableAck(struct sTransportLayer* p,
+                        unsigned char ucAckedReliableSeqId);
+static void TransportLayer_ReceivedReliableNack(struct sTransportLayer* p,
+                        unsigned char ucLastReceivedReliableSeqId,
+                        unsigned char ucAckedSeqId);
+static void TransportLayer_SendPacketAck(struct sTransportLayer* p,
+                        unsigned short usAckFlags);
+static unsigned long TransportLayer_EscapeDataByte(struct sTransportLayer* p,
+                        unsigned char *pucDestBuff, unsigned char ucData);
+static unsigned long TransportLayer_EscapeData(struct sTransportLayer* p,
+                        unsigned char *pucDestBuff,
+                        const unsigned char *pucSrcBuff,
+                        unsigned short usSize);
+static unsigned long TransportLayer_EscapeDataAndUpdateCrcByte(
+                        struct sTransportLayer* p,
+                        unsigned char *pucDestBuff,
+                        unsigned char ucData);
+static unsigned long TransportLayer_EscapeDataAndUpdateCrc(
+                        struct sTransportLayer* p,
+                        unsigned char *pucDestBuff,
+                        const unsigned char *pucSrcBuff,
+                        unsigned short usSize);
+static unsigned char TransportLayer_BuildAndSendPacket(
+                        struct sTransportLayer* p,
+                        unsigned short usFlags,
+                        unsigned char *pucData,
+                        unsigned short usSize,
+                        unsigned char ucReliableTxSeqId);
+static unsigned int TransportLayer_GetReliablePacketInTransitCnt(
+                        const struct sTransportLayer* const p);
+static void TransportLayer_SendInternalSeqIdRequest(struct sTransportLayer* p);
+static void TransportLayer_OnInternalPacket(struct sTransportLayer* p,
+                        unsigned char *pucData, unsigned short usSize);
+static void TransportLayer_SendInternalPacket(struct sTransportLayer* p,
+                        unsigned char ucId,
+                        const unsigned char *pucData,
+                        unsigned short usSize);
+static void TransportLayer_OnInternalSeqIdRequest(struct sTransportLayer* p,
+                        unsigned char ucReqId);
+static void TransportLayer_OnInternalSeqIdResponse(struct sTransportLayer* p,
+                        unsigned char ucReqId,
+                        unsigned char ucLastRxSeqId,
+                        unsigned char ucLastAckSeqId,
+                        unsigned char ucReliableSeqId,
+                        unsigned char ucTxSeqId,
+                        unsigned char ucTxReliableSeqId,
+                        unsigned char ucTxLastAckedSeqId);
+static void TransportLayer_OnInternalStatsRequest(struct sTransportLayer* p);
+static void TransportLayer_OnInternalStatsResponse(struct sTransportLayer* p,
+                        struct stTransportLayerStats *rStats);
+static void TransportLayer_OnInternalSettingsRequest(struct sTransportLayer* p);
+static void TransportLayer_OnInternalSettingsResponse(struct sTransportLayer* p,
+                        unsigned short usMaxOutgoingPacketSize,
+                        unsigned short usMaxIncomingPacketSize,
+                        unsigned short usReliableRetryTimeoutMs,
+                        unsigned short usReliableMaxRetry,
+                        unsigned short usReliableMaxPackets);
+
+/*
+* Protocol used to transport a packet from one TransportLayer to a remote TransportLayer
+*
+* Packet structure: |ESC|SOP|<ESCAPED DATA>|ESC|EOP|
+*     - ESC : ESCAPE_CHARACTER
+*     - SOP: SOP_CHARACTER
+*     - EOP: EOP_CHARACTER
+*     - ESCAPED_DATA: |SEQ_ID|<CRCED_DATA>|CRC|
+*         -- SEQ_ID: Running Sequence Id
+*         -- CRC: 8 bits CRC
+*         -- CRCED_DATA: |SIZE|FLAGS|FLAGS_DETAILS|<PAYLOAD>|
+*             --- SIZE: 1B containing the LSB for the size of the payload. Possible MSB contained in the FLAG_DETAIL
+*             --- FLAGS: 1B containing different flags for this packet
+*             --- FLAGS_DETAILS: 1B for each bit set in FLAGS (LSB for LSbit)
+*             --- PAYLOAD: Packet payload
+*
+*/
+
+/*
+* Internal packet types
+*/
+enum
+{
+     INT_PKT_SEQID_REQUEST     /* Request to send the Sequence Ids */
+    ,INT_PKT_SEQID_RESPONSE    /* Sequence Ids responses */
+    ,INT_PKT_STATS_REQUEST     /* Request for the remote stats to be sent */
+    ,INT_PKT_STATS_RESPONSE    /* Response with the stats */
+    ,INT_PKT_SETTINGS_REQUEST  /* Request to get internal settings of remote side */
+    ,INT_PKT_SETTINGS_RESPONSE /* Response with the settings */
+};
+
+
+/// enumeration for the state
+enum
+{
+     WAIT_FOR_ESC_SOP = 0
+    ,WAIT_FOR_SOP
+    ,WAIT_FOR_MESSAGE_COMPLETE
+    ,WAIT_FOR_EOP
+};
+
+/// Macro for returning an Exception
+#define ASSERT(_test)       {if (!(_test)) {p->m_callback->OnException(p->m_callback, __FILE__, __LINE__);}}
+#define ASSERT_RET(_test)   {if (!(_test)) {p->m_callback->OnException(p->m_callback, __FILE__, __LINE__);return;}}
+#define ASSERT_RET_0(_test) {if (!(_test)) {p->m_callback->OnException(p->m_callback, __FILE__, __LINE__);return 0;}}
+
+// Enables debug (will turn on logging)
+#define PL_DEBUG 0
+#if PL_DEBUG
+    #define PLLOG(fmt, ...) {printf("%s:",(p->m_pDebugName==NULL)?"":p->m_pDebugName);printf(fmt, ##__VA_ARGS__);}
+#else
+    #define PLLOG(fmt,...)
+#endif
+
+struct stReliableElement
+{
+    unsigned char ucReliableSeqId;
+    unsigned char ucTxSeqId;
+    unsigned char ucNumSent;
+    unsigned char *pucData;
+    bool bForceResend;
+    unsigned long ulTimestampMs;
+    unsigned short usDataSize;
+    struct stCallback sCallback;
+    struct stReliableElement *pNext;
+};
+
+struct stReliableElement* stReliableElement_stReliableElement(struct stReliableElement *p)
+{
+    memset(p, 0, sizeof(*p));
+    /* p->ucReliableSeqId = 0; */
+    /* p->ucTxSeqId = 0; */
+    /* p->ucNumSent = 0; */
+    /* p->pucData = NULL; */
+    /* p->bForceResend = false; */
+    /* p->ulTimestampMs = 0; */
+    /* p->usDataSize = 0; */
+    /* p->pNext = NULL; */
+    /* p->sCallback.cb = NULL; */
+    /* p->sCallback.pCbData = NULL; */
+    /* p->sCallback.ulCbData = 0; */
+    return p;
+}
+
+struct stTransportLayerStats* stTransportLayerStats_stTransportLayerStats(
+        struct stTransportLayerStats* p)
+{
+    memset(p, 0, sizeof(*p));
+    /* p->ulRxGarbageBytes   = 0; */
+    /* p->ulRxPacketLost   = 0; */
+    /* p->ulRemotePacketLost   = 0; */
+    /* p->ulRemoteGarbage   = 0; */
+    /* p->ulPacketSent   = 0; */
+    /* p->ulPacketReceived   = 0; */
+    /* p->ulAckReceived   = 0; */
+    /* p->ulReliablePacketSent   = 0; */
+    /* p->ulReliableRetransmit   = 0; */
+    /* p->ulReliablePacketReceived   = 0; */
+    /* p->ulMaxRetransmitCount   = 0; */
+    return p;
+}
+
+struct sTransportLayer* TransportLayer_TransportLayer(struct sTransportLayer* p,
+                            struct sITransportLayerCb *rCallback,
+                            const char *pDebugName)
+{
+    memset(p, 0, sizeof(*p));
+    p->m_pDebugName                     = pDebugName;
+    p->m_callback                       = rCallback;
+    p->m_uiParserState                  = WAIT_FOR_ESC_SOP;
+    p->m_ucLastRxSeqId                  = 0xFF;
+    p->m_ucReliableSeqId                = 0xFF;
+    p->m_ucTxLastAckedSeqId             = 0xFF;
+    p->m_bPassThrough                   = true;
+
+    /* p->m_uiRxLen                        = 0; */
+    /* p->m_ulByteCntSinceLastValidPacket  = 0; */
+    /* p->m_ucLastAckSeqId                 = 0; */
+    /* p->m_ucReliableCrc                  = 0; */
+    /* p->m_usReliableLen                  = 0; */
+    /* p->m_ucDelayAckCount                = 0; */
+    /* p->m_ucTxSeqId                      = 0; */
+    /* p->m_ucTxReliableSeqId              = 0; */
+    /* p->m_pFirstReliableEl               = NULL; */
+    /* p->m_pLastReliableEl                = NULL; */
+    /* p->m_ulReliableByteCnt              = 0; */
+    /* p->m_bWait4ReliableAckToProcessNack = false */
+    /* p->m_bOngoingSync                   = false; */
+    /* p->m_ulSyncTimestamp                = 0; */
+    /* p->m_ulRetryCnt                     = 0; */
+
+    {
+        ASSERT_COMPILE(MAX_OUTGOING_PACKET_SIZE > MAX_HEADER_SIZE && MAX_OUTGOING_PACKET_SIZE < USHRT_MAX);
+        ASSERT_COMPILE(MAX_INCOMING_PACKET_SIZE > MAX_HEADER_SIZE && MAX_INCOMING_PACKET_SIZE < USHRT_MAX);
+    }
+
+    TransportLayer_Reset(p);
+    return p;
+}
+
+void TransportLayer_dtor(struct sTransportLayer* p)
+{
+    while (p->m_pFirstReliableEl != NULL)
+    {
+        struct stReliableElement *pToRemove = p->m_pFirstReliableEl;
+        /* advance to next element */
+        p->m_pFirstReliableEl = p->m_pFirstReliableEl->pNext;
+
+        p->m_ulReliableByteCnt -= pToRemove->usDataSize;
+
+        bbd_free(pToRemove->pucData);
+        bbd_free(pToRemove);
+    }
+    /* for now assert, but we should release the memory instead */
+    ASSERT(TransportLayer_GetReliableUsage(p) == 0);
+}
+
+void TransportLayer_Reset(struct sTransportLayer* p)
+{
+    /* we cannot reset if we have ongoing reliable transactions */
+    ASSERT_RET(TransportLayer_GetReliablePacketInTransitCnt(p) == 0);
+
+    /* clear ongoing transactions . That means the user better reset
+     * at the appropriate time, or it will mess up some packets
+     */
+    p->m_uiParserState = WAIT_FOR_ESC_SOP;
+    p->m_uiRxLen = 0;
+    p->m_ulByteCntSinceLastValidPacket = 0;
+
+    p->m_ucLastRxSeqId = 0xFF;
+    p->m_ucLastAckSeqId = 0;
+    p->m_ucReliableSeqId = 0xFF;
+    p->m_ucReliableCrc = 0;
+    p->m_usReliableLen = 0;
+    p->m_ucDelayAckCount = 0;
+
+    p->m_ucTxSeqId = 0;
+    p->m_ucTxLastAckedSeqId = 0xFF;
+    p->m_ucTxReliableSeqId = 0;
+
+    p->m_bWait4ReliableAckToProcessNack = false;
+}
+
+void TransportLayer_StartRemoteSync(struct sTransportLayer* p)
+{
+    {
+    ASSERT_RET(TransportLayer_GetReliablePacketInTransitCnt(p) == 0); // we cannot start a sync if we have ongoing reliable transactions
+    ASSERT_RET(!p->m_bOngoingSync);
+    }
+
+    PLLOG("TransportLayer_RemoteSync()\n");
+    p->m_bOngoingSync = true;
+    p->m_ulRetryCnt = 0;
+
+    TransportLayer_SendInternalSeqIdRequest(p);
+
+    TransportLayer_Tick(p); // refresh internal timers
+}
+
+void TransportLayer_SendInternalSeqIdRequest(struct sTransportLayer* p)
+{
+    unsigned short usFlags = FLAG_INTERNAL_PACKET | FLAG_IGNORE_SEQID; 
+    unsigned char ucBuf[2];
+
+    p->m_ulSyncTimestamp = p->m_callback->OnTimeMsRequest(p->m_callback);
+    p->m_ulRetryCnt++;
+
+    ucBuf[0] = INT_PKT_SEQID_REQUEST;
+    ucBuf[1] = (unsigned char)(p->m_ulRetryCnt&0xFF);
+    TransportLayer_BuildAndSendPacket(p, usFlags, ucBuf, sizeof(ucBuf), 0);
+    PLLOG("TransportLayer_SendInternalSeqIdRequest(%lu, %lu)\n",
+                        p->m_ulSyncTimestamp, p->m_ulRetryCnt);
+}
+
+
+void TransportLayer_SendPacket(struct sTransportLayer* p,
+                        unsigned char *pucData, unsigned short usSize)
+{
+    ASSERT_RET(usSize <= MAX_OUTGOING_PACKET_SIZE);
+    ASSERT_RET(!p->m_bOngoingSync); // TL cannot be used during sync
+
+    /* no special flags when sending a regular packet */
+   {
+       unsigned short usFlags = 0;
+    TransportLayer_BuildAndSendPacket(p, usFlags, pucData, usSize, 0);
+    ++p->m_otCurrentStats.ulPacketSent;
+   }
+}
+
+
+unsigned char TransportLayer_BuildAndSendPacket(struct sTransportLayer* p,
+                unsigned short usFlags, unsigned char *pucData,
+                unsigned short usSize, unsigned char ucReliableTxSeqId)
+{
+    /* we should never have more than OUTGOING_PACKET_SIZE or we might
+     * have stack corruption
+     */
+    ASSERT_RET_0(usSize <= MAX_OUTGOING_PACKET_SIZE);
+    {
+    unsigned char ucSizeMSB = (usSize>>8)&0xFF;
+    unsigned char ucSizeLSB = usSize&0xFF;
+    unsigned char ucTxSeqId = p->m_ucTxSeqId++;
+    unsigned long ulPacketSize = 0;
+    unsigned int i = 0;
+
+    if (ucSizeMSB > 0)
+    {
+        /* if size is over 255B, mark the size_extension */
+        usFlags |= FLAG_SIZE_EXTENDED;
+    }
+
+    if (usFlags == 0 && p->m_ucDelayAckCount)
+    {
+        dprint("Piggyback %u seq %u\n", 
+                p->m_ucDelayAckCount, p->m_ucLastRxSeqId);
+        // we have a data packet going out anyway, so piggyback
+        // the ACK onto it.
+        usFlags = FLAG_PACKET_ACK;  // delay no further
+        p->m_ucDelayAckCount = 0;
+    }
+
+    if (usFlags > 0xFF)
+    {
+        /* if the flags use more than one byte, set the appropriate flag */
+        usFlags |= FLAG_EXTENDED;
+    }
+
+    Crc8Bits_Reset(&p->m_otTxCrc);
+
+    /* update the flags */
+    if (p->m_otLastPLUpdatedStats.ulRxGarbageBytes !=
+        p->m_otCurrentStats.ulRxGarbageBytes)
+    {
+        usFlags |= FLAG_MSG_GARBAGE;
+    }
+    if (p->m_otLastPLUpdatedStats.ulRxPacketLost !=
+        p->m_otCurrentStats.ulRxPacketLost)
+    {
+        usFlags |= FLAG_MSG_LOST;
+    }
+
+    /* Header */
+    p->m_aucTxBuffer[ulPacketSize++] = ESCAPE_CHARACTER;
+    p->m_aucTxBuffer[ulPacketSize++] = SOP_CHARACTER;
+    ulPacketSize += TransportLayer_EscapeDataByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], ucTxSeqId);
+    ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], ucSizeLSB);
+
+    /* first encode the flags LSB (flags MSB is part of an extension) */
+    ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], (usFlags&0xFF));
+    /* and then encode the flags_details */
+    for (i = 0; i < 16 && usFlags != 0; ++i)
+    {
+        unsigned short usFlagMask = (1<<i);
+        unsigned short usFlagBit  = usFlags&usFlagMask;
+
+        if (usFlagBit == 0)
+        {
+            continue;
+        }
+
+        if ( usFlagBit == FLAG_PACKET_ACK) /* acknowledgement */
+        {
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p, 
+                              &p->m_aucTxBuffer[ulPacketSize],
+                              p->m_ucLastRxSeqId);
+        }
+        /* This is a reliable packet. we need to provide the proper Ack */
+        else if (usFlagBit == FLAG_RELIABLE_PACKET)
+        {
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p, 
+                                &p->m_aucTxBuffer[ulPacketSize],
+                                ucReliableTxSeqId);
+        }
+        else if (usFlagBit == FLAG_RELIABLE_ACK)
+        {
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                                &p->m_aucTxBuffer[ulPacketSize],
+                                 p->m_ucReliableSeqId);
+        }
+        else if (usFlagBit == FLAG_RELIABLE_NACK)
+        {
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                                &p->m_aucTxBuffer[ulPacketSize],
+                                p->m_ucReliableSeqId);
+        }
+        else if (usFlagBit == FLAG_MSG_LOST)
+        {
+            /* It cannot be more than 255 as we are acking every packet */
+            unsigned char ucNumPacketLost = (unsigned char)
+                        (p->m_otCurrentStats.ulRxPacketLost -
+                         p->m_otLastPLUpdatedStats.ulRxPacketLost);
+
+            p->m_otLastPLUpdatedStats.ulRxPacketLost =
+                         p->m_otCurrentStats.ulRxPacketLost;
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                         &p->m_aucTxBuffer[ulPacketSize], ucNumPacketLost);
+        }
+        else if (usFlagBit == FLAG_MSG_GARBAGE)
+        {
+            unsigned long ulNumGarbageLost =
+                        p->m_otCurrentStats.ulRxGarbageBytes -
+                        p->m_otLastPLUpdatedStats.ulRxGarbageBytes;
+            if (ulNumGarbageLost > 0xFF)
+            {
+                ulNumGarbageLost = 0xFF; /* max we can send is 1B */
+            }
+            p->m_otLastPLUpdatedStats.ulRxGarbageBytes += ulNumGarbageLost;
+
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p, 
+                        &p->m_aucTxBuffer[ulPacketSize],
+                        (unsigned char)ulNumGarbageLost);
+        }
+        else if (usFlagBit == FLAG_SIZE_EXTENDED)
+        {
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], ucSizeMSB);
+        }
+        else if (usFlagBit == FLAG_EXTENDED)
+        {
+            /* encode the MSB of the 16bit flags */
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], ((usFlags>>8)&0xFF));
+        }
+        else if (usFlagBit == FLAG_INTERNAL_PACKET)
+        {
+            /* we don't care about the details, but need to encode a
+             * dummy byte
+             */
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], 0x0);
+        }
+        else if (usFlagBit == FLAG_IGNORE_SEQID)
+        {
+            /* we don't care about the details, but need to encode a
+             * dummy byte
+             */
+            ulPacketSize += TransportLayer_EscapeDataAndUpdateCrcByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], 0x0);
+        }
+        else
+        {
+            ASSERT(0); // safe assert, no need to return
+            break;
+        }
+
+        usFlags &= ~usFlagBit;
+    }
+
+    ulPacketSize += TransportLayer_EscapeDataAndUpdateCrc(p,
+                        &p->m_aucTxBuffer[ulPacketSize], pucData, usSize);
+
+    {
+    unsigned char ucCrc = Crc8Bits_GetState(&p->m_otTxCrc);
+    ucCrc = ((ucCrc&0x0F)<<4) | ((ucCrc&0xF0)>>4);
+
+    ulPacketSize += TransportLayer_EscapeDataByte(p,
+                        &p->m_aucTxBuffer[ulPacketSize], ucCrc);
+
+    p->m_aucTxBuffer[ulPacketSize++] = ESCAPE_CHARACTER;
+    p->m_aucTxBuffer[ulPacketSize++] = EOP_CHARACTER;
+
+    p->m_callback->OnDataToSend(p->m_callback, p->m_aucTxBuffer,
+                        ulPacketSize);
+    return ucTxSeqId;
+    }
+}
+}
+
+unsigned long TransportLayer_EscapeDataByte(struct sTransportLayer* p,
+                unsigned char *pucDestBuff, unsigned char ucData)
+{
+    return TransportLayer_EscapeData(p, pucDestBuff, &ucData, 1);
+}
+
+
+unsigned long TransportLayer_EscapeData(struct sTransportLayer* p,
+                unsigned char *pucDestBuff, const unsigned char *pucSrcBuff,
+                unsigned short usSize)
+{
+    unsigned long ulCnt = 0;
+    unsigned int i = 0;
+    for (i = 0; i < usSize; ++i)
+    {
+        if (pucSrcBuff[i] == ESCAPE_CHARACTER)
+        {
+            pucDestBuff[ulCnt++] = ESCAPE_CHARACTER;
+            pucDestBuff[ulCnt++] = ESCAPED_ESCAPE_CHARACTER;
+        }
+        else if (pucSrcBuff[i] == XON_CHARACTER)
+        {
+            pucDestBuff[ulCnt++] = ESCAPE_CHARACTER;
+            pucDestBuff[ulCnt++] = ESCAPED_XON_CHARACTER;
+        }
+        else if (pucSrcBuff[i] == XOFF_CHARACTER)
+        {
+            pucDestBuff[ulCnt++] = ESCAPE_CHARACTER;
+            pucDestBuff[ulCnt++] = ESCAPED_XOFF_CHARACTER;
+        }
+        else // regular data
+        {
+            pucDestBuff[ulCnt++] = pucSrcBuff[i];
+        }
+    }
+    return ulCnt;
+}
+
+unsigned long TransportLayer_EscapeDataAndUpdateCrcByte(struct sTransportLayer* p,
+                unsigned char *pucDestBuff,
+                unsigned char ucData)
+{
+    Crc8Bits_UpdateByte(&p->m_otTxCrc, ucData);
+    return TransportLayer_EscapeDataByte(p, pucDestBuff, ucData);
+}
+
+unsigned long TransportLayer_EscapeDataAndUpdateCrc(struct sTransportLayer* p,
+                                                    unsigned char *pucDestBuff,
+                                                    const unsigned char *pucSrcBuff,
+                                                    unsigned short usSize)
+{
+    Crc8Bits_Update(&p->m_otTxCrc, pucSrcBuff, usSize);
+    return TransportLayer_EscapeData(p, pucDestBuff, pucSrcBuff, usSize);
+}
+
+bool TransportLayer_SendReliablePacket( struct sTransportLayer* p,
+                                        unsigned char *pucData,
+                                        unsigned short usSize,
+                                        PacketDeliveryNotification cb,
+                                        void *pCbData,
+                                        unsigned long ulCbData)
+{
+#if TLCUST_ENABLE_RELIABLE_PL
+    bool userFail = false;
+    ASSERT_RET_0(usSize <= MAX_OUTGOING_PACKET_SIZE);
+    ASSERT_RET_0(TransportLayer_IsReliableAvailable(p));
+    ASSERT_RET_0(!p->m_bOngoingSync);  // TL cannot be used during sync
+
+    // allocate memory to hold the data
+    {
+        struct stReliableElement *pElement = (struct stReliableElement *) bbd_alloc(sizeof(struct stReliableElement));
+    if (!pElement)
+        return false;
+    stReliableElement_stReliableElement(pElement);
+    pElement->ucReliableSeqId = p->m_ucTxReliableSeqId;
+    p->m_ucTxReliableSeqId = (p->m_ucTxReliableSeqId+1)&0xFF;
+    pElement->ulTimestampMs = p->m_callback->OnTimeMsRequest(p->m_callback);
+    pElement->ucNumSent = 1;
+    pElement->pucData = (unsigned char *) bbd_alloc(usSize);
+    if (!pElement->pucData) {
+        bbd_free(pElement);
+        return false;
+    }
+    userFail = copy_from_user(pElement->pucData, pucData, usSize);
+    if (userFail) {
+        bbd_free(pElement->pucData);
+        bbd_free(pElement);
+        return false;
+    }
+    pElement->usDataSize = usSize;
+    pElement->sCallback.cb = cb;
+    pElement->sCallback.pCbData = pCbData;
+    pElement->sCallback.ulCbData = ulCbData;
+    pElement->pNext = NULL;
+
+    p->m_ulReliableByteCnt += usSize;
+
+    // Let's insert that element
+    if (p->m_pFirstReliableEl == NULL)
+    {
+        p->m_pFirstReliableEl = pElement;
+        p->m_pLastReliableEl = pElement;
+    }
+    else
+    {
+        // link it to the list
+        p->m_pLastReliableEl->pNext = pElement;
+        p->m_pLastReliableEl = pElement;
+    }
+
+    pElement->ucTxSeqId = TransportLayer_BuildAndSendPacket(p, FLAG_RELIABLE_PACKET, pElement->pucData, pElement->usDataSize, pElement->ucReliableSeqId);
+    PLLOG("TransportLayer_SendReliablePacket(Size %u, SeqId %u, %lu ms, RelSeqId %u)\n", usSize, pElement->ucTxSeqId, pElement->ulTimestampMs, pElement->ucReliableSeqId);
+    p->m_otCurrentStats.ulReliablePacketSent++;
+
+    TransportLayer_Tick(p); /* refresh timers */
+    }
+    return true;
+
+#else /* TLCUST_ENABLE_RELIABLE_PL */
+    ASSERT_RET(0);
+    return false;
+#endif
+}
+
+void TransportLayer_SetData(struct sTransportLayer* p, const unsigned char *pucData,
+                unsigned short usSize)
+{
+    PLLOG("TransportLayer_SetData(Size %u)\n", usSize);
+    TransportLayer_ParseIncomingData(p, pucData, usSize);
+}
+
+void TransportLayer_Tick(struct sTransportLayer* p)
+{
+    // check if there is anything in the reliable layer before bothering the upper layer
+    unsigned long ulTimeNowMs = p->m_callback->OnTimeMsRequest(p->m_callback);
+
+    long lTimerMs = RELIABLE_RETRY_TIMEOUT_MS;
+    struct stReliableElement *pElement = p->m_pFirstReliableEl;
+    if (p->m_bOngoingSync)
+    {
+        unsigned long ulDeltaMs = ulTimeNowMs - p->m_ulSyncTimestamp;
+        if (ulDeltaMs >= RELIABLE_RETRY_TIMEOUT_MS)
+        {
+            // we need to restart sync
+            if (p->m_ulRetryCnt > RELIABLE_MAX_RETRY)
+            {
+                p->m_callback->OnCommunicationError(p->m_callback);
+            }
+            else
+            {
+                TransportLayer_SendInternalSeqIdRequest(p);
+            }
+            lTimerMs = RELIABLE_RETRY_TIMEOUT_MS;
+        }
+        else
+        {
+            lTimerMs = RELIABLE_RETRY_TIMEOUT_MS - ulDeltaMs;
+        }
+    }
+    else if (pElement == NULL)
+    {
+        lTimerMs = -1; // TransportLayer is Idle
+    }
+    else
+    {
+        while (pElement != NULL)
+        {
+            // we simply traverse the list, and if we see that there is a timeout expired, we simply resend the packet. If not, we call the OnTimerSet with next timeout.
+
+            unsigned long ulDeltaMs = ulTimeNowMs - pElement->ulTimestampMs;
+            if (ulDeltaMs >= RELIABLE_RETRY_TIMEOUT_MS || pElement->bForceResend)
+            {
+                if (pElement->ucNumSent == RELIABLE_MAX_RETRY)
+                {
+                    p->m_callback->OnCommunicationError(p->m_callback);
+                }
+                else
+                {
+                    if (p->m_otCurrentStats.ulMaxRetransmitCount < pElement->ucNumSent)
+                    {
+                        p->m_otCurrentStats.ulMaxRetransmitCount = pElement->ucNumSent;
+                    }
+                    pElement->ucNumSent++;// inc its count
+                    pElement->ulTimestampMs = ulTimeNowMs; // update its timestamp to "eat" the system delays by restarting the timeout
+                    /// ****** WARNING *****
+                    // Known issue if the seqId that is sent again is the same as the previous one. As this is used to detect different NACKs, that could potentially
+                    // create a CommunicationError()
+                    // what we could do is send an empty message to the other side, which would slightly increase the bandwidth but save us from that trouble
+                    // note that this would not occur very often anyway, so that should not be a problem
+
+                    pElement->ucTxSeqId = TransportLayer_BuildAndSendPacket(p, FLAG_RELIABLE_PACKET, pElement->pucData, pElement->usDataSize, pElement->ucReliableSeqId);
+                    PLLOG("TransportLayer_Tick(), Resending(Size %u, SeqId %u, RelSeqId %u, %lu ms, sent %u, %s)\n",
+                                                        pElement->usDataSize, pElement->ucTxSeqId, pElement->ucReliableSeqId,
+                                                        pElement->ulTimestampMs, pElement->ucNumSent, pElement->bForceResend?"Forced":"Timeout");
+                    pElement->bForceResend = false;
+                    p->m_otCurrentStats.ulReliableRetransmit++;
+                }
+            }
+            else
+            {
+                signed long lTimeoutMs = RELIABLE_RETRY_TIMEOUT_MS - ulDeltaMs;
+                if (lTimerMs > lTimeoutMs)
+                {
+                    lTimerMs = lTimeoutMs;
+                }
+            }
+
+            pElement = pElement->pNext;
+        }
+    }
+
+    p->m_callback->OnTimerSet(p->m_callback, lTimerMs);
+}
+
+
+unsigned long TransportLayer_GetReliableUsage(const struct sTransportLayer* const p)
+{
+    return p->m_ulReliableByteCnt;
+}
+
+unsigned int TransportLayer_GetReliablePacketInTransitCnt(const struct sTransportLayer* const p)
+{
+    return (unsigned int) ((p->m_ucTxReliableSeqId - p->m_ucTxLastAckedSeqId)&0xFF)-1;
+}
+
+bool TransportLayer_IsReliableAvailable(const struct sTransportLayer* const p)
+{
+#if TLCUST_ENABLE_RELIABLE_PL
+    return TransportLayer_GetReliablePacketInTransitCnt(p) < RELIABLE_MAX_PACKETS;
+#else /* TLCUST_ENABLE_RELIABLE_PL */
+    return false;
+#endif
+}
+
+const struct stTransportLayerStats* const TransportLayer_GetStats(const struct sTransportLayer* const p)
+{
+    return &p->m_otCurrentStats;
+}
+
+void TransportLayer_ParseIncomingData(struct sTransportLayer* p,
+                const unsigned char *pucData, unsigned short usLen)
+{
+    unsigned short usIdx=0;
+
+    while (usIdx != usLen)
+    {
+        unsigned char ucData = pucData[usIdx++];
+        p->m_ulByteCntSinceLastValidPacket++;
+
+        if (ucData == XON_CHARACTER || ucData == XOFF_CHARACTER)
+        {
+            continue;
+        }
+
+        switch(p->m_uiParserState)
+        {
+            case WAIT_FOR_ESC_SOP:
+            {
+                if (ucData == ESCAPE_CHARACTER)
+                {
+                    p->m_uiParserState = WAIT_FOR_SOP;
+                    p->m_otCurrentStats.ulRxGarbageBytes += (p->m_ulByteCntSinceLastValidPacket -1); // if we had only one byte, then there is no garbage, any extra is garbage
+                    p->m_ulByteCntSinceLastValidPacket = 1;
+                }
+            }
+            break;
+
+            case WAIT_FOR_SOP:
+            {
+                if (ucData == SOP_CHARACTER)
+                {
+                    p->m_uiParserState = WAIT_FOR_MESSAGE_COMPLETE;
+                    p->m_uiRxLen = 0;
+                }
+                else
+                {
+                    if (ucData != ESCAPE_CHARACTER)
+                    {
+                        p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                    }
+                    else
+                    {
+                        p->m_otCurrentStats.ulRxGarbageBytes += 2;
+                        p->m_ulByteCntSinceLastValidPacket = 1;
+                    }
+
+                }
+            }
+            break;
+
+            case WAIT_FOR_MESSAGE_COMPLETE:
+            {
+                if (ucData == ESCAPE_CHARACTER)
+                {
+                    p->m_uiParserState = WAIT_FOR_EOP;
+                }
+                else if (p->m_uiRxLen < sizeof(p->m_aucRxMessageBuf))
+                {
+                    p->m_aucRxMessageBuf[p->m_uiRxLen++] = ucData;
+                }
+                else
+                {
+                    p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                }
+            }
+            break;
+
+            case WAIT_FOR_EOP:
+            {
+                if (ucData == EOP_CHARACTER)
+                {
+                    if (TransportLayer_PacketReceived(p))
+                    {
+                        p->m_ulByteCntSinceLastValidPacket = 0; // we had a valid packet, restart the cnt
+                    }
+
+                    p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                }
+                else if (ucData == ESCAPED_ESCAPE_CHARACTER)
+                {
+                    if (p->m_uiRxLen < _DIM(p->m_aucRxMessageBuf))
+                    {
+                        p->m_aucRxMessageBuf[p->m_uiRxLen++] = ESCAPE_CHARACTER;
+                        p->m_uiParserState = WAIT_FOR_MESSAGE_COMPLETE;
+                    }
+                    else
+                    {
+                        p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                    }
+                }
+                else if (ucData == ESCAPED_XON_CHARACTER)
+                {
+                    if (p->m_uiRxLen < _DIM(p->m_aucRxMessageBuf))
+                    {
+                        p->m_aucRxMessageBuf[p->m_uiRxLen++] = XON_CHARACTER;
+                        p->m_uiParserState = WAIT_FOR_MESSAGE_COMPLETE;
+                    }
+                    else
+                    {
+                        p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                    }
+                }
+                else if (ucData == ESCAPED_XOFF_CHARACTER)
+                {
+                    if (p->m_uiRxLen < _DIM(p->m_aucRxMessageBuf))
+                    {
+                        p->m_aucRxMessageBuf[p->m_uiRxLen++] = XOFF_CHARACTER;
+                        p->m_uiParserState = WAIT_FOR_MESSAGE_COMPLETE;
+                    }
+                    else
+                    {
+                        p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                    }
+                }
+                else if (ucData == SOP_CHARACTER)
+                {
+                    // we probably missed the ESC EOP, but we start receiving a new packet!
+                    p->m_uiParserState = WAIT_FOR_MESSAGE_COMPLETE;
+                    // init the parser!
+                    p->m_uiRxLen = 0;
+
+                    p->m_otCurrentStats.ulRxGarbageBytes += (p->m_ulByteCntSinceLastValidPacket-2); // if we had only one byte, then there is no garbage, any extra is garbage
+                    p->m_ulByteCntSinceLastValidPacket = 2;
+                }
+                else if (ucData == ESCAPE_CHARACTER)
+                {
+                     p->m_uiParserState = WAIT_FOR_SOP;
+                }
+                else
+                {
+                    p->m_uiParserState = WAIT_FOR_ESC_SOP;
+                }
+            }
+            break;
+        }
+    }
+}
+
+
+bool TransportLayer_PacketReceived(struct sTransportLayer* p)
+{
+    struct sCrc8Bits crc;
+    Crc8Bits_Crc8Bits(&crc);
+
+    /* minimum is seqId, payload size, flags, and Crc */
+    if (p->m_uiRxLen >= 4)
+    {
+        /* compute CRC */
+        /* CRC is not applied on itself, nor on the SeqId */
+        unsigned char ucCrc = Crc8Bits_Update(&crc,
+                        &p->m_aucRxMessageBuf[1], p->m_uiRxLen-2); 
+
+        /* CRC has its nibble inverted for stronger CRC (as CRC of
+         * a packet with itself is always 0, if EoP is not detected,
+         * that always reset the CRC)
+         */
+        ucCrc = ((ucCrc&0x0F)<<4) | ((ucCrc&0xF0)>>4);
+        if (ucCrc != p->m_aucRxMessageBuf[p->m_uiRxLen-1]) /* CRC is last */
+        {
+            return false;
+        }
+    }
+    else
+    {
+        return false;
+    }
+
+    /* passed CRC check */
+    {
+    unsigned char *pucData = &p->m_aucRxMessageBuf[0];
+    unsigned short usLen = p->m_uiRxLen-1;
+
+    unsigned char ucSeqId = *pucData++;             /* usLen--; */
+    unsigned short usPayloadSize = *pucData++;      /* usLen--; */
+    unsigned short usFlags = *pucData++;            /* usLen--; */
+
+    bool bReliablePacket = false;
+    unsigned char ucReliableSeqId=0;
+
+    bool bReliableAckReceived = false;
+    unsigned char ucReliableAckSeqId=0;
+
+    bool bReliableNackReceived = false;
+    unsigned char ucReliableNackSeqId=0;
+
+    bool bAckReceived = false;
+
+    bool bInternalPacket = false;
+    bool bIgnoreSeqId = false;
+
+    unsigned short usAckFlags = 0;
+    unsigned int i=0;
+
+    usLen -= 3;
+
+    for (i = 0; i < 16 && usFlags != 0 && usLen > 0; ++i)
+    {
+        unsigned short usFlagMask = (1 << i);
+        unsigned short usFlagBit = usFlags & usFlagMask;
+        unsigned char ucFlagDetail = 0;
+
+        if (usFlagBit == 0)
+        {
+            continue;
+        }
+
+        usFlags     &= ~usFlagBit;   /* clear the flag */
+        ucFlagDetail = *pucData++;   /* extract flag details */
+        --usLen;             
+
+        if (usFlagBit == FLAG_PACKET_ACK) /* acknowledgement */
+        {
+            /* flag detail contain the acknowledged SeqId */
+            unsigned char ucReceivedAckSeqId = ucFlagDetail;
+
+            p->m_ucLastAckSeqId = ucReceivedAckSeqId;
+            bAckReceived = true;
+        }
+        else if (usFlagBit == FLAG_RELIABLE_PACKET)
+        {
+            /* This is a reliable packet. we need to provide the proper Ack */
+            ucReliableSeqId = ucFlagDetail;
+            bReliablePacket = true;
+        }
+        else if (usFlagBit == FLAG_RELIABLE_ACK)
+        {
+            bReliableAckReceived = true;
+            ucReliableAckSeqId = ucFlagDetail;
+        }
+        else if (usFlagBit == FLAG_RELIABLE_NACK)
+        {
+            bReliableNackReceived = true;
+            ucReliableNackSeqId = ucFlagDetail;
+        }
+        else if (usFlagBit == FLAG_MSG_LOST)
+        {
+            /* remote TransportLayer lost had some SeqId jumps */
+            p->m_otCurrentStats.ulRemotePacketLost += ucFlagDetail;
+        }
+        else if (usFlagBit == FLAG_MSG_GARBAGE)
+        {
+            /* remote TransportLayer detected garbage */
+            p->m_otCurrentStats.ulRemoteGarbage += ucFlagDetail;
+        }
+        else if (usFlagBit == FLAG_SIZE_EXTENDED)
+        {
+            /* flag detail contains the MSB of the payload size */
+            usPayloadSize |= (ucFlagDetail<<8);
+        }
+        else if (usFlagBit == FLAG_EXTENDED)
+        {
+            /* the flags are extended, which means that the details
+             * contains the MSB of the 16bit flags
+             */
+            usFlags |= (ucFlagDetail<<8);
+        }
+        else if (usFlagBit == FLAG_INTERNAL_PACKET)
+        {
+            /* don't care about details */
+            bInternalPacket = true;
+        }
+        else if (usFlagBit == FLAG_IGNORE_SEQID)
+        {
+            /* don't care about details */
+            bIgnoreSeqId = true;
+        }
+        else
+        {
+            /* we did not process the flag, just put it back
+             * this is an error, so we can break now, as there is no
+             * point in continuing
+             */
+            usFlags |= usFlagBit;
+            break;
+        }
+    }
+
+    /* if flag is not garbage, entire packet should all be consumed */
+    /* remaining length of the buffer should be the payload size */
+    if (usFlags == 0 &&
+        usPayloadSize == usLen)
+    {
+        /* we now have a valid packet (at least it passed all our
+         * validity checks, so we are going to trust it
+         */
+        unsigned char ucExpectedTxSeqId = (p->m_ucLastRxSeqId+1)&0xFF;
+        if (ucSeqId != ucExpectedTxSeqId
+             && !bIgnoreSeqId
+             && !p->m_bOngoingSync)
+        {
+            /* Some packets were lost, jump in the RxSeqId */
+            p->m_otCurrentStats.ulRxPacketLost +=
+                        ((ucSeqId - ucExpectedTxSeqId)&0xFF);
+        }
+        p->m_ucLastRxSeqId = ucSeqId; /* increase expected SeqId */
+
+        if (!bAckReceived || usLen > 0 )
+        {
+            bool bDelayedEnough = (++p->m_ucDelayAckCount > 200);
+            ++p->m_otCurrentStats.ulPacketReceived;
+            // if this is a payload packet, we need to acknowledge it.
+            // But don't clog the wires with power-hungry simple
+            // acks unless we have too many (200) outstanding.
+            if (bDelayedEnough)
+            {
+                dprint("Skip averted/%d %s %s\n", __LINE__,
+                        (bAckReceived  ) ? "ACK"  : "!ack",
+                        (bDelayedEnough) ? "ENUF" : "!enuf");
+            usAckFlags |= FLAG_PACKET_ACK;
+                p->m_ucDelayAckCount = 0;
+            }
+            else
+            {
+                dprint("Skip/%d %s %s %d\n", __LINE__,
+                        (bAckReceived  ) ? "ACK"  : "!ack",
+                        (bDelayedEnough) ? "ENUF" : "!enuf",
+                        p->m_ucDelayAckCount);
+            }
+        }
+        else
+        {
+            ++p->m_otCurrentStats.ulAckReceived;
+        }
+
+        {
+        bool bProcessPacket = bReliablePacket || usLen > 0;
+        if (bReliablePacket)
+        {
+            PLLOG("TransportLayer_Received Reliable(Size %u, SeqId %u)\n", usLen, ucReliableSeqId);
+            /* if this is a reliable message, we need to make sure
+             * we didn't received it before!
+             * if we did, the Host probably didn't received the Ack,
+             * so let's just send the ack
+             * Reliable seqId is not enough, so we also use CRC and
+             * Lenght to confirm this was the same message received!
+             */
+            if (ucReliableSeqId == p->m_ucReliableSeqId
+                    && Crc8Bits_GetState(&crc) == p->m_ucReliableCrc
+                    && usLen == p->m_usReliableLen)
+            {
+                /* already received that packet, remote TransportLayer
+                 * probably lost the Acknowledgement, send it again
+                 */
+                usAckFlags |= FLAG_PACKET_ACK | FLAG_RELIABLE_ACK;
+                bProcessPacket = false; /* we should not process it again */
+            }
+            else if (ucReliableSeqId == ((p->m_ucReliableSeqId+1)&0xFF))
+            {
+                /* this is a valid message, just do nothing but update
+                 * the reliable info. the message will be processed below
+                 */
+                usAckFlags |= FLAG_PACKET_ACK | FLAG_RELIABLE_ACK;
+                /* already received that packet, remote TransportLayer
+                 * probably lost the Acknowledgement, send it again
+                 */
+                p->m_usReliableLen   = usLen;
+                p->m_ucReliableSeqId = ucReliableSeqId;
+                p->m_ucReliableCrc   = Crc8Bits_GetState(&crc);
+                p->m_otCurrentStats.ulReliablePacketReceived++;
+            }
+            else
+            {
+                /* we received the wrong reliable SeqId */
+                usAckFlags |= FLAG_PACKET_ACK | FLAG_RELIABLE_NACK;
+                bProcessPacket = false; /* we cannot accept the packet */
+            }
+        }
+
+        /* we have all the flags we need, time to send the acknowledgement */
+        if (usAckFlags != 0)
+        {
+            if (usAckFlags & FLAG_PACKET_ACK)
+            {
+                p->m_ucDelayAckCount = 0;
+            }
+            TransportLayer_SendPacketAck(p, usAckFlags);
+        }
+
+        if (bReliableAckReceived)
+        {
+            TransportLayer_ReceivedReliableAck(p, ucReliableAckSeqId);
+        }
+
+        if (bReliableNackReceived)
+        {
+            TransportLayer_ReceivedReliableNack(p, ucReliableNackSeqId, p->m_ucLastAckSeqId);
+        }
+
+        if (bProcessPacket)
+        {
+            if (bInternalPacket)
+            {
+                TransportLayer_OnInternalPacket(p, pucData, usLen);
+            }
+            else
+            {
+                /* everything good, notify upper layer that we have
+                 * the payload of a packet available
+                 */
+                BbdBridge_OnPacketReceived(p, pucData, usLen);
+            }
+        }
+        return true;
+        }
+    }
+    else
+    {
+        return false;
+    }
+    }
+}
+
+void TransportLayer_SendPacketAck(struct sTransportLayer* p, unsigned short usAckFlags)
+{
+    TransportLayer_BuildAndSendPacket(p, usAckFlags,
+                NULL /*pucData*/,
+                0 /*usDataSize*/,
+                0 /*ucReliableTxSeqId*/);
+}
+
+#undef LARGE_FRAME_SIZE
+
+void TransportLayer_ReceivedReliableAck(struct sTransportLayer* p,
+                unsigned char ucAckedReliableSeqId)
+{
+#if TLCUST_ENABLE_RELIABLE_PL
+#ifdef LARGE_FRAME_SIZE
+    unsigned int i;
+    unsigned int uiNumToNotify=0;
+    struct stCallback aCB[RELIABLE_MAX_PACKETS];
+#else
+    struct stCallback* pCB;
+#endif
+    bool bHasAckedId = false;
+    struct stReliableElement *pElement = p->m_pFirstReliableEl;
+
+    /* by design, an ack ensure that all packets before the acked Id
+     * have been received
+     */
+    PLLOG("TransportLayer_ReceivedReliableAck(RelSeqId %u)\n",
+                ucAckedReliableSeqId);
+
+    /* accumulate the state of all callbacks to call
+     * (to avoid reentrant call while we are working on our linked list)
+     */
+    while (pElement != NULL)
+    {
+        if (pElement->ucReliableSeqId == ucAckedReliableSeqId)
+        {
+            bHasAckedId = true;
+            break;
+        }
+        pElement = pElement->pNext;
+    }
+
+    /* it is possible that we received an ACK previously when we sent
+     * the packet twice and the ACK took too much time
+     */
+    if (bHasAckedId)
+    {
+        while (p->m_pFirstReliableEl != NULL)
+        {
+            /* update last acked seqid */
+            p->m_ucTxLastAckedSeqId = p->m_pFirstReliableEl->ucReliableSeqId;
+            /* copy the callback structure */
+#ifdef LARGE_FRAME_SIZE
+            aCB[uiNumToNotify++] = p->m_pFirstReliableEl->sCallback;
+#else
+            pCB = &p->m_pFirstReliableEl->sCallback;
+            if (pCB->cb != NULL)
+            {
+                /* notify user that the packet was delivered */
+                BbdTransportLayer_DispatchReliableAck(p, pCB);
+            }
+#endif
+            PLLOG("TransportLayer_NotifyReliableTransmittedAck(RelSeqId %u)\n",
+                        p->m_pFirstReliableEl->ucReliableSeqId);
+            {
+            struct stReliableElement *pRemoveElement =  p->m_pFirstReliableEl;
+            bool bDone = (p->m_pFirstReliableEl->ucReliableSeqId
+                          == ucAckedReliableSeqId);
+
+            p->m_ulReliableByteCnt -= p->m_pFirstReliableEl->usDataSize;
+            /* just point to the next on the list */
+            p->m_pFirstReliableEl   = p->m_pFirstReliableEl->pNext;
+
+            /* we need to free the memory */
+            bbd_free(pRemoveElement->pucData);
+            bbd_free(pRemoveElement);
+
+            if (bDone) /* found our element, we want to stop the loop */
+            {
+                break;
+            }
+            }
+        }
+    }
+
+    if (p->m_pFirstReliableEl == NULL) /* no more elements */
+    {
+        p->m_pLastReliableEl = NULL;   /* set the last to NULL */
+    }
+
+    p->m_bWait4ReliableAckToProcessNack = false; // we just got a ack
+
+#ifdef LARGE_FRAME_SIZE
+    /* It is safe to notify user, as we are done playing with the pointers */
+    for (i = 0; i < uiNumToNotify; ++i)
+    {
+        if (aCB[i].cb != NULL)
+        {
+            /* notify user that the packet was delivered */
+            BbdTransportLayer_DispatchReliableAck(p, aCB + i);
+        }
+    }
+#endif
+
+    TransportLayer_Tick(p);
+#else /* TLCUST_ENABLE_RELIABLE_PL */
+    ASSERT_RET(0);
+#endif
+}
+
+
+void TransportLayer_ReceivedReliableNack(struct sTransportLayer* p,
+                unsigned char ucLastReceivedReliableSeqId,
+                unsigned char ucAckedSeqId)
+{
+#if TLCUST_ENABLE_RELIABLE_PL
+    unsigned char ucExpectedReliableSeqId = (ucLastReceivedReliableSeqId+1)&0xFF;
+#ifdef LARGE_FRAME_SIZE
+    unsigned int uiNumToNotify=0;
+    struct stCallback aCB[RELIABLE_MAX_PACKETS];
+#else
+    struct stCallback* pCB;
+#endif
+
+    PLLOG("TransportLayer_ReceivedReliableNack(Expected RelSeqId %u, AckedSeqid %u) %s\n", ucExpectedReliableSeqId, ucAckedSeqId, p->m_bWait4ReliableAckToProcessNack?"Ignored":"");
+
+    /* if we get a NACK, then we will ignore all the other one until
+     * we get a ACK. Otherwise, we might be re-sending these too many times
+     */
+    if (p->m_bWait4ReliableAckToProcessNack)
+    {
+        return;
+    }
+    p->m_bWait4ReliableAckToProcessNack = true;
+
+    /* Let's accumulate on the state all the callbacks to call
+     * (to avoid reentrant call while we are working on our linked list)
+     */
+
+    if (p->m_pFirstReliableEl != NULL)
+    {
+        /* if we receive an NACK, we can assume that we were
+         * acked up to that one! For the rest, we will simply timeout
+         */
+        struct stReliableElement *pElement = p->m_pFirstReliableEl;
+
+        while (pElement != NULL)
+        {
+            /* to filter the "late" acks out, we make sure that the
+             * TxSeqId is matching the one that is acked
+             */
+            if (pElement->ucTxSeqId == ucAckedSeqId)
+            {
+                /* we can now pay attention to that NACK. Let's ack all
+                 * the messages until the expectedSeqId, and retransmit
+                 * the other ones
+                 */
+                PLLOG("TransportLayer_FoundReliableValidElement(RelSeqId  %u, "
+                                "TxSeqId %u)\n",
+                                pElement->ucReliableSeqId,
+                                pElement->ucTxSeqId);
+                while (p->m_pFirstReliableEl != NULL)
+                {
+                    if (p->m_pFirstReliableEl->ucReliableSeqId
+                        == ucExpectedReliableSeqId)
+                    {
+                        struct stReliableElement *pElement = p->m_pFirstReliableEl;
+                        while (pElement != NULL)
+                        {
+                            /* we will have them resend now */
+                            pElement->bForceResend = true;
+                            pElement = pElement->pNext;
+                        }
+                        break;
+                    }
+                    else
+                    {
+                        p->m_ucTxLastAckedSeqId =
+                        p->m_pFirstReliableEl->ucReliableSeqId;
+
+                        /* update last acked seqid */
+                        /* copy the callback structure */
+
+#ifdef LARGE_FRAME_SIZE
+                        aCB[uiNumToNotify++] = p->m_pFirstReliableEl->sCallback;
+#else
+                        pCB = &p->m_pFirstReliableEl->sCallback;
+                        if (pCB->cb != NULL)
+                        {
+                            /* notify user that the packet was delivered */
+                            BbdTransportLayer_DispatchReliableAck(p, pCB);
+                        }
+#endif
+
+                        PLLOG("TransportLayer_NotifyReliableTransmittedAck(RelSeqId  %u)\n", p->m_pFirstReliableEl->ucReliableSeqId);
+                        p->m_ulReliableByteCnt -=
+                                p->m_pFirstReliableEl->usDataSize;
+
+                        {
+                        struct stReliableElement *pRemoveElement =
+                                p->m_pFirstReliableEl;
+                        p->m_pFirstReliableEl = p->m_pFirstReliableEl->pNext; // just point to the next on the list
+
+                        // we need to free the memory
+                        bbd_free(pRemoveElement->pucData);
+                        bbd_free(pRemoveElement);
+                        }
+                    }
+                }
+                /* we are done, let's exit the loop */
+                break;
+            }
+            else
+            {
+                pElement = pElement->pNext;
+            }
+        }
+    }
+
+#ifdef LARGE_FRAME_SIZE
+    // It is safe to notify user, as we are done playing with the pointers
+    {
+    unsigned int i = 0;
+    for (i = 0; i < uiNumToNotify; ++i)
+    {
+        if (aCB[i].cb)
+        {
+            /* notify user that the packet was delivered */
+            BbdTransportLayer_DispatchReliableAck(p, aCB + i);
+        }
+    }
+    }
+#endif
+
+    /* we have changed the reliable list, so we need to update the timers */
+    TransportLayer_Tick(p);
+
+#else /* TLCUST_ENABLE_RELIABLE_PL */
+    ASSERT_RET(0);
+#endif
+}
+
+/* we have an internal packet. */
+
+void TransportLayer_OnInternalPacket(struct sTransportLayer* p,
+                unsigned char *pucData, unsigned short usSize)
+{
+    unsigned char ucId = *pucData++;
+    ASSERT_RET(usSize > 0);
+
+    --usSize;
+
+    switch (ucId)
+    {
+        case INT_PKT_SEQID_REQUEST:
+        {
+            unsigned char ucReqId = *pucData++;
+            --usSize;
+            ASSERT_RET(usSize == 0);
+            TransportLayer_OnInternalSeqIdRequest(p, ucReqId);
+        }
+        break;
+
+        case INT_PKT_SEQID_RESPONSE:
+        {
+            struct sStreamDecoder str;
+            StreamDecoder_StreamDecoder(&str, pucData, usSize);
+            {
+            unsigned char ucReqId = StreamDecoder_GetU08(&str);
+            unsigned char ucLastRxSeqId = StreamDecoder_GetU08(&str);
+            unsigned char ucLastAckSeqId = StreamDecoder_GetU08(&str);
+            unsigned char ucReliableSeqId = StreamDecoder_GetU08(&str);
+            unsigned char ucTxSeqId = StreamDecoder_GetU08(&str);
+            unsigned char ucTxReliableSeqId = StreamDecoder_GetU08(&str);
+            unsigned char ucTxLastAckedSeqId = StreamDecoder_GetU08(&str);
+
+            ASSERT_RET(!   StreamCodec_Fail(&str)
+                        && StreamCodec_GetAvailableSize(&str) == 0);
+            TransportLayer_OnInternalSeqIdResponse(p, ucReqId, ucLastRxSeqId,
+                                    ucLastAckSeqId, ucReliableSeqId,
+                                    ucTxSeqId, ucTxReliableSeqId,
+                                    ucTxLastAckedSeqId);
+            }
+        }
+        break;
+
+        case INT_PKT_STATS_REQUEST:
+        {
+            ASSERT_RET(usSize == 0);
+            TransportLayer_OnInternalStatsRequest(p);
+        }
+        break;
+
+        case INT_PKT_STATS_RESPONSE:
+        {
+            struct sStreamDecoder str;
+            struct stTransportLayerStats otStats;
+            StreamDecoder_StreamDecoder(&str, pucData, usSize);
+
+            otStats.ulRxGarbageBytes = StreamDecoder_GetU32(&str);
+            otStats.ulRxPacketLost = StreamDecoder_GetU32(&str);  
+            otStats.ulRemotePacketLost = StreamDecoder_GetU32(&str);
+            otStats.ulRemoteGarbage = StreamDecoder_GetU32(&str);   
+            otStats.ulPacketSent = StreamDecoder_GetU32(&str);
+            otStats.ulPacketReceived = StreamDecoder_GetU32(&str);
+            otStats.ulAckReceived = StreamDecoder_GetU32(&str);
+            otStats.ulReliablePacketSent = StreamDecoder_GetU32(&str); 
+            otStats.ulReliableRetransmit = StreamDecoder_GetU32(&str);
+            otStats.ulReliablePacketReceived = StreamDecoder_GetU32(&str);
+            otStats.ulMaxRetransmitCount = StreamDecoder_GetU32(&str);
+
+            ASSERT_RET(!   StreamCodec_Fail(&str)
+                        && StreamCodec_GetAvailableSize(&str) == 0);
+            TransportLayer_OnInternalStatsResponse(p, &otStats);
+        }
+        break;
+
+        case INT_PKT_SETTINGS_REQUEST:
+        {
+            ASSERT_RET(usSize == 0);
+            TransportLayer_OnInternalSettingsRequest(p);
+        }
+        break;
+
+        case INT_PKT_SETTINGS_RESPONSE:
+        {
+            struct sStreamDecoder str;
+            unsigned short usMaxOutgoingPacketSize;
+            unsigned short usMaxIncomingPacketSize;
+            unsigned short usReliableRetryTimeoutMs;
+            unsigned short usReliableMaxRetry;
+            unsigned short usReliableMaxPackets;
+
+            StreamDecoder_StreamDecoder(&str, pucData, usSize);
+            usMaxOutgoingPacketSize  = StreamDecoder_GetU16(&str);
+            usMaxIncomingPacketSize  = StreamDecoder_GetU16(&str);
+            usReliableRetryTimeoutMs = StreamDecoder_GetU16(&str);
+            usReliableMaxRetry       = StreamDecoder_GetU16(&str);
+            usReliableMaxPackets     = StreamDecoder_GetU16(&str);
+
+            ASSERT_RET(!   StreamCodec_Fail(&str)
+                        && StreamCodec_GetAvailableSize(&str) == 0);
+            TransportLayer_OnInternalSettingsResponse(p,
+                        usMaxOutgoingPacketSize,
+                        usMaxIncomingPacketSize,
+                        usReliableRetryTimeoutMs, 
+                        usReliableMaxRetry,
+                        usReliableMaxPackets);
+        }
+        break;
+
+        default:
+            break;
+    }
+}
+
+static unsigned char _ucBuf[MAX_OUTGOING_PACKET_SIZE];
+void TransportLayer_SendInternalPacket(struct sTransportLayer* p,
+                unsigned char ucId,
+                const unsigned char *pucData,
+                unsigned short usSize)
+{
+    unsigned short usFlags = FLAG_INTERNAL_PACKET;
+
+    /* Yes we could have avoided a memcpy if the upper function
+     * were to encode ucId into the buffer already,
+     * but code readability is the preffered path, especially
+     * as the internal packet are rarely used, and little data is exchanged.
+     */
+    _ucBuf[0] = ucId;
+    ASSERT_RET(usSize < sizeof(_ucBuf));
+    memcpy(&_ucBuf[1], pucData, usSize);
+
+    TransportLayer_BuildAndSendPacket(p, usFlags, _ucBuf,
+                        usSize+1, 0/*ucReliableTxSeqId*/);
+}
+
+
+void TransportLayer_OnInternalSeqIdRequest(struct sTransportLayer* p,
+                unsigned char ucReqId)
+{
+        /* ensure proper packet */
+        unsigned char ucBuf[7];
+        struct sStreamEncoder otStream;
+
+        StreamEncoder_StreamEncoder(&otStream, ucBuf, sizeof(ucBuf));
+        StreamEncoder_PutU08(&otStream, ucReqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucLastRxSeqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucLastAckSeqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucReliableSeqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucTxSeqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucTxReliableSeqId);
+        StreamEncoder_PutU08(&otStream, p->m_ucTxLastAckedSeqId);
+
+        ASSERT_RET(!StreamCodec_Fail(&otStream));
+        TransportLayer_SendInternalPacket(p,
+                        INT_PKT_SEQID_RESPONSE,
+                        StreamCodec_GetStreamBuffer(&otStream),
+                        StreamCodec_GetOffset(&otStream));
+}
+
+void TransportLayer_OnInternalSeqIdResponse(struct sTransportLayer* p,
+                unsigned char ucReqId,
+                unsigned char ucLastRxSeqId,
+                unsigned char ucLastAckSeqId,
+                unsigned char ucReliableSeqId,
+                unsigned char ucTxSeqId,
+                unsigned char ucTxReliableSeqId,
+                unsigned char ucTxLastAckedSeqId)
+{
+    /* is there ongoing rquest, and is the reqId matching? */
+    if (p->m_bOngoingSync)
+    {
+        /* Great, let's set our seqId appropriately, so we can
+         * start communicating with the remote side, and not
+         * have any garbage detected
+         * +1 because the next TxSeqId is expected to be one
+         * more than last received.
+         * other +1 because this response triggered an ACK to
+         * be sent to the remote party, so it indeed already have
+         * incremented its seqId
+         */
+        p->m_ucTxSeqId          = (ucLastRxSeqId+1+1)&0xFF;
+        p->m_ucTxReliableSeqId  = (ucReliableSeqId+1)&0xFF;
+        /* last acked should be -1 */
+        p->m_ucTxLastAckedSeqId = (p->m_ucTxReliableSeqId-1)&0xFF;
+        p->m_ucLastRxSeqId = (ucTxSeqId)&0xFF;
+        p->m_ucReliableSeqId = (ucTxReliableSeqId-1)&0xFF;
+
+        /* let's clean the Reliable state */
+        p->m_ucReliableCrc = 0;
+        p->m_usReliableLen = 0;
+
+        p->m_bOngoingSync = false;
+        TransportLayer_Tick(p); /* refresh internal timers */
+        p->m_callback->OnRemoteSyncComplete(p->m_callback);
+    }
+}
+
+
+void TransportLayer_OnInternalStatsRequest(struct sTransportLayer* p)
+{
+    unsigned char ucBuf[11*4];
+    struct sStreamEncoder str;
+    StreamEncoder_StreamEncoder(&str, ucBuf, sizeof(ucBuf));
+
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulRxGarbageBytes);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulRxPacketLost);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulRemotePacketLost);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulRemoteGarbage);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulPacketSent);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulPacketReceived);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulAckReceived);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulReliablePacketSent); 
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulReliableRetransmit);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulReliablePacketReceived);
+    StreamEncoder_PutU32(&str, p->m_otCurrentStats.ulMaxRetransmitCount);
+
+    ASSERT_RET(!StreamCodec_Fail(&str));
+
+    TransportLayer_SendInternalPacket(p,
+                        INT_PKT_STATS_RESPONSE,
+                        StreamCodec_GetStreamBuffer(&str),
+                        StreamCodec_GetOffset      (&str));
+}
+
+void TransportLayer_OnInternalStatsResponse(struct sTransportLayer* p,
+                struct stTransportLayerStats* rStats)
+{
+    /* what do we want to do with it?
+     * Save it locally for access via sysfs
+     */
+}
+
+void TransportLayer_OnInternalSettingsRequest(struct sTransportLayer* p)
+{
+    unsigned char ucBuf[5*2];
+    struct sStreamEncoder str;
+    StreamEncoder_StreamEncoder(&str, ucBuf, sizeof(ucBuf));
+
+    StreamEncoder_PutU16(&str, MAX_OUTGOING_PACKET_SIZE);
+    StreamEncoder_PutU16(&str, MAX_INCOMING_PACKET_SIZE);
+    StreamEncoder_PutU16(&str, RELIABLE_RETRY_TIMEOUT_MS);
+    StreamEncoder_PutU16(&str, RELIABLE_MAX_RETRY);
+    StreamEncoder_PutU16(&str, RELIABLE_MAX_PACKETS);
+
+    ASSERT_RET(!StreamCodec_Fail(&str));
+
+    TransportLayer_SendInternalPacket(p,
+                        INT_PKT_SETTINGS_RESPONSE,
+                        StreamCodec_GetStreamBuffer(&str),
+                        StreamCodec_GetOffset      (&str));
+}
+
+void  TransportLayer_OnInternalSettingsResponse(struct sTransportLayer* p,
+                        unsigned short usMaxOutgoingPacketSize,
+                        unsigned short usMaxIncomingPacketSize,
+                        unsigned short usReliableRetryTimeoutMs, 
+                        unsigned short usReliableMaxRetry,
+                        unsigned short usReliableMaxPackets)
+{
+    /* what do we want to do with it?
+     * Save it locally for access via sysfs
+     */
+}
diff --git a/drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.h b/drivers/sensors/brcm/bbdpl1/transport/transport_layer_c.h
new file mode 100644 (file)
index 0000000..48671bc
--- /dev/null
@@ -0,0 +1,259 @@
+/****************************************************************************** 
+ ** \file transport_layer_c.h  TransportLayer struct declaration
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef TRANSPORT_LAYER_C_H
+#define TRANSPORT_LAYER_C_H
+
+/*  This is the core transport layer for the Broadcom Bridge Driver
+ *  It is a straightforward migration of C++ embedded code to C
+ *  The BBD-specific aspects are:
+ *  -  bool m_bPassThrough
+ *  -  some extra callbacks
+ *  -  some extra function with BbdTransportLayer_ prefix.
+ */
+
+#include "../utils/bbd_utils.h"
+#include "../transport/transport_layer_custom.h"
+#include "../utils/crc8bits_c.h"
+
+#ifndef TRANSPORT_LAYER_H
+/* prototype for callback associated with a packet for reliable transactions */
+typedef void (*PacketDeliveryNotification)(void* pCbData, unsigned long ulCbData);
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sBbdReliableTransaction
+{
+    unsigned char*             pucData;
+    unsigned short             usSize;
+    PacketDeliveryNotification cb;
+    void*                      pCbData;
+    unsigned long              ulCbData;
+};
+
+struct sBbdReliableTransaction* BbdReliableTransaction_init(struct sBbdReliableTransaction* p);
+
+struct stCallback
+{
+    PacketDeliveryNotification cb;
+    void                      *pCbData;
+    unsigned long              ulCbData;
+};
+
+struct sITransportLayerCb;
+
+/*
+ * Callbacks needed by the TransportLayer
+ */
+typedef void (*ITransportCB_OnTimerSet)(struct sITransportLayerCb*, long lTimerMs);
+typedef unsigned long (*ITransportCB_OnTimeMsRequest)(struct sITransportLayerCb*);
+typedef void (*ITransportCB_OnDataToSend)(struct sITransportLayerCb*, unsigned char *pucData, unsigned long ulSize);
+typedef void (*ITransportCB_OnCommunicationError)(struct sITransportLayerCb*);
+typedef void (*ITransportCB_OnPacketReceived)(struct sITransportLayerCb*, unsigned char *pucData, unsigned short usSize);
+typedef void (*ITransportCB_OnException)(struct sITransportLayerCb*, const char filename[], unsigned int uiLine);
+typedef void (*ITransportCB_OnRemoteSyncComplete)(struct sITransportLayerCb*);
+typedef void (*ITransportCB_OnReliableAck)(struct sITransportLayerCb*, struct sBbdReliableTransaction*);
+typedef void (*ITransportCB_OnDataToLhd)(struct sITransportLayerCb*, const unsigned char *pucData, unsigned short usSize);
+
+struct sITransportLayerCb
+{
+    void *m_callbackData;
+
+    /* TransportLayer can sleep for lTimerMs. -1 means the TransportLayer
+     * is idle
+     */
+    ITransportCB_OnTimerSet OnTimerSet;
+
+    /* TransportLayer needs to know about the platform time (32bit ms timer
+     * monotically increasing)
+     */
+    ITransportCB_OnTimeMsRequest OnTimeMsRequest;
+
+    /* Data must be sent to the remote TransportLayer */
+    ITransportCB_OnDataToSend OnDataToSend;
+
+    /* TransportLayer was not able to recover due to communication errors */
+    ITransportCB_OnCommunicationError OnCommunicationError;
+
+    /* The payload from a packet was received from the remote TransportLayer */
+    ITransportCB_OnPacketReceived OnPacketReceived;
+
+    /* an internal error occured */
+    ITransportCB_OnException OnException;
+
+    /* The synchronization with the remote side is complete, you can
+     * start using the Transport Layer to communicate with the remote side
+     */
+    ITransportCB_OnRemoteSyncComplete OnRemoteSyncComplete;
+
+    ITransportCB_OnReliableAck OnReliableAck;
+    ITransportCB_OnDataToLhd   OnDataToLhd;
+};
+
+/*
+ * statistics of the TransportLayer
+ */
+struct stTransportLayerStats
+{
+        unsigned long ulRxGarbageBytes;
+        unsigned long ulRxPacketLost;
+        /* this is approximate as it is reported and the report could be lost */
+        unsigned long ulRemotePacketLost;
+        /* this is approximate as it is reported and the report could be lost */
+        unsigned long ulRemoteGarbage;
+        unsigned long ulPacketSent;         /* number of normal packets sent */
+        unsigned long ulPacketReceived;
+        unsigned long ulAckReceived;
+        unsigned long ulReliablePacketSent;
+        unsigned long ulReliableRetransmit;
+        unsigned long ulReliablePacketReceived;
+        unsigned long ulMaxRetransmitCount;
+};
+
+struct stTransportLayerStats* stTransportLayerStats_stTransportLayerStats(
+                       struct stTransportLayerStats* p);
+
+
+/* public constants that are built from the customization file */
+#define MAX_OUTGOING_PACKET_SIZE  TLCUST_MAX_OUTGOING_PACKET_SIZE
+#define MAX_INCOMING_PACKET_SIZE  TLCUST_MAX_INCOMING_PACKET_SIZE
+#define RELIABLE_RETRY_TIMEOUT_MS TLCUST_RELIABLE_RETRY_TIMEOUT_MS
+#define RELIABLE_MAX_RETRY        TLCUST_RELIABLE_MAX_RETRY
+#define RELIABLE_MAX_PACKETS      TLCUST_RELIABLE_MAX_PACKETS
+
+#define MAX_HEADER_SIZE 14
+
+/*
+ * The TransportLayer struct exchanges packets with a remote TransportLayer.
+ * The data is a stream of bytes.
+ * The TransportLayer is agnostic to the payload. It supports a reliable
+ * channel that will retransmit packets until the other side acknowledges it
+ * to ensure delivery and order is maintained.
+ */
+
+struct sTransportLayer
+{
+    struct sITransportLayerCb *m_callback;
+
+    unsigned int m_uiParserState;
+    unsigned char m_aucRxMessageBuf[MAX_INCOMING_PACKET_SIZE+MAX_HEADER_SIZE];
+    unsigned int m_uiRxLen;
+    unsigned char m_ucLastRxSeqId;
+    unsigned long m_ulByteCntSinceLastValidPacket;
+
+    unsigned char m_ucLastAckSeqId;
+    unsigned char m_ucReliableSeqId;
+    unsigned char m_ucReliableCrc;
+    unsigned char m_ucDelayAckCount;
+    unsigned short m_usReliableLen;
+
+    unsigned char m_aucTxBuffer[(MAX_OUTGOING_PACKET_SIZE+MAX_HEADER_SIZE+2)*2];
+    unsigned char m_ucTxSeqId;
+    struct sCrc8Bits m_otTxCrc; /* tx CRC */
+
+    struct stTransportLayerStats m_otCurrentStats;
+    struct stTransportLayerStats m_otLastPLUpdatedStats;
+
+    unsigned char m_ucTxReliableSeqId;
+    unsigned char m_ucTxLastAckedSeqId;
+    struct stReliableElement *m_pFirstReliableEl;
+    struct stReliableElement *m_pLastReliableEl;
+    unsigned long m_ulReliableByteCnt;
+
+    bool m_bWait4ReliableAckToProcessNack;
+
+    bool m_bOngoingSync;
+    unsigned long m_ulSyncTimestamp;
+    unsigned long m_ulRetryCnt;
+
+    const char* m_pDebugName;
+
+    /* Here are the BBD-specific items */
+    bool m_bPassThrough;
+};
+
+/* constructor. Need a reference to the IPacketLayerCb for the
+ * callback mechanism.
+ */
+struct sTransportLayer* TransportLayer_TransportLayer(struct sTransportLayer* p,
+                                struct sITransportLayerCb* rCallback, const char *pDebugName);
+void TransportLayer_dtor(struct sTransportLayer* p);
+
+/* Sends a packet to the remote TransportLayer. */
+void TransportLayer_SendPacket(struct sTransportLayer* p, unsigned char *pucData,
+                        unsigned short usSize);
+
+/* Sends a reliable packet to the remote TransportLayer. Delivery is
+ * ensured, and PacketDeliveryNotification callback will be called
+ * (if not NULL) when delivery is confirmed
+ */
+bool TransportLayer_SendReliablePacket(struct sTransportLayer* p,
+                unsigned char *pucData, unsigned short usSize,
+                PacketDeliveryNotification cb, void *pCbData,
+                unsigned long ulCbData);
+
+/* Push data from remote TransportLayer */
+void TransportLayer_SetData(struct sTransportLayer* p, const unsigned char *pucData,
+                unsigned short usSize);
+
+/* Called to refresh internal timers. Should be called when timer
+ * returned by OnTimerSet callback expires
+ */
+void TransportLayer_Tick(struct sTransportLayer* p);
+
+/* Reset the TL seqId. That should be used if the Remote party was reset,
+ * otherwise, the reliable transport will break down, and the statistics
+ * will show inconsistent data
+ */
+void TransportLayer_Reset(struct sTransportLayer* p);
+
+/* The TL layer will start a synchronization with the remote side. That
+ * could be used when started a TL and not sure about the other side state.
+ * A remote sync should happen without any other transactions (i.e. no send
+ * packets!).
+ * OnRemoteSyncComplete is called once this is complete
+ */
+void TransportLayer_StartRemoteSync(struct sTransportLayer* p);
+
+/* Return the size of the data in the reliable buffer (i.e. which has
+ * not been acked yet)
+ */
+unsigned long TransportLayer_GetReliableUsage(const struct sTransportLayer* const p);
+
+/* Return true if it is possible to send a reliable packet
+ * (limited by RELIABLE_MAX_PACKETS packets, and the intrinsic max is 255)
+ */
+bool TransportLayer_IsReliableAvailable(const struct sTransportLayer* const p);
+
+/* Get a reference to the TL statistics */
+const struct stTransportLayerStats* const TransportLayer_GetStats(
+                const struct sTransportLayer* const p);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* TRANSPORT_LAYER_C_H */
+
diff --git a/drivers/sensors/brcm/bbdpl1/transport/transport_layer_custom.h b/drivers/sensors/brcm/bbdpl1/transport/transport_layer_custom.h
new file mode 100644 (file)
index 0000000..5a47e60
--- /dev/null
@@ -0,0 +1,64 @@
+/******************************************************************************* 
+ ** \file transport_layer_custom.h  customization file for the TransportLayer
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef TRANSPORT_LAYER_CUSTOM_H
+#define TRANSPORT_LAYER_CUSTOM_H
+
+/*
+******************* CUSTOMIZATION FILE ********************
+* This file can be edited for your project, and you can customize your transport layer by changing some of the default value
+* Note that you can also define these value from your makefile directly
+*/
+
+/// if defined to 1, the reliable channel will be enabled. If defined to 0, it will be disabled and compiled out
+#ifndef TLCUST_ENABLE_RELIABLE_PL
+    #define TLCUST_ENABLE_RELIABLE_PL 1
+#endif
+
+// Defines the max size of outgoing packet. That should match the max size of incoming packet from the remote TL
+#ifndef TLCUST_MAX_OUTGOING_PACKET_SIZE
+    #define TLCUST_MAX_OUTGOING_PACKET_SIZE 2048
+#endif
+
+// Defines the max size of incoming packet. That should match the max size of outgoing packet from the remote TL
+#ifndef TLCUST_MAX_INCOMING_PACKET_SIZE
+    #define TLCUST_MAX_INCOMING_PACKET_SIZE 2048
+#endif
+
+// Defines the number of millisecond before retrying a reliable packet when no acknowledgement is received.
+#ifndef TLCUST_RELIABLE_RETRY_TIMEOUT_MS
+    #define TLCUST_RELIABLE_RETRY_TIMEOUT_MS 1000
+#endif
+
+// Defines the number of retries before declaring a communication error
+#ifndef TLCUST_RELIABLE_MAX_RETRY
+    #define TLCUST_RELIABLE_MAX_RETRY 10
+#endif
+
+
+// Defines the maximum number of reliable packets that can be in transit(MAX is 255)
+#ifndef TLCUST_RELIABLE_MAX_PACKETS
+    #define TLCUST_RELIABLE_MAX_PACKETS 150
+#endif
+
+#endif /* TRANSPORT_LAYER_CUSTOM_H */
+
diff --git a/drivers/sensors/brcm/bbdpl1/utils/Makefile b/drivers/sensors/brcm/bbdpl1/utils/Makefile
new file mode 100644 (file)
index 0000000..e7d5b69
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# Makefile for the Broadcom Bridge Driver
+#
+
+# Each configuration option enables a list of files.
+obj-$(CONFIG_SENSORS_SSP_BBD)          +=      crc8bits_c.o ring_buffer_c.o stream_codec_c.o
diff --git a/drivers/sensors/brcm/bbdpl1/utils/bbd_utils.h b/drivers/sensors/brcm/bbdpl1/utils/bbd_utils.h
new file mode 100644 (file)
index 0000000..43636c2
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef BBD_UTILS_H_ /* { */
+#define BBD_UTILS_H_
+
+#include <linux/types.h>
+
+#include <linux/kernel.h>
+#include <linux/string.h>
+
+#define ASSERT_COMPILE(test_) \
+    int __static_assert(int assert[(test_) ? 1 : -1])
+
+#ifndef _DIM
+/** Array dimension
+*/
+#define _DIM(x) ((unsigned int)(sizeof(x)/sizeof(*(x))))
+#endif
+
+#endif /* } BBD_UTILS_H_ */
diff --git a/drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.c b/drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.c
new file mode 100644 (file)
index 0000000..8cc9938
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ * \file crc8bits_c.c  8 bits CRC generator
+ */
+
+#include "crc8bits_c.h"
+
+static const unsigned char Crc8Bits_aucCrcTable[] =
+{
+    0x00,0x4d,0x9a,0xd7,0x79,0x34,0xe3,0xae,0xf2,0xbf,0x68,0x25,0x8b,0xc6,0x11,0x5c,
+    0xa9,0xe4,0x33,0x7e,0xd0,0x9d,0x4a,0x07,0x5b,0x16,0xc1,0x8c,0x22,0x6f,0xb8,0xf5,
+    0x1f,0x52,0x85,0xc8,0x66,0x2b,0xfc,0xb1,0xed,0xa0,0x77,0x3a,0x94,0xd9,0x0e,0x43,
+    0xb6,0xfb,0x2c,0x61,0xcf,0x82,0x55,0x18,0x44,0x09,0xde,0x93,0x3d,0x70,0xa7,0xea,
+    0x3e,0x73,0xa4,0xe9,0x47,0x0a,0xdd,0x90,0xcc,0x81,0x56,0x1b,0xb5,0xf8,0x2f,0x62,
+    0x97,0xda,0x0d,0x40,0xee,0xa3,0x74,0x39,0x65,0x28,0xff,0xb2,0x1c,0x51,0x86,0xcb,
+    0x21,0x6c,0xbb,0xf6,0x58,0x15,0xc2,0x8f,0xd3,0x9e,0x49,0x04,0xaa,0xe7,0x30,0x7d,
+    0x88,0xc5,0x12,0x5f,0xf1,0xbc,0x6b,0x26,0x7a,0x37,0xe0,0xad,0x03,0x4e,0x99,0xd4,
+    0x7c,0x31,0xe6,0xab,0x05,0x48,0x9f,0xd2,0x8e,0xc3,0x14,0x59,0xf7,0xba,0x6d,0x20,
+    0xd5,0x98,0x4f,0x02,0xac,0xe1,0x36,0x7b,0x27,0x6a,0xbd,0xf0,0x5e,0x13,0xc4,0x89,
+    0x63,0x2e,0xf9,0xb4,0x1a,0x57,0x80,0xcd,0x91,0xdc,0x0b,0x46,0xe8,0xa5,0x72,0x3f,
+    0xca,0x87,0x50,0x1d,0xb3,0xfe,0x29,0x64,0x38,0x75,0xa2,0xef,0x41,0x0c,0xdb,0x96,
+    0x42,0x0f,0xd8,0x95,0x3b,0x76,0xa1,0xec,0xb0,0xfd,0x2a,0x67,0xc9,0x84,0x53,0x1e,
+    0xeb,0xa6,0x71,0x3c,0x92,0xdf,0x08,0x45,0x19,0x54,0x83,0xce,0x60,0x2d,0xfa,0xb7,
+    0x5d,0x10,0xc7,0x8a,0x24,0x69,0xbe,0xf3,0xaf,0xe2,0x35,0x78,0xd6,0x9b,0x4c,0x01,
+    0xf4,0xb9,0x6e,0x23,0x8d,0xc0,0x17,0x5a,0x06,0x4b,0x9c,0xd1,0x7f,0x32,0xe5,0xa8
+};
+
+// C function to compute the CRC of a memory region
+unsigned char cGet8bitCrc(const unsigned char *pucData, unsigned long ulLen)
+{
+       struct sCrc8Bits otCrc;
+    Crc8Bits_Crc8Bits(&otCrc);
+       Crc8Bits_Update(&otCrc, pucData, ulLen);
+       return Crc8Bits_GetState(&otCrc);
+}
+
+void Crc8Bits_Crc8Bits(struct sCrc8Bits* p)
+{
+    p->m_ucCrcState = 0;
+}
+
+unsigned char Crc8Bits_UpdateByte(struct sCrc8Bits* p, unsigned char ucData)
+{
+    p->m_ucCrcState = Crc8Bits_aucCrcTable[p->m_ucCrcState ^ ucData];
+    return p->m_ucCrcState;
+}
+
+unsigned char Crc8Bits_Update(struct sCrc8Bits* p,
+                        const unsigned char *pucData, unsigned long ulLen)
+{
+    while (ulLen--)
+    {
+        p->m_ucCrcState = Crc8Bits_aucCrcTable[p->m_ucCrcState ^ (*pucData++)];
+    }
+    return p->m_ucCrcState;
+}
+
+unsigned char Crc8Bits_GetState(const struct sCrc8Bits* p)
+{
+    return p->m_ucCrcState;
+}
+
+void Crc8Bits_Reset(struct sCrc8Bits* p)
+{
+    p->m_ucCrcState = 0;
+}
+
+
diff --git a/drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.h b/drivers/sensors/brcm/bbdpl1/utils/crc8bits_c.h
new file mode 100644 (file)
index 0000000..99f063a
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef CRC_8BITS_C_H
+#define CRC_8BITS_C_H
+
+struct sCrc8Bits
+{
+    unsigned char m_ucCrcState;
+};
+
+void Crc8Bits_Crc8Bits(struct sCrc8Bits *p);
+
+void Crc8Bits_Reset(struct sCrc8Bits *p); // Reset the CRC
+
+// Update CRC with array of bytes
+unsigned char Crc8Bits_Update(struct sCrc8Bits *p, const unsigned char *pacData, unsigned long ulLen);
+
+// Update CRC with a single byte
+unsigned char Crc8Bits_UpdateByte(struct sCrc8Bits *p, unsigned char ucData);
+
+// Get the CRC
+unsigned char Crc8Bits_GetState(const struct sCrc8Bits *p);
+
+// C function to compute the CRC of a memory region
+unsigned char cGet8bitCrc(const unsigned char *pacData, unsigned long ulLen);
+
+#endif  /* CRC_8BITS_C_H */
diff --git a/drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.c b/drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.c
new file mode 100644 (file)
index 0000000..efd2e3d
--- /dev/null
@@ -0,0 +1,156 @@
+/******************************************************************************
+ ** \file ring_buffer_c.c  RingBuffer struct definition
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include <linux/string.h>
+#include "ring_buffer_c.h"
+#include "../bbd_internal.h"
+
+void RingBuffer_RingBuffer(struct sRingBuffer* p,
+                        unsigned long ulSizeRingBuffer)
+{
+    p->m_pBase = NULL;
+    p->m_pEnd = NULL;
+    p->m_pTail = NULL;
+    p->m_pHead = NULL;
+    p->m_ulSize = ulSizeRingBuffer;
+    p->m_ulUsed = 0;
+    p->m_bFull = false;
+    p->m_pBase = (unsigned char *) bbd_calloc(ulSizeRingBuffer);
+    if (p->m_pBase != NULL)
+    {
+        p->m_pTail = p->m_pBase;
+        p->m_pHead = p->m_pBase;
+        p->m_pEnd  = p->m_pBase + p->m_ulSize;
+    }
+}
+
+void RingBuffer_dtor(struct sRingBuffer* p) 
+{
+    if (p->m_pBase)
+        bbd_free(p->m_pBase);
+    p->m_pBase = 0;
+}
+
+void RingBuffer_SetData(struct sRingBuffer* p, unsigned char raucData[], unsigned long ulSize)
+{
+    if (p->m_bFull || ulSize == 0)
+    {
+        return;
+    }
+
+    /* Copy what we can until the end of the buffer, and handle rollovers */
+    if (p->m_pHead >= p->m_pTail)
+    {
+        unsigned long ulSizeTillEnd = (unsigned long )(p->m_pEnd-p->m_pHead);
+        if (ulSizeTillEnd > ulSize)
+        {
+            ulSizeTillEnd = ulSize;
+        }
+        memcpy(p->m_pHead, raucData, ulSizeTillEnd);
+        p->m_ulUsed += ulSizeTillEnd;
+        p->m_pHead += ulSizeTillEnd;
+        ulSize -= ulSizeTillEnd;
+        raucData += ulSizeTillEnd;
+        if (p->m_pHead == p->m_pEnd)
+        {
+            p->m_pHead = p->m_pBase;
+            if (p->m_pTail == p->m_pBase)
+            {
+                p->m_bFull = true;
+            }
+        }
+        if (ulSize == 0 || p->m_bFull)
+        {
+            return;
+        }
+    }
+
+    /* at that point, the head is before the tail */
+    {
+    unsigned long ulSizeAvailable = RingBuffer_GetAvailableSize(p);
+    if (ulSizeAvailable > ulSize)
+    {
+        ulSizeAvailable = ulSize;
+    }
+
+    memcpy(p->m_pHead, raucData, ulSizeAvailable);
+    p->m_ulUsed += ulSizeAvailable;
+    p->m_pHead  += ulSizeAvailable;
+    ulSize -= ulSizeAvailable;
+
+    if (p->m_pHead == p->m_pTail)
+    {
+        p->m_bFull = true;
+    }
+    }
+}
+
+unsigned long RingBuffer_GetAvailableSize(const struct sRingBuffer* const p) 
+{
+    return p->m_ulSize-p->m_ulUsed;
+}
+
+
+unsigned long RingBuffer_GetDataSize(const struct sRingBuffer* const p)
+{
+    return p->m_ulUsed;
+}
+
+
+unsigned long RingBuffer_GetData(struct sRingBuffer* p, unsigned char raucData[], unsigned long ulMaxSize)
+{
+    unsigned long ulAvail = RingBuffer_GetDataSize(p);
+    if (ulMaxSize == 0 || ulAvail == 0)
+    {
+        return 0;
+    }
+
+    {
+    unsigned long ulSizeTillEnd = (unsigned long)(p->m_pEnd-p->m_pTail);
+
+
+    if (ulSizeTillEnd > ulMaxSize)
+    {
+        ulSizeTillEnd = ulMaxSize;
+    }
+    if (ulSizeTillEnd > ulAvail)
+    {
+        ulSizeTillEnd = ulAvail;
+    }
+
+    memcpy(raucData, p->m_pTail, ulSizeTillEnd);
+    p->m_ulUsed -= ulSizeTillEnd;
+    ulMaxSize -= ulSizeTillEnd;
+    p->m_pTail += ulSizeTillEnd;
+    raucData += ulSizeTillEnd;
+    if (p->m_pTail == p->m_pEnd)
+    {
+        p->m_pTail = p->m_pBase;
+    }
+    p->m_bFull = false;
+    /* we have at least copied one B, so it is not full anymore */
+
+    /* recursive call on the rest of the array */
+    return ulSizeTillEnd + RingBuffer_GetData(p, raucData, ulMaxSize);
+    }
+}
+
diff --git a/drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.h b/drivers/sensors/brcm/bbdpl1/utils/ring_buffer_c.h
new file mode 100644 (file)
index 0000000..2e40440
--- /dev/null
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ ** \file ring_buffer.h  RingBuffer class declaration
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef RING_BUFFER__C_H
+#define RING_BUFFER__C_H
+
+#include "bbd_utils.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sRingBuffer
+{
+    unsigned char *m_pBase;
+    unsigned char *m_pEnd;
+    unsigned char *m_pTail;
+    unsigned char *m_pHead;
+    unsigned long m_ulSize;   
+    unsigned long m_ulUsed;
+    bool m_bFull;
+};
+
+/* Dynamic memroy will be allocated */
+void RingBuffer_RingBuffer(struct sRingBuffer *p, unsigned long ulSizeRingBuffer);
+void RingBuffer_dtor(struct sRingBuffer *p);
+
+/* push data to the ring buffer. Bytes will be dropped if space is not available */
+void RingBuffer_SetData(struct sRingBuffer *p,
+        unsigned char raucData[], unsigned long ulSize);
+
+/* request the available size */
+unsigned long RingBuffer_GetAvailableSize(const struct sRingBuffer *const p);
+
+/* request the size of the data available */
+unsigned long RingBuffer_GetDataSize(const struct sRingBuffer *const p);
+
+/* get data from the ring buffer. Returns the number of
+ * bytes copied to raucData
+ */
+
+unsigned long RingBuffer_GetData(struct sRingBuffer *p,
+                unsigned char raucData[], unsigned long ulMaxSize);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* RING_BUFFER_H */
diff --git a/drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.c b/drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.c
new file mode 100644 (file)
index 0000000..aef6721
--- /dev/null
@@ -0,0 +1,209 @@
+/******************************************************************************
+ ** \file stream_codec_c.c  StreamCodec class definition
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#include "bbd_utils.h"
+#include "stream_codec_c.h"
+
+#define FAIL_CHECK(_test)       {if(!(_test)){p->m_bFail = true; return;  }}
+#define FAIL_CHECK_RET0(_test)  {if(!(_test)){p->m_bFail = true; return 0;}}
+
+void StreamCodec_StreamCodec(struct sStreamCodec* p, unsigned char* buf,
+                              unsigned int bufsize)
+{
+    p->m_uiOffset    = 0;
+    p->m_pBuf        = buf;
+    p->m_uiMaxOffset = bufsize;
+    p->m_uiBitOffset = 0;
+    p->m_bFail       = false;
+}
+
+unsigned int StreamCodec_GetOffset(struct sStreamCodec* p)
+{
+    // When using bit packing, no other methods should be
+    // called until it's aligned to a byte
+    FAIL_CHECK_RET0(p->m_uiBitOffset == 0);
+
+    return p->m_uiOffset;
+}
+
+unsigned int StreamCodec_GetAvailableSize(struct sStreamCodec* p)
+{
+    FAIL_CHECK_RET0(p->m_uiBitOffset == 0);
+    return (p->m_uiMaxOffset-p->m_uiOffset);
+}
+
+const unsigned char* StreamCodec_GetStreamBuffer(struct sStreamCodec* p)
+{
+    return p->m_pBuf;
+}
+
+void StreamCodec_Reset(struct sStreamCodec* p)
+{
+    p->m_uiOffset = 0;
+    p->m_uiBitOffset = 0;
+    p->m_bFail = false;
+}
+
+bool StreamCodec_Fail(const struct sStreamCodec* const p)
+{
+    return p->m_bFail;
+}
+
+void StreamDecoder_StreamDecoder(struct sStreamCodec* p,
+                unsigned char* buf, unsigned int bufsize)
+{
+    StreamCodec_StreamCodec((struct sStreamCodec *) p, buf, bufsize);
+}
+
+unsigned char StreamDecoder_GetU08(struct sStreamCodec* p)
+{
+    FAIL_CHECK_RET0(p->m_uiBitOffset == 0);
+    FAIL_CHECK_RET0(p->m_uiOffset+1<=p->m_uiMaxOffset);
+
+    return p->m_pBuf[p->m_uiOffset++];
+}
+
+signed char StreamDecoder_GetS08(struct sStreamCodec* p)
+{
+    return (signed char)StreamDecoder_GetU08(p);
+}
+
+unsigned short StreamDecoder_GetU16(struct sStreamCodec* p)
+{
+    FAIL_CHECK_RET0(p->m_uiBitOffset == 0);
+    FAIL_CHECK_RET0(p->m_uiOffset+2<=p->m_uiMaxOffset);
+    {
+    unsigned short usValue  = p->m_pBuf[p->m_uiOffset++];
+                   usValue |= p->m_pBuf[p->m_uiOffset++]<<8;
+    return usValue;
+    }
+}
+
+signed short StreamDecoder_GetS16(struct sStreamCodec* p)
+{
+    return (signed short)StreamDecoder_GetU16(p);
+}
+
+unsigned long StreamDecoder_GetU32(struct sStreamCodec* p)
+{
+    FAIL_CHECK_RET0(p->m_uiBitOffset == 0);
+    FAIL_CHECK_RET0(p->m_uiOffset+4<=p->m_uiMaxOffset);
+
+    {
+        unsigned long ulValue;
+        ulValue  = p->m_pBuf[p->m_uiOffset++];
+        ulValue |= p->m_pBuf[p->m_uiOffset++]<<8;
+        ulValue |= p->m_pBuf[p->m_uiOffset++]<<16;
+        ulValue |= p->m_pBuf[p->m_uiOffset++]<<24;
+
+        return ulValue;
+    }
+}
+
+
+signed long StreamDecoder_GetS32(struct sStreamCodec* p)
+{
+    return (signed long)StreamDecoder_GetU32(p);
+}
+
+unsigned char *StreamDecoder_GetBuffer (struct sStreamCodec* p, unsigned long size)
+{
+    unsigned char* buf = &p->m_pBuf[p->m_uiOffset];
+    if (p->m_uiBitOffset != 0 || p->m_uiOffset+size>p->m_uiMaxOffset)
+    {
+        p->m_bFail = true;
+    }
+    else
+    {
+        p->m_uiOffset+=size;
+    }
+    return buf;
+}
+
+
+
+void StreamEncoder_StreamEncoder(struct sStreamCodec* p,
+                        unsigned char* buf, unsigned int bufsize)
+{
+    StreamCodec_StreamCodec(p, buf, bufsize);
+}
+
+void StreamEncoder_PutU08(struct sStreamCodec* p, unsigned char u8)
+{
+    FAIL_CHECK(p->m_uiBitOffset == 0);
+    FAIL_CHECK(p->m_uiOffset+1<=p->m_uiMaxOffset);
+
+    p->m_pBuf[p->m_uiOffset++] = u8;
+}
+
+void StreamEncoder_PutS08 (struct sStreamCodec* p, signed char s8)
+{
+    StreamEncoder_PutU08(p, (unsigned char)s8);
+}
+
+void StreamEncoder_PutU16 (struct sStreamCodec* p, unsigned short u16)
+{
+    FAIL_CHECK(p->m_uiBitOffset == 0);
+    FAIL_CHECK(p->m_uiOffset+2<=p->m_uiMaxOffset);
+
+    {
+        /* Serialize unsigned short value */
+    p->m_pBuf[p->m_uiOffset++] = (u16)&0xFF;
+    p->m_pBuf[p->m_uiOffset++] = (u16>>8)&0xFF;
+    }
+}
+
+void StreamEncoder_PutS16 (struct sStreamCodec* p, signed short s16)
+{
+    StreamEncoder_PutU16(p, (unsigned short)s16);
+}
+
+void StreamEncoder_PutU32 (struct sStreamCodec* p, unsigned long u32)
+{
+    FAIL_CHECK(p->m_uiBitOffset == 0);
+    FAIL_CHECK(p->m_uiOffset+4<=p->m_uiMaxOffset);
+
+    /* Serialize unsigned long value */
+    {
+    p->m_pBuf[p->m_uiOffset++] = (unsigned char)((u32)&0xFF);
+    p->m_pBuf[p->m_uiOffset++] = (unsigned char)((u32>>8)&0xFF);
+    p->m_pBuf[p->m_uiOffset++] = (unsigned char)((u32>>16)&0xFF);
+    p->m_pBuf[p->m_uiOffset++] = (unsigned char)((u32>>24)&0xFF);
+    }
+}
+
+void StreamEncoder_PutS32 (struct sStreamCodec* p, signed long s32)
+{
+    StreamEncoder_PutU32(p, (unsigned long)s32);
+}
+
+void StreamEncoder_PutBuffer(struct sStreamCodec* p, const unsigned char* buf, unsigned long size)
+{
+    FAIL_CHECK(p->m_uiBitOffset == 0);
+    FAIL_CHECK(p->m_uiOffset+size<=p->m_uiMaxOffset);
+
+    {
+        memcpy(&p->m_pBuf[p->m_uiOffset], buf, size);
+    p->m_uiOffset += size;
+    }
+}
+
diff --git a/drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.h b/drivers/sensors/brcm/bbdpl1/utils/stream_codec_c.h
new file mode 100644 (file)
index 0000000..03586da
--- /dev/null
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ ** \file stream_codec_c.h  StreamCodec struct declaration
+ *
+ * Copyright 2014 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation (the "GPL").
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *  
+ * A copy of the GPL is available at 
+ * http://www.broadcom.com/licenses/GPLv2.php, or by writing to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * The BBD (Broadcom Bridge Driver)
+ */
+
+#ifndef STREAM_CODEC_C_H  /* { */
+#define STREAM_CODEC_C_H
+
+#include "bbd_utils.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct sStreamCodec
+{
+    unsigned int m_uiOffset;
+    unsigned char* m_pBuf;
+    unsigned int m_uiMaxOffset;
+    bool m_bBigEndian;
+    unsigned int m_uiBitOffset;
+    bool m_bFail;
+};
+
+#define sStreamEncoder sStreamCodec
+#define sStreamDecoder sStreamCodec
+
+void StreamCodec_StreamCodec(struct sStreamCodec* p, unsigned char* buf,
+                              unsigned int bufsize);
+/* get size of buffer used */
+unsigned int StreamCodec_GetOffset(struct sStreamCodec *p);
+
+/* get available size in buffer */
+unsigned int StreamCodec_GetAvailableSize(struct sStreamCodec *p);
+
+/* get pointer to the buffer of the stream */
+const unsigned char* StreamCodec_GetStreamBuffer(struct sStreamCodec *p); 
+
+/* clears the buffer. Ready to be used again on same memory buffer */
+void StreamCodec_Reset(struct sStreamCodec *p);
+
+// Fail returns true if an error occured. 
+bool StreamCodec_Fail(const struct sStreamCodec * const p);
+
+void StreamEncoder_StreamEncoder(struct sStreamCodec *p,unsigned char* buf, unsigned int bufsize);
+
+void StreamEncoder_PutU08(struct sStreamCodec *p,unsigned char);
+void StreamEncoder_PutS08(struct sStreamCodec *p,signed char);
+void StreamEncoder_PutU16(struct sStreamCodec *p,unsigned short);
+void StreamEncoder_PutS16(struct sStreamCodec *p,signed short);
+void StreamEncoder_PutU32(struct sStreamCodec *p,unsigned long);
+void StreamEncoder_PutS32(struct sStreamCodec *p,signed long);
+void StreamEncoder_PutBuffer(struct sStreamCodec *p,const unsigned char*, unsigned long);
+
+void StreamDecoder_StreamDecoder(struct sStreamCodec *p,
+                        unsigned char* buf, unsigned int bufsize);
+  unsigned char StreamDecoder_GetU08(struct sStreamCodec *p);
+    signed char StreamDecoder_GetS08(struct sStreamCodec *p);
+ unsigned short StreamDecoder_GetU16(struct sStreamCodec *p);
+   signed short StreamDecoder_GetS16(struct sStreamCodec *p);
+  unsigned long StreamDecoder_GetU32(struct sStreamCodec *p);
+    signed long StreamDecoder_GetS32(struct sStreamCodec *p);
+ unsigned char* StreamDecoder_GetBuffer(struct sStreamCodec *p, unsigned long);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* } STREAM_CODEC_C_H */
diff --git a/drivers/sensors/brcm/factory/accel_icm20610.c b/drivers/sensors/brcm/factory/accel_icm20610.c
new file mode 100644 (file)
index 0000000..f3a443a
--- /dev/null
@@ -0,0 +1,453 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+#define VENDOR         "INVENSENSE"
+#define CHIP_ID                "ICM20610"
+
+#define CALIBRATION_FILE_PATH  "/efs/calibration_data"
+#define CALIBRATION_DATA_AMOUNT        20
+
+/* accel range : 4g */
+#define MAX_ACCEL_1G           8192
+#define MAX_ACCEL_2G           16384
+#define MIN_ACCEL_2G           -16383
+#define MAX_ACCEL_4G           32768
+
+static ssize_t accel_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", VENDOR);
+}
+
+static ssize_t accel_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", CHIP_ID);
+}
+
+int accel_open_calibration(struct ssp_data *data)
+{
+       int iRet = 0;
+       mm_segment_t old_fs;
+       struct file *cal_filp = NULL;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(CALIBRATION_FILE_PATH, O_RDONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               set_fs(old_fs);
+               iRet = PTR_ERR(cal_filp);
+
+               data->accelcal.x = 0;
+               data->accelcal.y = 0;
+               data->accelcal.z = 0;
+
+               return iRet;
+       }
+
+       iRet = cal_filp->f_op->read(cal_filp, (char *)&data->accelcal,
+               3 * sizeof(int), &cal_filp->f_pos);
+       if (iRet != 3 * sizeof(int))
+               iRet = -EIO;
+
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+
+       ssp_dbg("[SSP]: open accel calibration %d, %d, %d\n",
+               data->accelcal.x, data->accelcal.y, data->accelcal.z);
+
+       if ((data->accelcal.x == 0) && (data->accelcal.y == 0)
+               && (data->accelcal.z == 0))
+               return ERROR;
+
+       return iRet;
+}
+
+int set_accel_cal(struct ssp_data *data)
+{
+       int iRet = 0;
+       struct ssp_msg *msg;
+       s16 accel_cal[3];
+
+       if (!(data->uSensorState & (1 << ACCELEROMETER_SENSOR))) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", accel sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return iRet;
+       }
+       accel_cal[0] = data->accelcal.x;
+       accel_cal[1] = data->accelcal.y;
+       accel_cal[2] = data->accelcal.z;
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_SET_ACCEL_CAL;
+       msg->length = 6;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(6, GFP_KERNEL);
+
+       msg->free_buffer = 1;
+       memcpy(msg->buffer, accel_cal, 6);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       pr_info("[SSP] Set accel cal data %d, %d, %d\n", accel_cal[0], accel_cal[1], accel_cal[2]);
+       return iRet;
+}
+
+static int enable_accel_for_cal(struct ssp_data *data)
+{
+       u8 uBuf[4] = { 0, };
+       s32 dMsDelay = get_msdelay(data->adDelayBuf[ACCELEROMETER_SENSOR]);
+       memcpy(&uBuf[0], &dMsDelay, 4);
+
+       if (atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR)) {
+               if (get_msdelay(data->adDelayBuf[ACCELEROMETER_SENSOR]) != 10) {
+                       send_instruction(data, CHANGE_DELAY,
+                               ACCELEROMETER_SENSOR, uBuf, 4);
+                       return SUCCESS;
+               }
+       } else {
+               send_instruction(data, ADD_SENSOR,
+                       ACCELEROMETER_SENSOR, uBuf, 4);
+       }
+
+       return FAIL;
+}
+
+static void disable_accel_for_cal(struct ssp_data *data, int iDelayChanged)
+{
+       u8 uBuf[4] = { 0, };
+       s32 dMsDelay = get_msdelay(data->adDelayBuf[ACCELEROMETER_SENSOR]);
+       memcpy(&uBuf[0], &dMsDelay, 4);
+
+       if (atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR)) {
+               if (iDelayChanged)
+                       send_instruction(data, CHANGE_DELAY,
+                               ACCELEROMETER_SENSOR, uBuf, 4);
+       } else {
+               send_instruction(data, REMOVE_SENSOR,
+                       ACCELEROMETER_SENSOR, uBuf, 4);
+       }
+}
+
+static int accel_do_calibrate(struct ssp_data *data, int iEnable)
+{
+       int iSum[3] = { 0, };
+       int iRet = 0, iCount;
+       struct file *cal_filp = NULL;
+       mm_segment_t old_fs;
+
+       if (iEnable) {
+               data->accelcal.x = 0;
+               data->accelcal.y = 0;
+               data->accelcal.z = 0;
+               set_accel_cal(data);
+               iRet = enable_accel_for_cal(data);
+               msleep(300);
+
+               for (iCount = 0; iCount < CALIBRATION_DATA_AMOUNT; iCount++) {
+                       iSum[0] += data->buf[ACCELEROMETER_SENSOR].x;
+                       iSum[1] += data->buf[ACCELEROMETER_SENSOR].y;
+                       iSum[2] += data->buf[ACCELEROMETER_SENSOR].z;
+                       mdelay(10);
+               }
+               disable_accel_for_cal(data, iRet);
+
+               data->accelcal.x = (iSum[0] / CALIBRATION_DATA_AMOUNT);
+               data->accelcal.y = (iSum[1] / CALIBRATION_DATA_AMOUNT);
+               data->accelcal.z = (iSum[2] / CALIBRATION_DATA_AMOUNT);
+
+               if (data->accelcal.z > 0)
+                       data->accelcal.z -= MAX_ACCEL_1G;
+               else if (data->accelcal.z < 0)
+                       data->accelcal.z += MAX_ACCEL_1G;
+       } else {
+               data->accelcal.x = 0;
+               data->accelcal.y = 0;
+               data->accelcal.z = 0;
+       }
+
+       ssp_dbg("[SSP]: do accel calibrate %d, %d, %d\n",
+               data->accelcal.x, data->accelcal.y, data->accelcal.z);
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(CALIBRATION_FILE_PATH,
+                       O_CREAT | O_TRUNC | O_WRONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               pr_err("[SSP]: %s - Can't open calibration file\n", __func__);
+               set_fs(old_fs);
+               iRet = PTR_ERR(cal_filp);
+               return iRet;
+       }
+
+       iRet = cal_filp->f_op->write(cal_filp, (char *)&data->accelcal,
+               3 * sizeof(int), &cal_filp->f_pos);
+       if (iRet != 3 * sizeof(int)) {
+               pr_err("[SSP]: %s - Can't write the accelcal to file\n",
+                       __func__);
+               iRet = -EIO;
+       }
+
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+       set_accel_cal(data);
+       return iRet;
+}
+
+static ssize_t accel_calibration_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       int iRet;
+       int iCount = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       iRet = accel_open_calibration(data);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - calibration open failed(%d)\n", __func__, iRet);
+
+       ssp_dbg("[SSP] Cal data : %d %d %d - %d\n",
+               data->accelcal.x, data->accelcal.y, data->accelcal.z, iRet);
+
+       iCount = sprintf(buf, "%d %d %d %d\n", iRet, data->accelcal.x,
+                       data->accelcal.y, data->accelcal.z);
+       return iCount;
+}
+
+static ssize_t accel_calibration_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int iRet;
+       int64_t dEnable;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       iRet = kstrtoll(buf, 10, &dEnable);
+       if (iRet < 0)
+               return iRet;
+
+       iRet = accel_do_calibrate(data, (int)dEnable);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - accel_do_calibrate() failed\n", __func__);
+
+       return size;
+}
+
+static ssize_t raw_data_read(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d,%d,%d\n",
+               data->buf[ACCELEROMETER_SENSOR].x,
+               data->buf[ACCELEROMETER_SENSOR].y,
+               data->buf[ACCELEROMETER_SENSOR].z);
+}
+
+static ssize_t accel_reactive_alert_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int iRet = 0;
+       char chTempBuf = 1;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg;
+
+       if (sysfs_streq(buf, "1"))
+               ssp_dbg("[SSP]: %s - on\n", __func__);
+       else if (sysfs_streq(buf, "0"))
+               ssp_dbg("[SSP]: %s - off\n", __func__);
+       else if (sysfs_streq(buf, "2")) {
+               ssp_dbg("[SSP]: %s - factory\n", __func__);
+
+               data->bAccelAlert = 0;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               if (msg == NULL) {
+                       pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+                       return -ENOMEM;
+               }
+               msg->cmd = ACCELEROMETER_FACTORY;
+               msg->length = 1;
+               msg->options = AP2HUB_READ;
+               msg->data = chTempBuf;
+               msg->buffer = &chTempBuf;
+               msg->free_buffer = 0;
+
+               iRet = ssp_spi_sync(data, msg, 3000);
+               data->bAccelAlert = chTempBuf;
+
+               if (iRet != SUCCESS) {
+                       pr_err("[SSP]: %s - accel Selftest Timeout!!\n", __func__);
+                       goto exit;
+               }
+
+               ssp_dbg("[SSP]: %s factory test success!\n", __func__);
+       } else {
+               pr_err("[SSP]: %s - invalid value %d\n", __func__, *buf);
+               return -EINVAL;
+       }
+exit:
+       return size;
+}
+
+static ssize_t accel_reactive_alert_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       bool bSuccess = false;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (data->bAccelAlert == true)
+               bSuccess = true;
+       else
+               bSuccess = false;
+
+       data->bAccelAlert = false;
+       return sprintf(buf, "%u\n", bSuccess);
+}
+
+static ssize_t accel_hw_selftest_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       char chTempBuf[8] = { 2, 0, };
+       s8 init_status = 0, result = -1;
+       s16 shift_ratio[3] = { 0, };
+       int iRet;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       struct ssp_msg *msg;
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               goto exit;
+       }
+       msg->cmd = ACCELEROMETER_FACTORY;
+       msg->length = 8;
+       msg->options = AP2HUB_READ;
+       msg->data = chTempBuf[0];
+       msg->buffer = chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 3000);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP] %s - accel hw selftest Timeout!!\n", __func__);
+               goto exit;
+       }
+
+       init_status = chTempBuf[0];
+       shift_ratio[0] = (s16)((chTempBuf[2] << 8) + chTempBuf[1]);
+       shift_ratio[1] = (s16)((chTempBuf[4] << 8) + chTempBuf[3]);
+       shift_ratio[2] = (s16)((chTempBuf[6] << 8) + chTempBuf[5]);
+       result = chTempBuf[7];
+
+       pr_info("[SSP] %s - %d, %d, %d, %d, %d\n", __func__,
+               init_status, result, shift_ratio[0], shift_ratio[1], shift_ratio[2]);
+
+       return sprintf(buf, "%d,%d.%d,%d.%d,%d.%d\n", result,
+               shift_ratio[0] / 10, shift_ratio[0] % 10,
+               shift_ratio[1] / 10, shift_ratio[1] % 10,
+               shift_ratio[2] / 10, shift_ratio[2] % 10);
+exit:
+       return sprintf(buf, "%d,%d,%d,%d\n", -5, 0, 0, 0);
+}
+
+static ssize_t accel_lowpassfilter_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int iRet = 0, new_enable = 1;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory\n", __func__);
+               goto exit;
+       }
+
+       if (sysfs_streq(buf, "1"))
+               new_enable = 1;
+       else if (sysfs_streq(buf, "0"))
+               new_enable = 0;
+       else
+               ssp_dbg("[SSP]: %s - invalid value!\n", __func__);
+
+       msg->cmd = MSG2SSP_AP_SENSOR_LPF;
+       msg->length = 1;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(1, GFP_KERNEL);
+       if (msg->buffer == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory\n", __func__);
+               kfree(msg);
+               goto exit;
+       }
+
+       *msg->buffer = new_enable;
+       msg->free_buffer = 1;
+
+       iRet = ssp_spi_async(data, msg);
+       if (iRet != SUCCESS)
+               pr_err("[SSP] %s - fail %d\n", __func__, iRet);
+       else
+               pr_info("[SSP] %s - %d\n", __func__, new_enable);
+
+exit:
+       return size;
+}
+
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, accel_name_show, NULL);
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, accel_vendor_show, NULL);
+static DEVICE_ATTR(calibration, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       accel_calibration_show, accel_calibration_store);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IRGRP, raw_data_read, NULL);
+static DEVICE_ATTR(reactive_alert, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       accel_reactive_alert_show, accel_reactive_alert_store);
+static DEVICE_ATTR(selftest, S_IRUSR | S_IRGRP, accel_hw_selftest_show, NULL);
+static DEVICE_ATTR(lowpassfilter, S_IWUSR | S_IWGRP,
+       NULL, accel_lowpassfilter_store);
+
+static struct device_attribute *acc_attrs[] = {
+       &dev_attr_name,
+       &dev_attr_vendor,
+       &dev_attr_calibration,
+       &dev_attr_raw_data,
+       &dev_attr_reactive_alert,
+       &dev_attr_selftest,
+       &dev_attr_lowpassfilter,
+       NULL,
+};
+
+void initialize_accel_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->acc_device, data, acc_attrs,
+               "accelerometer_sensor");
+}
+
+void remove_accel_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->acc_device, acc_attrs);
+}
diff --git a/drivers/sensors/brcm/factory/barcode_emul_tmg3992.c b/drivers/sensors/brcm/factory/barcode_emul_tmg3992.c
new file mode 100644 (file)
index 0000000..9a8597e
--- /dev/null
@@ -0,0 +1,310 @@
+#include "../ssp.h"
+#include <linux/sec_sysfs.h>
+
+#define        VENDOR          "AMS"
+#define        CHIP_ID         "TMG399x"
+
+u8 hop_count;
+u8 is_beaming;
+
+static struct reg_index_table reg_id_table[15] = {
+       {0x81, 0}, {0x88, 1}, {0x8F, 2}, {0x96, 3}, {0x9D, 4},
+       {0xA4, 5}, {0xAB, 6}, {0xB2, 7}, {0xB9, 8}, {0xC0, 9},
+       {0xC7, 10}, {0xCE, 11}, {0xD5, 12}, {0xDC, 13}, {0xE3, 14}
+};
+
+#define BEAMING_ON     1
+#define BEAMING_OFF    0
+#define STOP_BEAMING   0
+
+#define COUNT_TEST     48 /* 0 */
+#define REGISTER_TEST  49 /* 1 */
+#define DATA_TEST      50 /* 2 */
+
+enum {
+       dataset = 0,
+       registerset,
+       countset,
+       start,
+};
+
+enum {
+       reg,
+       index,
+};
+
+void mobeam_write(struct ssp_data *data, int type, u8 *u_buf)
+{
+       int iRet = 0;
+       u8 command = -1;
+       u8 data_length = 0;
+
+       struct ssp_msg *msg;
+
+       if (!(data->uSensorState & (1 << PROXIMITY_SENSOR))) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", proximity sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return;
+       }
+
+       pr_info("[SSP] %s start, command_type = %d\n", __func__, type);
+       switch (type) {
+               case dataset:
+                       command = MSG2SSP_AP_MOBEAM_DATA_SET;
+                       data_length = 128;
+                       break;
+               case registerset:
+                       command = MSG2SSP_AP_MOBEAM_REGISTER_SET;
+                       data_length = 6;
+                       break;
+               case countset:
+                       command = MSG2SSP_AP_MOBEAM_COUNT_SET;
+                       data_length = 1;
+                       break;
+               case start:
+                       command = MSG2SSP_AP_MOBEAM_START;
+                       data_length = 1;
+                       is_beaming = BEAMING_ON;
+                       break;
+               default:
+                       pr_info("[SSP] %s - unknown cmd type\n", __func__);
+                       break;
+       }
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP]: %s - failed to allocate memory\n", __func__);
+               return;
+       }
+       msg->cmd = command;
+       msg->length = data_length;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char *) kzalloc(data_length, GFP_KERNEL);
+       if ((msg->buffer) == NULL) {
+               pr_err("[SSP]: %s - failed to allocate memory\n", __func__);
+               kfree(msg);
+               return;
+       }
+       msg->free_buffer = 1;
+
+       memcpy(msg->buffer, u_buf, data_length);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - MOBEAM CMD fail %d\n", __func__, iRet);
+               return;
+       }
+
+       pr_info("[SSP] %s command = 0x%X\n", __func__, command);
+       return;
+}
+
+void mobeam_stop_set(struct ssp_data *data)
+{
+       int iRet, iReties = 0;
+       struct ssp_msg *msg;
+       u8 buffer = 0;
+
+retries:
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP]: %s - failed to allocate memory\n", __func__);
+               return;
+       }
+       msg->cmd = MSG2SSP_AP_MOBEAM_STOP;
+       msg->length = 1;
+       msg->options = AP2HUB_READ;
+       msg->buffer = &buffer;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP] %s fail %d\n", __func__, iRet);
+
+               if (iReties++ < 2) {
+                       pr_err("[SSP] %s fail, retry\n", __func__);
+                       mdelay(5);
+                       goto retries;
+               }
+       } else {
+               is_beaming = BEAMING_OFF;
+               pr_info("[SSP] %s - success(%u)\n", __func__, is_beaming);
+       }
+       return;
+}
+
+static ssize_t mobeam_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return scnprintf(buf, PAGE_SIZE, "%s\n", VENDOR);
+}
+
+static ssize_t mobeam_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return scnprintf(buf, PAGE_SIZE, "%s\n", CHIP_ID);
+}
+
+static ssize_t barcode_emul_store(struct device *dev,
+               struct device_attribute *attr,
+               const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       u8 send_buf[128] = { 0, };
+       int i;
+
+       memset(send_buf, 0xFF, 128);
+       if (buf[0] == 0xFF && buf[1] != STOP_BEAMING) {
+               pr_info("[SSP] %s - START BEAMING(0x%X, 0x%X)\n", __func__,
+                       buf[0], buf[1]);
+               send_buf[1] = buf[1];
+               mobeam_write(data, start, &send_buf[1]);
+       } else if (buf[0] == 0xFF && buf[1] == STOP_BEAMING) {
+               pr_info("[SSP] %s - STOP BEAMING(0x%X, 0x%X)\n", __func__,
+                       buf[0], buf[1]);
+               if (is_beaming == BEAMING_ON)
+                       mobeam_stop_set(data);
+               else
+                       pr_info("[SSP] %s - skip stop command\n", __func__);
+       } else if (buf[0] == 0x00) {
+               pr_info("[SSP] %s - DATA SET(0x%X, 0x%X)\n", __func__,
+                       buf[0], buf[1]);
+               memcpy(send_buf, &buf[2], 128);
+               pr_info("[SSP] %s - %u %u %u %u %u %u\n", __func__,
+                       send_buf[0], send_buf[1], send_buf[2],
+                       send_buf[3], send_buf[4], send_buf[5]);
+               mobeam_write(data, dataset, send_buf);
+       } else if (buf[0] == 0x80) {
+               pr_info("[SSP] %s - HOP COUNT SET(0x%X, 0x%X)\n", __func__,
+                       buf[0], buf[1]);
+               hop_count = buf[1];
+               mobeam_write(data, countset, &hop_count);
+       } else {
+               pr_info("[SSP] %s - REGISTER SET(0x%X)\n", __func__, buf[0]);
+               for (i = 0; i < 15; i++) {
+                       if (reg_id_table[i].reg == buf[0])
+                               send_buf[0] = reg_id_table[i].index;
+               }
+               send_buf[1] = buf[1];
+               send_buf[2] = buf[2];
+               send_buf[3] = buf[4];
+               send_buf[4] = buf[5];
+               send_buf[5] = buf[7];
+               mobeam_write(data, registerset, send_buf);
+       }
+       return size;
+}
+
+static ssize_t barcode_emul_show(struct device *dev,
+               struct device_attribute *attr,
+               char *buf)
+{
+       return strlen(buf);
+}
+
+static ssize_t barcode_led_status_show(struct device *dev,
+               struct device_attribute *attr,
+               char *buf)
+{
+       return scnprintf(buf, PAGE_SIZE, "%u\n", is_beaming);
+}
+
+static ssize_t barcode_ver_check_show(struct device *dev,
+               struct device_attribute *attr,
+               char *buf)
+{
+       return scnprintf(buf, PAGE_SIZE, "%u\n", 15);
+}
+
+static ssize_t barcode_emul_test_store(struct device *dev,
+               struct device_attribute *attr,
+               const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       u8 barcode_data[14] = {0xFF, 0xAC, 0xDB, 0x36, 0x42, 0x85,
+                       0x0A, 0xA8, 0xD1, 0xA3, 0x46, 0xC5, 0xDA, 0xFF};
+       u8 test_data[128] = { 0, };
+
+       memset(test_data, 0xFF, 128);
+       if (buf[0] == COUNT_TEST) {
+               test_data[0] = 0x80;
+               test_data[1] = 1;
+               pr_info("[SSP] %s, COUNT_TEST - 0x%X, %u\n", __func__,
+                       test_data[0], test_data[1]);
+               mobeam_write(data, countset, &test_data[1]);
+       } else if (buf[0] == REGISTER_TEST) {
+               test_data[0] = 0;
+               test_data[1] = 10;
+               test_data[2] = 20;
+               test_data[3] = 30;
+               test_data[4] = 40;
+               test_data[5] = 50;
+               pr_info("[SSP] %s, REGISTER_TEST - %u: %u %u %u %u %u\n",
+                       __func__, test_data[0], test_data[1], test_data[2],
+                       test_data[3], test_data[4], test_data[5]);
+               mobeam_write(data, registerset, test_data);
+       } else if (buf[0] == DATA_TEST) {
+               memcpy(test_data, &barcode_data[1], 13);
+               pr_info("[SSP] %s, DATA_TEST - 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n",
+                       __func__, test_data[0], test_data[1], test_data[2],
+                       test_data[3], test_data[4], test_data[5]);
+               mobeam_write(data, dataset, test_data);
+       }
+       return size;
+}
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, mobeam_vendor_show, NULL);
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, mobeam_name_show, NULL);
+static DEVICE_ATTR(barcode_send, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       barcode_emul_show, barcode_emul_store);
+static DEVICE_ATTR(barcode_led_status, S_IRUSR | S_IRGRP,      barcode_led_status_show, NULL);
+static DEVICE_ATTR(barcode_ver_check, S_IRUSR | S_IRGRP, barcode_ver_check_show, NULL);
+static DEVICE_ATTR(barcode_test_send, S_IWUSR | S_IWGRP,
+       NULL, barcode_emul_test_store);
+
+void initialize_mobeam(struct ssp_data *data)
+{
+       pr_info("[SSP] %s\n", __func__);
+       data->mobeam_device = sec_device_create(data, "sec_barcode_emul");
+
+       if (IS_ERR(data->mobeam_device))
+               pr_err("[SSP] Failed to create mobeam_dev device\n");
+
+       if (device_create_file(data->mobeam_device, &dev_attr_vendor) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_vendor.attr.name);
+
+       if (device_create_file(data->mobeam_device, &dev_attr_name) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_name.attr.name);
+
+       if (device_create_file(data->mobeam_device, &dev_attr_barcode_send) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_barcode_send.attr.name);
+
+       if (device_create_file(data->mobeam_device, &dev_attr_barcode_led_status) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_barcode_led_status.attr.name);
+
+       if (device_create_file(data->mobeam_device, &dev_attr_barcode_ver_check) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_barcode_ver_check.attr.name);
+
+       if (device_create_file(data->mobeam_device, &dev_attr_barcode_test_send) < 0)
+               pr_err("[SSP] Failed to create device file(%s)!\n",
+                               dev_attr_barcode_test_send.attr.name);
+       is_beaming = BEAMING_OFF;
+}
+
+void remove_mobeam(struct ssp_data *data)
+{
+       pr_info("[SSP] %s\n", __func__);
+
+       device_remove_file(data->mobeam_device, &dev_attr_barcode_test_send);
+       device_remove_file(data->mobeam_device, &dev_attr_barcode_ver_check);
+       device_remove_file(data->mobeam_device, &dev_attr_barcode_led_status);
+       device_remove_file(data->mobeam_device, &dev_attr_barcode_send);
+       device_remove_file(data->mobeam_device, &dev_attr_name);
+       device_remove_file(data->mobeam_device, &dev_attr_vendor);
+}
diff --git a/drivers/sensors/brcm/factory/gesture_tmg399x.c b/drivers/sensors/brcm/factory/gesture_tmg399x.c
new file mode 100644 (file)
index 0000000..e0f1d82
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+#define        VENDOR          "AMS"
+#define        CHIP_ID         "TMG3992"
+
+
+static ssize_t gestrue_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return snprintf(buf, PAGE_SIZE, "%s\n", VENDOR);
+}
+
+static ssize_t gestrue_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return snprintf(buf, PAGE_SIZE, "%s\n", CHIP_ID);
+}
+
+static ssize_t raw_data_read(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d,%d,%d,%d\n",
+               data->buf[GESTURE_SENSOR].data[3],
+               data->buf[GESTURE_SENSOR].data[4],
+               data->buf[GESTURE_SENSOR].data[5],
+               data->buf[GESTURE_SENSOR].data[6]);
+}
+
+static ssize_t gesture_get_selftest_show(struct device *dev,
+               struct device_attribute *attr, char *buf)
+{
+       s16 raw_A = 0, raw_B = 0, raw_C = 0, raw_D = 0;
+       int iRet = 0;
+       char chTempBuf[8] = { 0, };
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       msg->cmd = GESTURE_FACTORY;
+       msg->length = 4;
+       msg->options = AP2HUB_READ;
+       msg->buffer = chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 2000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Gesture Selftest Timeout!!\n", __func__);
+               goto exit;
+       }
+
+       ssp_dbg("[SSP]: %s %d %d %d %d\n",
+               __func__, chTempBuf[0], chTempBuf[1], chTempBuf[2], chTempBuf[3]);
+
+       raw_A = chTempBuf[0];
+       raw_B = chTempBuf[1];
+       raw_C = chTempBuf[2];
+       raw_D = chTempBuf[3];
+
+       pr_info("[SSP] %s: self test A = %d, B = %d, C = %d, D = %d\n",
+               __func__, raw_A, raw_B, raw_C, raw_D);
+
+exit:
+       return sprintf(buf, "%d,%d,%d,%d\n",
+            raw_A, raw_B, raw_C, raw_D);
+}
+
+static ssize_t ir_current_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if(data->uIr_Current == 0)
+               data->uIr_Current = DEFUALT_IR_CURRENT;
+
+       ssp_dbg("[SSP]: %s - Ir_Current Setting = %d\n",
+               __func__, data->uIr_Current);
+
+       return sprintf(buf, "%d\n", data->uIr_Current);
+}
+
+static ssize_t ir_current_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       u16 uNewIrCurrent = DEFUALT_IR_CURRENT;
+       int iRet = 0;
+       u16 current_index = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       static u16 set_current[2][4] = { {12, 25, 50, 100},
+                                         {24, 16, 8, 0} };
+
+       iRet = kstrtou16(buf, 10, &uNewIrCurrent);
+
+       if (iRet < 0)
+               pr_err("[SSP]: %s - kstrtoint failed.(%d)\n", __func__, iRet);
+       else {
+               for(current_index = 0; current_index < 4; current_index++) {
+                       if (set_current[0][current_index] == uNewIrCurrent) {
+                               data->uIr_Current = set_current[1][current_index];
+                               break;
+                       }
+               }
+               if(current_index == 4) // current setting value wrong.
+               {
+                       return ERROR;
+               }
+               set_gesture_current(data, data->uIr_Current);
+               data->uIr_Current= uNewIrCurrent;
+       }
+
+       ssp_dbg("[SSP]: %s - new Ir_Current Setting : %d\n",
+        __func__, data->uIr_Current);
+
+       return size;
+}
+
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, gestrue_vendor_show, NULL);
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, gestrue_name_show, NULL);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IRGRP, raw_data_read, NULL);
+static DEVICE_ATTR(selftest, S_IRUSR | S_IRGRP, gesture_get_selftest_show, NULL);
+static DEVICE_ATTR(ir_current, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       ir_current_show, ir_current_store);
+
+static struct device_attribute *gesture_attrs[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_raw_data,
+       &dev_attr_selftest,
+       &dev_attr_ir_current,
+       NULL,
+};
+
+void initialize_gesture_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->ges_device, data,
+               gesture_attrs, "gesture_sensor");
+}
+
+void remove_gesture_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->ges_device, gesture_attrs);
+}
diff --git a/drivers/sensors/brcm/factory/gyro_icm20610.c b/drivers/sensors/brcm/factory/gyro_icm20610.c
new file mode 100644 (file)
index 0000000..7d5eb1d
--- /dev/null
@@ -0,0 +1,615 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include <linux/kernel.h>
+#include "../ssp.h"
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+#define VENDOR         "INVENSENSE"
+#define CHIP_ID                "ICM20610"
+
+#define CALIBRATION_FILE_PATH  "/efs/gyro_cal_data"
+#define VERBOSE_OUT 1
+#define CALIBRATION_DATA_AMOUNT        20
+#define DEF_GYRO_FULLSCALE     2000
+#define DEF_GYRO_SENS  (32768 / DEF_GYRO_FULLSCALE)
+#define DEF_BIAS_LSB_THRESH_SELF       (40 * DEF_GYRO_SENS)
+#define DEF_RMS_LSB_TH_SELF (5 * DEF_GYRO_SENS)
+#define DEF_RMS_THRESH ((DEF_RMS_LSB_TH_SELF) * (DEF_RMS_LSB_TH_SELF))
+#define DEF_SCALE_FOR_FLOAT (1000)
+#define DEF_RMS_SCALE_FOR_RMS (10000)
+#define DEF_SQRT_SCALE_FOR_RMS (100)
+
+static ssize_t gyro_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", VENDOR);
+}
+
+static ssize_t gyro_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", CHIP_ID);
+}
+
+int gyro_open_calibration(struct ssp_data *data)
+{
+       int iRet = 0;
+       mm_segment_t old_fs;
+       struct file *cal_filp = NULL;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(CALIBRATION_FILE_PATH, O_RDONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               set_fs(old_fs);
+               iRet = PTR_ERR(cal_filp);
+
+               data->gyrocal.x = 0;
+               data->gyrocal.y = 0;
+               data->gyrocal.z = 0;
+
+               return iRet;
+       }
+
+       iRet = cal_filp->f_op->read(cal_filp, (char *)&data->gyrocal,
+               3 * sizeof(int), &cal_filp->f_pos);
+       if (iRet != 3 * sizeof(int))
+               iRet = -EIO;
+
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+
+       ssp_dbg("[SSP]: open gyro calibration %d, %d, %d\n",
+               data->gyrocal.x, data->gyrocal.y, data->gyrocal.z);
+       return iRet;
+}
+
+static int save_gyro_caldata(struct ssp_data *data, s16 *iCalData)
+{
+       int iRet = 0;
+       struct file *cal_filp = NULL;
+       mm_segment_t old_fs;
+
+       data->gyrocal.x = iCalData[0];
+       data->gyrocal.y = iCalData[1];
+       data->gyrocal.z = iCalData[2];
+
+       ssp_dbg("[SSP]: do gyro calibrate %d, %d, %d\n",
+               data->gyrocal.x, data->gyrocal.y, data->gyrocal.z);
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(CALIBRATION_FILE_PATH,
+                       O_CREAT | O_TRUNC | O_WRONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               pr_err("[SSP]: %s - Can't open calibration file\n", __func__);
+               set_fs(old_fs);
+               iRet = PTR_ERR(cal_filp);
+               return -EIO;
+       }
+
+       iRet = cal_filp->f_op->write(cal_filp, (char *)&data->gyrocal,
+               3 * sizeof(int), &cal_filp->f_pos);
+       if (iRet != 3 * sizeof(int)) {
+               pr_err("[SSP]: %s - Can't write gyro cal to file\n", __func__);
+               iRet = -EIO;
+       }
+
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+
+       return iRet;
+}
+
+int set_gyro_cal(struct ssp_data *data)
+{
+       int iRet = 0;
+       struct ssp_msg *msg;
+       s16 gyro_cal[3];
+       if (!(data->uSensorState & (1 << GYROSCOPE_SENSOR))) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", gyro sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return iRet;
+       }
+
+       gyro_cal[0] = data->gyrocal.x;
+       gyro_cal[1] = data->gyrocal.y;
+       gyro_cal[2] = data->gyrocal.z;
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_SET_GYRO_CAL;
+       msg->length = 6;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(6, GFP_KERNEL);
+
+       msg->free_buffer = 1;
+       memcpy(msg->buffer, gyro_cal, 6);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       pr_info("[SSP] Set gyro cal data %d, %d, %d\n", gyro_cal[0], gyro_cal[1], gyro_cal[2]);
+       return iRet;
+}
+
+static ssize_t gyro_power_off(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       ssp_dbg("[SSP]: %s\n", __func__);
+
+       return sprintf(buf, "%d\n", 1);
+}
+
+static ssize_t gyro_power_on(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       ssp_dbg("[SSP]: %s\n", __func__);
+
+       return sprintf(buf, "%d\n", 1);
+}
+
+short ICM20610_gyro_get_temp(struct ssp_data *data)
+{
+       char chTempBuf[2] = { 0};
+       unsigned char reg[2];
+       short temperature = 0;
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               goto exit;
+       }
+       msg->cmd = GYROSCOPE_TEMP_FACTORY;
+       msg->length = 2;
+       msg->options = AP2HUB_READ;
+       msg->buffer = chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 3000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Gyro Temp Timeout!!\n", __func__);
+               goto exit;
+       }
+
+       reg[0] = chTempBuf[1];
+       reg[1] = chTempBuf[0];
+       temperature = (short) (((reg[0]) << 8) | reg[1]);
+       ssp_dbg("[SSP]: %s - %d\n", __func__, temperature);
+
+       exit:
+       return temperature;
+}
+
+
+static ssize_t gyro_get_temp(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       short temperature = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       temperature = ICM20610_gyro_get_temp(data);
+       return sprintf(buf, "%d\n", temperature);
+}
+
+static u32 icm20610_selftest_sqrt(u32 sqsum)
+{
+       u32 sq_rt;
+       u32 g0, g1, g2, g3, g4;
+       u32 seed;
+       u32 next;
+       u32 step;
+
+       g4 = sqsum / 100000000;
+       g3 = (sqsum - g4 * 100000000) / 1000000;
+       g2 = (sqsum - g4 * 100000000 - g3 * 1000000) / 10000;
+       g1 = (sqsum - g4 * 100000000 - g3 * 1000000 - g2 * 10000) / 100;
+       g0 = (sqsum - g4 * 100000000 - g3 * 1000000 - g2 * 10000 - g1 * 100);
+
+       next = g4;
+       step = 0;
+       seed = 0;
+       while (((seed + 1) * (step + 1)) <= next) {
+               step++;
+               seed++;
+       }
+
+       sq_rt = seed * 10000;
+       next = (next - (seed * step)) * 100 + g3;
+
+       step = 0;
+       seed = 2 * seed * 10;
+       while (((seed + 1) * (step + 1)) <= next) {
+               step++;
+               seed++;
+       }
+
+       sq_rt = sq_rt + step * 1000;
+       next = (next - seed * step) * 100 + g2;
+       seed = (seed + step) * 10;
+       step = 0;
+       while (((seed + 1) * (step + 1)) <= next) {
+               step++;
+               seed++;
+       }
+
+       sq_rt = sq_rt + step * 100;
+       next = (next - seed * step) * 100 + g1;
+       seed = (seed + step) * 10;
+       step = 0;
+
+       while (((seed + 1) * (step + 1)) <= next) {
+               step++;
+               seed++;
+       }
+
+       sq_rt = sq_rt + step * 10;
+       next = (next - seed * step) * 100 + g0;
+       seed = (seed + step) * 10;
+       step = 0;
+
+       while (((seed + 1) * (step + 1)) <= next) {
+               step++;
+               seed++;
+       }
+
+       sq_rt = sq_rt + step;
+
+       return sq_rt;
+}
+
+static ssize_t gyro_selftest_store(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       char chTempBuf[36] = { 0,};
+       u8 initialized = 0;
+       s8 hw_result = 0;
+       int i = 0, j = 0, total_count = 0, ret_val = 0;
+       long avg[3] = {0,}, rms[3] = {0,};
+       int gyro_bias[3] = {0,}, gyro_rms[3] = {0,};
+       s16 shift_ratio[3] = {0,};
+       s16 iCalData[3] = {0,};
+       char a_name[3][2] = { "X", "Y", "Z" };
+       int iRet = 0;
+       int dps_rms[3] = { 0, };
+       u32 temp = 0;
+       int bias_thresh = DEF_BIAS_LSB_THRESH_SELF;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               goto exit;
+       }
+       msg->cmd = GYROSCOPE_FACTORY;
+       msg->length = 36;
+       msg->options = AP2HUB_READ;
+       msg->buffer = chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 7000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Gyro Selftest Timeout!!\n", __func__);
+               ret_val = 1;
+               goto exit;
+       }
+
+       data->uTimeOutCnt = 0;
+
+       pr_err("[SSP]%d %d %d %d %d %d %d %d %d %d %d %d\n", chTempBuf[0],
+               chTempBuf[1], chTempBuf[2], chTempBuf[3], chTempBuf[4],
+               chTempBuf[5], chTempBuf[6], chTempBuf[7], chTempBuf[8],
+               chTempBuf[9], chTempBuf[10], chTempBuf[11]);
+
+       initialized = chTempBuf[0];
+       shift_ratio[0] = (s16)((chTempBuf[2] << 8) +
+                               chTempBuf[1]);
+       shift_ratio[1] = (s16)((chTempBuf[4] << 8) +
+                               chTempBuf[3]);
+       shift_ratio[2] = (s16)((chTempBuf[6] << 8) +
+                               chTempBuf[5]);
+       hw_result = (s8)chTempBuf[7];
+       total_count = (int)((chTempBuf[11] << 24) +
+                               (chTempBuf[10] << 16) +
+                               (chTempBuf[9] << 8) +
+                               chTempBuf[8]);
+       avg[0] = (long)((chTempBuf[15] << 24) +
+                               (chTempBuf[14] << 16) +
+                               (chTempBuf[13] << 8) +
+                               chTempBuf[12]);
+       avg[1] = (long)((chTempBuf[19] << 24) +
+                               (chTempBuf[18] << 16) +
+                               (chTempBuf[17] << 8) +
+                               chTempBuf[16]);
+       avg[2] = (long)((chTempBuf[23] << 24) +
+                               (chTempBuf[22] << 16) +
+                               (chTempBuf[21] << 8) +
+                               chTempBuf[20]);
+       rms[0] = (long)((chTempBuf[27] << 24) +
+                               (chTempBuf[26] << 16) +
+                               (chTempBuf[25] << 8) +
+                               chTempBuf[24]);
+       rms[1] = (long)((chTempBuf[31] << 24) +
+                               (chTempBuf[30] << 16) +
+                               (chTempBuf[29] << 8) +
+                               chTempBuf[28]);
+       rms[2] = (long)((chTempBuf[35] << 24) +
+                               (chTempBuf[34] << 16) +
+                               (chTempBuf[33] << 8) +
+                               chTempBuf[32]);
+       pr_info("[SSP] init: %d, total cnt: %d\n", initialized, total_count);
+       pr_info("[SSP] hw_result: %d, %d, %d, %d\n", hw_result,
+               shift_ratio[0], shift_ratio[1], shift_ratio[2]);
+       pr_info("[SSP] avg %+8ld %+8ld %+8ld (LSB)\n", avg[0], avg[1], avg[2]);
+       pr_info("[SSP] rms %+8ld %+8ld %+8ld (LSB)\n", rms[0], rms[1], rms[2]);
+
+       if (total_count == 0) {
+               pr_err("[SSP] %s, total_count is 0. goto exit\n", __func__);
+               ret_val = 2;
+               goto exit;
+       }
+
+       if (hw_result < 0) {
+               pr_err("[SSP] %s - hw selftest fail(%d), sw selftest skip\n",
+                       __func__, hw_result);
+               return sprintf(buf, "-1,0,0,0,0,0,0,%d.%d,%d.%d,%d.%d,0,0,0\n",
+                       shift_ratio[0] / 10, shift_ratio[0] % 10,
+                       shift_ratio[1] / 10, shift_ratio[1] % 10,
+                       shift_ratio[2] / 10, shift_ratio[2] % 10);
+       }
+       gyro_bias[0] = (avg[0] * DEF_SCALE_FOR_FLOAT) / DEF_GYRO_SENS;
+       gyro_bias[1] = (avg[1] * DEF_SCALE_FOR_FLOAT) / DEF_GYRO_SENS;
+       gyro_bias[2] = (avg[2] * DEF_SCALE_FOR_FLOAT) / DEF_GYRO_SENS;
+       iCalData[0] = (s16)avg[0];
+       iCalData[1] = (s16)avg[1];
+       iCalData[2] = (s16)avg[2];
+
+       if (VERBOSE_OUT) {
+               pr_info("[SSP] abs bias : %+8d.%03d %+8d.%03d %+8d.%03d (dps)\n",
+                       (int)abs(gyro_bias[0]) / DEF_SCALE_FOR_FLOAT,
+                       (int)abs(gyro_bias[0]) % DEF_SCALE_FOR_FLOAT,
+                       (int)abs(gyro_bias[1]) / DEF_SCALE_FOR_FLOAT,
+                       (int)abs(gyro_bias[1]) % DEF_SCALE_FOR_FLOAT,
+                       (int)abs(gyro_bias[2]) / DEF_SCALE_FOR_FLOAT,
+                       (int)abs(gyro_bias[2]) % DEF_SCALE_FOR_FLOAT);
+       }
+
+       for (j = 0; j < 3; j++) {
+               if (unlikely(abs(avg[j]) > bias_thresh)) {
+                       pr_err("[SSP] %s-Gyro bias (%ld) exceeded threshold "
+                               "(threshold = %d LSB)\n", a_name[j],
+                               avg[j], bias_thresh);
+                       ret_val |= 1 << (3 + j);
+               }
+       }
+       /* 3rd, check RMS for dead gyros
+          If any of the RMS noise value returns zero,
+          then we might have dead gyro or FIFO/register failure,
+          the part is sleeping, or the part is not responsive */
+       if (rms[0] == 0 || rms[1] == 0 || rms[2] == 0)
+               ret_val |= 1 << 6;
+
+       if (VERBOSE_OUT) {
+               pr_info("[SSP] RMS ^ 2 : %+8ld %+8ld %+8ld\n",
+                       (long)rms[0] / total_count,
+                       (long)rms[1] / total_count, (long)rms[2] / total_count);
+       }
+
+       for (j = 0; j < 3; j++) {
+               if (unlikely(rms[j] / total_count > DEF_RMS_THRESH)) {
+                       pr_err("[SSP] %s-Gyro rms (%ld) exceeded threshold "
+                               "(threshold = %d LSB)\n", a_name[j],
+                               rms[j] / total_count, DEF_RMS_THRESH);
+                       ret_val |= 1 << (7 + j);
+               }
+       }
+
+       for (i = 0; i < 3; i++) {
+               if (rms[i] > 10000) {
+                       temp =
+                           ((u32) (rms[i] / total_count)) *
+                           DEF_RMS_SCALE_FOR_RMS;
+               } else {
+                       temp =
+                           ((u32) (rms[i] * DEF_RMS_SCALE_FOR_RMS)) /
+                           total_count;
+               }
+               if (rms[i] < 0)
+                       temp = 1 << 31;
+
+               dps_rms[i] = icm20610_selftest_sqrt(temp) / DEF_GYRO_SENS;
+
+               gyro_rms[i] =
+                   dps_rms[i] * DEF_SCALE_FOR_FLOAT / DEF_SQRT_SCALE_FOR_RMS;
+       }
+
+       pr_info("[SSP] RMS : %+8d.%03d   %+8d.%03d  %+8d.%03d (dps)\n",
+               (int)abs(gyro_rms[0]) / DEF_SCALE_FOR_FLOAT,
+               (int)abs(gyro_rms[0]) % DEF_SCALE_FOR_FLOAT,
+               (int)abs(gyro_rms[1]) / DEF_SCALE_FOR_FLOAT,
+               (int)abs(gyro_rms[1]) % DEF_SCALE_FOR_FLOAT,
+               (int)abs(gyro_rms[2]) / DEF_SCALE_FOR_FLOAT,
+               (int)abs(gyro_rms[2]) % DEF_SCALE_FOR_FLOAT);
+
+       if (likely(!ret_val)) {
+               save_gyro_caldata(data, iCalData);
+       } else {
+               pr_err("[SSP] ret_val != 0, gyrocal is 0 at all axis\n");
+               data->gyrocal.x = 0;
+               data->gyrocal.y = 0;
+               data->gyrocal.z = 0;
+       }
+
+exit:
+       ssp_dbg("[SSP]: %s - %d,"
+               "%d.%03d,%d.%03d,%d.%03d,"
+               "%d.%03d,%d.%03d,%d.%03d,"
+               "%d.%d,%d.%d,%d.%d,"
+               "%d,%d,%d\n",
+               __func__, ret_val,
+               gyro_bias[0]/1000,
+               (int)abs(gyro_bias[0])%1000,
+               gyro_bias[1]/1000,
+               (int)abs(gyro_bias[1])%1000,
+               gyro_bias[2]/1000,
+               (int)abs(gyro_bias[2])%1000,
+               gyro_rms[0]/1000,
+               (int)abs(gyro_rms[0])%1000,
+               gyro_rms[1]/1000,
+               (int)abs(gyro_rms[1])%1000,
+               gyro_rms[2]/1000,
+               (int)abs(gyro_rms[2])%1000,
+               shift_ratio[0] / 10, shift_ratio[0] % 10,
+               shift_ratio[1] / 10, shift_ratio[1] % 10,
+               shift_ratio[2] / 10, shift_ratio[2] % 10,
+               (int)(total_count/3),
+               (int)(total_count/3),
+               (int)(total_count/3));
+
+       return sprintf(buf, "%d,"
+               "%d.%03d,%d.%03d,%d.%03d,"
+               "%d.%03d,%d.%03d,%d.%03d,"
+               "%d.%d,%d.%d,%d.%d,"
+               "%d,%d,%d\n",
+               ret_val,
+               gyro_bias[0]/1000,
+               (int)abs(gyro_bias[0])%1000,
+               gyro_bias[1]/1000,
+               (int)abs(gyro_bias[1])%1000,
+               gyro_bias[2]/1000,
+               (int)abs(gyro_bias[2])%1000,
+               gyro_rms[0]/1000,
+               (int)abs(gyro_rms[0])%1000,
+               gyro_rms[1]/1000,
+               (int)abs(gyro_rms[1])%1000,
+               gyro_rms[2]/1000,
+               (int)abs(gyro_rms[2])%1000,
+               shift_ratio[0] / 10, shift_ratio[0] % 10,
+               shift_ratio[1] / 10, shift_ratio[1] % 10,
+               shift_ratio[2] / 10, shift_ratio[2] % 10,
+               (int)(total_count/3),
+               (int)(total_count/3),
+               (int)(total_count/3));
+}
+
+static ssize_t gyro_selftest_dps_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t count)
+{
+       int iNewDps = 0;
+       int iRet = 0;
+       char chTempBuf = 0;
+
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg;
+
+       if (!(data->uSensorState & (1 << GYROSCOPE_SENSOR)))
+               goto exit;
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               goto exit;
+       }
+       msg->cmd = GYROSCOPE_DPS_FACTORY;
+       msg->length = 1;
+       msg->options = AP2HUB_READ;
+       msg->buffer = &chTempBuf;
+       msg->free_buffer = 0;
+
+       sscanf(buf, "%d", &iNewDps);
+
+       if (iNewDps == GYROSCOPE_DPS250)
+               msg->options |= 0 << SSP_GYRO_DPS;
+       else if (iNewDps == GYROSCOPE_DPS500)
+               msg->options |= 1 << SSP_GYRO_DPS;
+       else if (iNewDps == GYROSCOPE_DPS2000)
+               msg->options |= 2 << SSP_GYRO_DPS;
+       else {
+               msg->options |= 1 << SSP_GYRO_DPS;
+               iNewDps = GYROSCOPE_DPS500;
+       }
+
+       iRet = ssp_spi_sync(data, msg, 3000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Gyro Selftest DPS Timeout!!\n", __func__);
+               goto exit;
+       }
+
+       if (chTempBuf != SUCCESS) {
+               pr_err("[SSP]: %s - Gyro Selftest DPS Error!!\n", __func__);
+               goto exit;
+       }
+
+       data->uGyroDps = (unsigned int)iNewDps;
+       pr_err("[SSP]: %s - %u dps stored\n", __func__, data->uGyroDps);
+exit:
+       return count;
+}
+
+static ssize_t gyro_selftest_dps_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%u\n", data->uGyroDps);
+}
+
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, gyro_name_show, NULL);
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, gyro_vendor_show, NULL);
+static DEVICE_ATTR(power_off, S_IRUSR | S_IRGRP, gyro_power_off, NULL);
+static DEVICE_ATTR(power_on, S_IRUSR | S_IRGRP, gyro_power_on, NULL);
+static DEVICE_ATTR(temperature, S_IRUSR | S_IRGRP, gyro_get_temp, NULL);
+static DEVICE_ATTR(selftest, S_IRUSR | S_IRGRP, gyro_selftest_store, NULL);
+static DEVICE_ATTR(selftest_dps, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       gyro_selftest_dps_show, gyro_selftest_dps_store);
+
+static struct device_attribute *gyro_attrs[] = {
+       &dev_attr_name,
+       &dev_attr_vendor,
+       &dev_attr_selftest,
+       &dev_attr_power_on,
+       &dev_attr_power_off,
+       &dev_attr_temperature,
+       &dev_attr_selftest_dps,
+       NULL,
+};
+
+void initialize_gyro_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->gyro_device, data, gyro_attrs, "gyro_sensor");
+}
+
+void remove_gyro_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->gyro_device, gyro_attrs);
+}
diff --git a/drivers/sensors/brcm/factory/light_tmg399x.c b/drivers/sensors/brcm/factory/light_tmg399x.c
new file mode 100644 (file)
index 0000000..37f257a
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+#define        VENDOR          "AMS"
+#define        CHIP_ID         "TMG399X"
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+static ssize_t light_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", VENDOR);
+}
+
+static ssize_t light_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", CHIP_ID);
+}
+
+static ssize_t light_lux_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%u,%u,%u,%u,%u,%u\n",
+               data->buf[LIGHT_SENSOR].r, data->buf[LIGHT_SENSOR].g,
+               data->buf[LIGHT_SENSOR].b, data->buf[LIGHT_SENSOR].w,
+               data->buf[LIGHT_SENSOR].a_time, data->buf[LIGHT_SENSOR].a_gain);
+}
+
+static ssize_t light_data_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%u,%u,%u,%u,%u,%u\n",
+               data->buf[LIGHT_SENSOR].r, data->buf[LIGHT_SENSOR].g,
+               data->buf[LIGHT_SENSOR].b, data->buf[LIGHT_SENSOR].w,
+               data->buf[LIGHT_SENSOR].a_time, data->buf[LIGHT_SENSOR].a_gain);
+}
+
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, light_vendor_show, NULL);
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, light_name_show, NULL);
+static DEVICE_ATTR(lux, S_IRUSR | S_IRGRP, light_lux_show, NULL);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IRGRP, light_data_show, NULL);
+
+static struct device_attribute *light_attrs[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_lux,
+       &dev_attr_raw_data,
+       NULL,
+};
+
+void initialize_light_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->light_device, data, light_attrs, "light_sensor");
+}
+
+void remove_light_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->light_device, light_attrs);
+}
diff --git a/drivers/sensors/brcm/factory/magnetic_yas532.c b/drivers/sensors/brcm/factory/magnetic_yas532.c
new file mode 100644 (file)
index 0000000..c6c5ddf
--- /dev/null
@@ -0,0 +1,522 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+#include "magnetic_yas532.h"
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+#define VENDOR         "YAMAHA"
+#define CHIP_ID                "YAS532"
+#define MAG_HW_OFFSET_FILE_PATH        "/efs/hw_offset"
+
+int mag_open_hwoffset(struct ssp_data *data)
+{
+       int iRet = 0;
+       mm_segment_t old_fs;
+       struct file *cal_filp = NULL;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(MAG_HW_OFFSET_FILE_PATH, O_RDONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               pr_err("[SSP] %s: filp_open failed\n", __func__);
+               set_fs(old_fs);
+               iRet = PTR_ERR(cal_filp);
+
+               data->magoffset.x = 0;
+               data->magoffset.y = 0;
+               data->magoffset.z = 0;
+
+               return iRet;
+       }
+
+       iRet = cal_filp->f_op->read(cal_filp, (char *)&data->magoffset,
+               3 * sizeof(char), &cal_filp->f_pos);
+       if (iRet != 3 * sizeof(char)) {
+               pr_err("[SSP] %s: filp_open failed\n", __func__);
+               iRet = -EIO;
+       }
+
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+
+       ssp_dbg("[SSP]: %s: %d, %d, %d\n", __func__,
+               (s8)data->magoffset.x,
+               (s8)data->magoffset.y,
+               (s8)data->magoffset.z);
+
+       if ((data->magoffset.x == 0) && (data->magoffset.y == 0)
+               && (data->magoffset.z == 0))
+               return ERROR;
+
+       return iRet;
+}
+
+int mag_store_hwoffset(struct ssp_data *data)
+{
+       int iRet = 0;
+       struct file *cal_filp = NULL;
+       mm_segment_t old_fs;
+
+       if (get_hw_offset(data) < 0) {
+               pr_err("[SSP]: %s - get_hw_offset failed\n", __func__);
+               return ERROR;
+       } else {
+               old_fs = get_fs();
+               set_fs(KERNEL_DS);
+
+               cal_filp = filp_open(MAG_HW_OFFSET_FILE_PATH,
+                       O_CREAT | O_TRUNC | O_WRONLY, 0666);
+               if (IS_ERR(cal_filp)) {
+                       pr_err("[SSP]: %s - Can't open hw_offset file\n",
+                               __func__);
+                       set_fs(old_fs);
+                       iRet = PTR_ERR(cal_filp);
+                       return iRet;
+               }
+               iRet = cal_filp->f_op->write(cal_filp,
+                       (char *)&data->magoffset,
+                       3 * sizeof(char), &cal_filp->f_pos);
+               if (iRet != 3 * sizeof(char)) {
+                       pr_err("[SSP]: %s - Can't write the hw_offset"
+                               " to file\n", __func__);
+                       iRet = -EIO;
+               }
+               filp_close(cal_filp, current->files);
+               set_fs(old_fs);
+               return iRet;
+       }
+}
+
+int set_hw_offset(struct ssp_data *data)
+{
+       int iRet = 0;
+       struct ssp_msg *msg;
+
+       if (!(data->uSensorState & 0x04)) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", magnetic sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return iRet;
+       }
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_SET_MAGNETIC_HWOFFSET;
+       msg->length = 3;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(3, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = data->magoffset.x;
+       msg->buffer[1] = data->magoffset.y;
+       msg->buffer[2] = data->magoffset.z;
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       pr_info("[SSP]: %s: x: %d, y: %d, z: %d\n", __func__,
+               (s8)data->magoffset.x, (s8)data->magoffset.y, (s8)data->magoffset.z);
+       return iRet;
+}
+
+int set_static_matrix(struct ssp_data *data)
+{
+       int iRet = 0;
+       struct ssp_msg *msg;
+       s16 static_matrix[9] = YAS_STATIC_ELLIPSOID_MATRIX;
+
+       if (!(data->uSensorState & 0x04)) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", magnetic sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return iRet;
+       }
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_SET_MAGNETIC_STATIC_MATRIX;
+       msg->length = 18;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(18, GFP_KERNEL);
+
+       msg->free_buffer = 1;
+       if (data->static_matrix == NULL)
+               memcpy(msg->buffer, static_matrix, 18);
+       else
+               memcpy(msg->buffer, data->static_matrix, 18);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+       pr_info("[SSP]: %s: finished \n", __func__);
+
+       return iRet;
+}
+
+int get_hw_offset(struct ssp_data *data)
+{
+       int iRet = 0;
+       char buffer[3] = { 0, };
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_GET_MAGNETIC_HWOFFSET;
+       msg->length = 3;
+       msg->options = AP2HUB_READ;
+       msg->buffer = buffer;
+       msg->free_buffer = 0;
+
+       data->magoffset.x = 0;
+       data->magoffset.y = 0;
+       data->magoffset.z = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       data->magoffset.x = buffer[0];
+       data->magoffset.y = buffer[1];
+       data->magoffset.z = buffer[2];
+
+       pr_info("[SSP]: %s: x: %d, y: %d, z: %d\n", __func__,
+               (s8)data->magoffset.x,
+               (s8)data->magoffset.y,
+               (s8)data->magoffset.z);
+       return iRet;
+}
+
+static ssize_t magnetic_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", VENDOR);
+}
+
+static ssize_t magnetic_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", CHIP_ID);
+}
+
+static int check_rawdata_spec(struct ssp_data *data)
+{
+       if ((data->buf[GEOMAGNETIC_RAW].x == 0) &&
+               (data->buf[GEOMAGNETIC_RAW].y == 0) &&
+               (data->buf[GEOMAGNETIC_RAW].z == 0))
+               return FAIL;
+       else
+               return SUCCESS;
+}
+
+static ssize_t raw_data_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       pr_info("[SSP] %s - %d,%d,%d\n", __func__,
+               data->buf[GEOMAGNETIC_RAW].x,
+               data->buf[GEOMAGNETIC_RAW].y,
+               data->buf[GEOMAGNETIC_RAW].z);
+
+       if (data->bGeomagneticRawEnabled == false) {
+               data->buf[GEOMAGNETIC_RAW].x = -1;
+               data->buf[GEOMAGNETIC_RAW].y = -1;
+               data->buf[GEOMAGNETIC_RAW].z = -1;
+       } else {
+               if (data->buf[GEOMAGNETIC_RAW].x > 18000)
+                       data->buf[GEOMAGNETIC_RAW].x = 18000;
+               else if (data->buf[GEOMAGNETIC_RAW].x < -18000)
+                       data->buf[GEOMAGNETIC_RAW].x = -18000;
+               if (data->buf[GEOMAGNETIC_RAW].y > 18000)
+                       data->buf[GEOMAGNETIC_RAW].y = 18000;
+               else if (data->buf[GEOMAGNETIC_RAW].y < -18000)
+                       data->buf[GEOMAGNETIC_RAW].y = -18000;
+               if (data->buf[GEOMAGNETIC_RAW].z > 18000)
+                       data->buf[GEOMAGNETIC_RAW].z = 18000;
+               else if (data->buf[GEOMAGNETIC_RAW].z < -18000)
+                       data->buf[GEOMAGNETIC_RAW].z = -18000;
+       }
+       return snprintf(buf, PAGE_SIZE, "%d,%d,%d\n",
+               data->buf[GEOMAGNETIC_RAW].x,
+               data->buf[GEOMAGNETIC_RAW].y,
+               data->buf[GEOMAGNETIC_RAW].z);
+}
+
+static ssize_t raw_data_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       char chTempbuf[4] = { 0 };
+       int iRet;
+       int64_t dEnable;
+       int iRetries = 50;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       s32 dMsDelay = 20;
+       memcpy(&chTempbuf[0], &dMsDelay, 4);
+
+       iRet = kstrtoll(buf, 10, &dEnable);
+       if (iRet < 0)
+               return iRet;
+
+       if (dEnable) {
+               data->buf[GEOMAGNETIC_RAW].x = 0;
+               data->buf[GEOMAGNETIC_RAW].y = 0;
+               data->buf[GEOMAGNETIC_RAW].z = 0;
+
+               send_instruction(data, ADD_SENSOR, GEOMAGNETIC_RAW,
+                       chTempbuf, 4);
+
+               do {
+                       msleep(20);
+                       if (check_rawdata_spec(data) == SUCCESS)
+                               break;
+               } while (--iRetries);
+
+               if (iRetries > 0) {
+                       pr_info("[SSP] %s - success, %d\n", __func__, iRetries);
+                       data->bGeomagneticRawEnabled = true;
+               } else {
+                       pr_err("[SSP] %s - wait timeout, %d\n", __func__,
+                               iRetries);
+                       data->bGeomagneticRawEnabled = false;
+               }
+       } else {
+               send_instruction(data, REMOVE_SENSOR, GEOMAGNETIC_RAW,
+                       chTempbuf, 4);
+               data->bGeomagneticRawEnabled = false;
+       }
+
+       return size;
+}
+
+static int check_data_spec(struct ssp_data *data)
+{
+       if ((data->buf[GEOMAGNETIC_SENSOR].x == 0) &&
+               (data->buf[GEOMAGNETIC_SENSOR].y == 0) &&
+               (data->buf[GEOMAGNETIC_SENSOR].z == 0))
+               return FAIL;
+       else if ((data->buf[GEOMAGNETIC_SENSOR].x > 6500) ||
+               (data->buf[GEOMAGNETIC_SENSOR].x < -6500) ||
+               (data->buf[GEOMAGNETIC_SENSOR].y > 6500) ||
+               (data->buf[GEOMAGNETIC_SENSOR].y < -6500) ||
+               (data->buf[GEOMAGNETIC_SENSOR].z > 6500) ||
+               (data->buf[GEOMAGNETIC_SENSOR].z < -6500))
+               return FAIL;
+       else
+               return SUCCESS;
+}
+
+static ssize_t adc_data_read(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       bool bSuccess = false;
+       u8 chTempbuf[4] = { 0 };
+       s16 iSensorBuf[3] = {0, };
+       int iRetries = 10;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       s32 dMsDelay = 20;
+       memcpy(&chTempbuf[0], &dMsDelay, 4);
+
+       data->buf[GEOMAGNETIC_SENSOR].x = 0;
+       data->buf[GEOMAGNETIC_SENSOR].y = 0;
+       data->buf[GEOMAGNETIC_SENSOR].z = 0;
+
+       if (!(atomic_read(&data->aSensorEnable) & (1 << GEOMAGNETIC_SENSOR)))
+               send_instruction(data, ADD_SENSOR, GEOMAGNETIC_SENSOR,
+                       chTempbuf, 4);
+
+       do {
+               msleep(60);
+               if (check_data_spec(data) == SUCCESS)
+                       break;
+       } while (--iRetries);
+
+       if (iRetries > 0)
+               bSuccess = true;
+
+       iSensorBuf[0] = data->buf[GEOMAGNETIC_SENSOR].x;
+       iSensorBuf[1] = data->buf[GEOMAGNETIC_SENSOR].y;
+       iSensorBuf[2] = data->buf[GEOMAGNETIC_SENSOR].z;
+
+       if (!(atomic_read(&data->aSensorEnable) & (1 << GEOMAGNETIC_SENSOR)))
+               send_instruction(data, REMOVE_SENSOR, GEOMAGNETIC_SENSOR,
+                       chTempbuf, 4);
+
+       pr_info("[SSP]: %s - x = %d, y = %d, z = %d\n", __func__,
+               iSensorBuf[0], iSensorBuf[1], iSensorBuf[2]);
+
+       return sprintf(buf, "%s,%d,%d,%d\n", (bSuccess ? "OK" : "NG"),
+               iSensorBuf[0], iSensorBuf[1], iSensorBuf[2]);
+}
+
+static ssize_t magnetic_get_selftest(struct device *dev,
+               struct device_attribute *attr, char *buf)
+{
+       char chTempBuf[22] = { 0,  };
+       int iRet = 0;
+       s8 id = 0, x = 0, y1 = 0, y2 = 0, dir = 0;
+       s16 sx = 0, sy = 0, ohx = 0, ohy = 0, ohz = 0;
+       s8 err[7] = {-1, };
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               goto exit;
+       }
+       msg->cmd = GEOMAGNETIC_FACTORY;
+       msg->length = 22;
+       msg->options = AP2HUB_READ;
+       msg->buffer = chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Magnetic Selftest Timeout!! %d\n", __func__, iRet);
+               goto exit;
+       }
+
+       id = (s8)(chTempBuf[0]);
+       err[0] = (s8)(chTempBuf[1]);
+       err[1] = (s8)(chTempBuf[2]);
+       err[2] = (s8)(chTempBuf[3]);
+       x = (s8)(chTempBuf[4]);
+       y1 = (s8)(chTempBuf[5]);
+       y2 = (s8)(chTempBuf[6]);
+       err[3] = (s8)(chTempBuf[7]);
+       dir = (s8)(chTempBuf[8]);
+       err[4] = (s8)(chTempBuf[9]);
+       ohx = (s16)((chTempBuf[10] << 8) + chTempBuf[11]);
+       ohy = (s16)((chTempBuf[12] << 8) + chTempBuf[13]);
+       ohz = (s16)((chTempBuf[14] << 8) + chTempBuf[15]);
+       err[6] = (s8)(chTempBuf[16]);
+       sx = (s16)((chTempBuf[17] << 8) + chTempBuf[18]);
+       sy = (s16)((chTempBuf[19] << 8) + chTempBuf[20]);
+       err[5] = (s8)(chTempBuf[21]);
+
+       if (unlikely(id != 0x2))
+               err[0] = -1;
+       if (unlikely(x < -30 || x > 30))
+               err[3] = -1;
+       if (unlikely(y1 < -30 || y1 > 30))
+               err[3] = -1;
+       if (unlikely(y2 < -30 || y2 > 30))
+               err[3] = -1;
+       if (unlikely(sx < 17 || sy < 22))
+               err[5] = -1;
+       if (unlikely(ohx < -600 || ohx > 600))
+               err[6] = -1;
+       if (unlikely(ohy < -600 || ohy > 600))
+               err[6] = -1;
+       if (unlikely(ohz < -600 || ohz > 600))
+               err[6] = -1;
+
+       pr_info("[SSP] %s\n"
+               "[SSP] Test1 - err = %d, id = %d\n"
+               "[SSP] Test3 - err = %d\n"
+               "[SSP] Test4 - err = %d, offset = %d,%d,%d\n"
+               "[SSP] Test5 - err = %d, direction = %d\n"
+               "[SSP] Test6 - err = %d, sensitivity = %d,%d\n"
+               "[SSP] Test7 - err = %d, offset = %d,%d,%d\n"
+               "[SSP] Test2 - err = %d\n",
+               __func__, err[0], id, err[2], err[3], x, y1, y2, err[4], dir,
+               err[5], sx, sy, err[6], ohx, ohy, ohz, err[1]);
+
+exit:
+       return sprintf(buf,
+                       "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
+                       err[0], id, err[2], err[3], x, y1, y2, err[4], dir,
+                       err[5], sx, sy, err[6], ohx, ohy, ohz, err[1]);
+}
+
+static ssize_t hw_offset_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       mag_open_hwoffset(data);
+
+       pr_info("[SSP] %s: %d %d %d\n", __func__,
+               (s8)data->magoffset.x,
+               (s8)data->magoffset.y,
+               (s8)data->magoffset.z);
+
+       return sprintf(buf, "%d %d %d\n",
+               (s8)data->magoffset.x,
+               (s8)data->magoffset.y,
+               (s8)data->magoffset.z);
+}
+
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, magnetic_name_show, NULL);
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, magnetic_vendor_show, NULL);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       raw_data_show, raw_data_store);
+static DEVICE_ATTR(adc, S_IRUSR | S_IRGRP, adc_data_read, NULL);
+static DEVICE_ATTR(selftest, S_IRUSR | S_IRGRP, magnetic_get_selftest, NULL);
+static DEVICE_ATTR(hw_offset, S_IRUSR | S_IRGRP, hw_offset_show, NULL);
+
+static struct device_attribute *mag_attrs[] = {
+       &dev_attr_name,
+       &dev_attr_vendor,
+       &dev_attr_adc,
+       &dev_attr_raw_data,
+       &dev_attr_selftest,
+       &dev_attr_hw_offset,
+       NULL,
+};
+
+int initialize_magnetic_sensor(struct ssp_data *data)
+{
+       int ret;
+
+       ret = set_static_matrix(data);
+       if (ret < 0)
+               pr_err("[SSP]: %s - set_magnetic_static_matrix failed %d\n",
+                       __func__, ret);
+
+       return ret;
+}
+
+void initialize_magnetic_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->mag_device, data, mag_attrs, "magnetic_sensor");
+}
+
+void remove_magnetic_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->mag_device, mag_attrs);
+}
diff --git a/drivers/sensors/brcm/factory/magnetic_yas532.h b/drivers/sensors/brcm/factory/magnetic_yas532.h
new file mode 100644 (file)
index 0000000..4cb765e
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#define YAS_STATIC_ELLIPSOID_MATRIX    {10000, 0, 0, 0, 10000, 0, 0, 0, 10000}
diff --git a/drivers/sensors/brcm/factory/mcu_bcm4773.c b/drivers/sensors/brcm/factory/mcu_bcm4773.c
new file mode 100644 (file)
index 0000000..a65e0d9
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+#define MODEL_NAME                     "BCM4773IUB2G"
+
+ssize_t mcu_revision_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "BR01%u,BR01%u\n", data->uCurFirmRev,
+                       get_module_rev(data));
+}
+
+ssize_t mcu_model_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", MODEL_NAME);
+}
+
+ssize_t mcu_update_kernel_bin_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       ssp_dbg("[SSPBBD]: %s:%d: Ignored some code section.\n",
+               __func__, __LINE__);
+       return sprintf(buf, "NG\n");
+}
+
+ssize_t mcu_update_kernel_crashed_bin_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       ssp_dbg("[SSPBBD]: %s:%d: Ignored some code section.\n",
+               __func__, __LINE__);
+       return sprintf(buf, "NG\n");
+}
+
+ssize_t mcu_update_ums_bin_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       ssp_dbg("[SSPBBD]: %s:%d: Ignored some code section.\n",
+               __func__, __LINE__);
+       return sprintf(buf, "NG\n");
+}
+
+ssize_t mcu_reset_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       reset_mcu(data);
+
+       return sprintf(buf, "OK\n");
+}
+
+ssize_t mcu_dump_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int status = 1, iDelaycnt = 0;
+
+       data->bDumping = true;
+       set_big_data_start(data, BIG_TYPE_DUMP, 0);
+       msleep(300);
+       while (data->bDumping) {
+               mdelay(10);
+               if (iDelaycnt++ > 1000) {
+                       status = 0;
+                       break;
+               }
+       }
+       return sprintf(buf, "%s\n", status ? "OK" : "NG");
+}
+
+static char buffer[FACTORY_DATA_MAX];
+
+ssize_t mcu_factorytest_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int iRet = 0;
+       struct ssp_msg *msg;
+
+       if (sysfs_streq(buf, "1")) {
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               if (msg == NULL) {
+                       pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n",
+                               __func__);
+                       return -ENOMEM;
+               }
+               msg->cmd = MCU_FACTORY;
+               msg->length = 5;
+               msg->options = AP2HUB_READ;
+               msg->buffer = buffer;
+               msg->free_buffer = 0;
+
+               memset(msg->buffer, 0, 5);
+
+               iRet = ssp_spi_async(data, msg);
+
+       } else {
+               pr_err("[SSP]: %s - invalid value %d\n", __func__, *buf);
+               return -EINVAL;
+       }
+
+       ssp_dbg("[SSP]: MCU Factory Test Start! - %d\n", iRet);
+
+       return size;
+}
+
+ssize_t mcu_factorytest_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       bool bMcuTestSuccessed = false;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (data->bSspShutdown == true) {
+               ssp_dbg("[SSP]: %s - MCU Bin is crashed\n", __func__);
+               return sprintf(buf, "NG,NG,NG\n");
+       }
+
+       ssp_dbg("[SSP] MCU Factory Test Data : %u, %u, %u, %u, %u\n", buffer[0],
+                       buffer[1], buffer[2], buffer[3], buffer[4]);
+
+               /* system clock, RTC, I2C Master, I2C Slave, externel pin */
+       if ((buffer[0] == SUCCESS)
+                       && (buffer[1] == SUCCESS)
+                       && (buffer[2] == SUCCESS)
+                       && (buffer[3] == SUCCESS)
+                       && (buffer[4] == SUCCESS))
+               bMcuTestSuccessed = true;
+
+       ssp_dbg("[SSP]: MCU Factory Test Result - %s, %s, %s\n", MODEL_NAME,
+               (bMcuTestSuccessed ? "OK" : "NG"), "OK");
+
+       return sprintf(buf, "%s,%s,%s\n", MODEL_NAME,
+               (bMcuTestSuccessed ? "OK" : "NG"), "OK");
+}
+
+ssize_t mcu_sleep_factorytest_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int iRet = 0;
+       struct ssp_msg *msg;
+
+       if (sysfs_streq(buf, "1")) {
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               if (msg == NULL) {
+                       pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n",
+                               __func__);
+                       return -ENOMEM;
+               }
+               msg->cmd = MCU_SLEEP_FACTORY;
+               msg->length = FACTORY_DATA_MAX;
+               msg->options = AP2HUB_READ;
+               msg->buffer = buffer;
+               msg->free_buffer = 0;
+
+               iRet = ssp_spi_sync(data, msg, 10000);
+
+       } else {
+               pr_err("[SSP]: %s - invalid value %d\n", __func__, *buf);
+               return -EINVAL;
+       }
+
+       ssp_dbg("[SSP]: MCU Sleep Factory Test Start! - %d\n", iRet);
+
+       return size;
+}
+
+ssize_t mcu_sleep_factorytest_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       int iDataIdx, iSensorData = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+       struct sensor_value fsb[SENSOR_MAX];
+       u16 chLength = 0;
+
+       memcpy(&chLength, buffer, 2);
+       memset(fsb, 0, sizeof(struct sensor_value) * SENSOR_MAX);
+
+       for (iDataIdx = 2; iDataIdx < chLength + 2;) {
+               iSensorData = (int)buffer[iDataIdx++];
+
+               if ((iSensorData < 0) ||
+                       (iSensorData >= (SENSOR_MAX - 1))) {
+                       pr_err("[SSP]: %s - Mcu data frame error %d\n",
+                               __func__, iSensorData);
+                       goto exit;
+               }
+
+               data->get_sensor_data[iSensorData]((char *)buffer,
+                       &iDataIdx, &(fsb[iSensorData]));
+       }
+
+       fsb[PRESSURE_SENSOR].pressure[0] -= data->iPressureCal;
+
+exit:
+       ssp_dbg("[SSP]: %s Result\n"
+               "[SSP]: accel %d,%d,%d\n"
+               "[SSP]: gyro %d,%d,%d\n"
+               "[SSP]: mag %d,%d,%d\n"
+               "[SSP]: baro %d,%d\n"
+               "[SSP]: ges %d,%d,%d,%d\n"
+               "[SSP]: prox %u,%u\n"
+               "[SSP]: temp %d,%d,%d\n"
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+               "[SSP]: light %u,%u,%u,%u,%u,%u\n", __func__,
+#else
+               "[SSP]: light %u,%u,%u,%u\n", __func__,
+#endif
+               fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y,
+               fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x,
+               fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z,
+               fsb[GEOMAGNETIC_SENSOR].cal_x, fsb[GEOMAGNETIC_SENSOR].cal_y,
+               fsb[GEOMAGNETIC_SENSOR].cal_z, fsb[PRESSURE_SENSOR].pressure[0],
+               fsb[PRESSURE_SENSOR].pressure[1],
+               fsb[GESTURE_SENSOR].data[0], fsb[GESTURE_SENSOR].data[1],
+               fsb[GESTURE_SENSOR].data[2], fsb[GESTURE_SENSOR].data[3],
+               fsb[PROXIMITY_SENSOR].prox[0], fsb[PROXIMITY_SENSOR].prox[1],
+               fsb[TEMPERATURE_HUMIDITY_SENSOR].x,
+               fsb[TEMPERATURE_HUMIDITY_SENSOR].y,
+               fsb[TEMPERATURE_HUMIDITY_SENSOR].z,
+               fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b,
+               fsb[LIGHT_SENSOR].w
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+               ,fsb[LIGHT_SENSOR].a_time, fsb[LIGHT_SENSOR].a_gain
+#endif
+               );
+
+       return sprintf(buf, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u,"
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+               "%u,%u,%u,%u,%u,%u,%d,%d,%d,%d,%d,%d\n",
+#else
+               "%u,%u,%u,%u,%d,%d,%d,%d,%d,%d\n",
+#endif
+               fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y,
+               fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x,
+               fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z,
+               fsb[GEOMAGNETIC_SENSOR].cal_x, fsb[GEOMAGNETIC_SENSOR].cal_y,
+               fsb[GEOMAGNETIC_SENSOR].cal_z, fsb[PRESSURE_SENSOR].pressure[0],
+               fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[1],
+               fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b,
+               fsb[LIGHT_SENSOR].w,
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+               fsb[LIGHT_SENSOR].a_time, fsb[LIGHT_SENSOR].a_gain,
+#endif
+               fsb[GESTURE_SENSOR].data[0], fsb[GESTURE_SENSOR].data[1],
+               fsb[GESTURE_SENSOR].data[2], fsb[GESTURE_SENSOR].data[3],
+               fsb[TEMPERATURE_HUMIDITY_SENSOR].x,
+               fsb[TEMPERATURE_HUMIDITY_SENSOR].y);
+}
diff --git a/drivers/sensors/brcm/factory/pressure_bmp182.c b/drivers/sensors/brcm/factory/pressure_bmp182.c
new file mode 100644 (file)
index 0000000..d15f8c6
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+#define LPS25H_REV     6
+#define        VENDOR_BOSCH            "BOSCH"
+#define        CHIP_ID_BOSCH           "BMP180"
+#define        VENDOR_STM              "STM"
+#define        CHIP_ID_LPS25H          "LPS25H"
+
+#define CALIBRATION_FILE_PATH          "/efs/FactoryApp/baro_delta"
+
+#define        PR_ABS_MAX      8388607         /* 24 bit 2'compl */
+#define        PR_ABS_MIN      -8388608
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+static ssize_t sea_level_pressure_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       sscanf(buf, "%d", &data->sealevelpressure);
+
+       if (data->sealevelpressure == 0) {
+               pr_info("%s, our->temperature = 0\n", __func__);
+               data->sealevelpressure = -1;
+       }
+
+       pr_info("[SSP] %s sea_level_pressure = %d\n",
+               __func__, data->sealevelpressure);
+       return size;
+}
+
+int pressure_open_calibration(struct ssp_data *data)
+{
+       char chBuf[10] = {0,};
+       int iErr = 0;
+       mm_segment_t old_fs;
+       struct file *cal_filp = NULL;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cal_filp = filp_open(CALIBRATION_FILE_PATH, O_RDONLY, 0666);
+       if (IS_ERR(cal_filp)) {
+               iErr = PTR_ERR(cal_filp);
+               if (iErr != -ENOENT)
+                       pr_err("[SSP]: %s - Can't open calibration file(%d)\n",
+                               __func__, iErr);
+               set_fs(old_fs);
+               return iErr;
+       }
+       iErr = cal_filp->f_op->read(cal_filp,
+               chBuf, 10 * sizeof(char), &cal_filp->f_pos);
+       if (iErr < 0) {
+               pr_err("[SSP]: %s - Can't read the cal data from file (%d)\n",
+                       __func__, iErr);
+               return iErr;
+       }
+       filp_close(cal_filp, current->files);
+       set_fs(old_fs);
+
+       iErr = kstrtoint(chBuf, 10, &data->iPressureCal);
+       if (iErr < 0) {
+               pr_err("[SSP]: %s - kstrtoint failed. %d", __func__, iErr);
+               return iErr;
+       }
+
+       ssp_dbg("[SSP]: open barometer calibration %d\n", data->iPressureCal);
+
+       if (data->iPressureCal < PR_ABS_MIN || data->iPressureCal > PR_ABS_MAX)
+               pr_err("[SSP]: %s - wrong offset value!!!\n", __func__);
+
+       return iErr;
+}
+
+static ssize_t pressure_cabratioin_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int iPressureCal = 0, iErr = 0;
+
+       iErr = kstrtoint(buf, 10, &iPressureCal);
+       if (iErr < 0) {
+               pr_err("[SSP]: %s - kstrtoint failed.(%d)", __func__, iErr);
+               return iErr;
+       }
+
+       if (iPressureCal < PR_ABS_MIN || iPressureCal > PR_ABS_MAX)
+               return -EINVAL;
+
+       data->iPressureCal = (s32)iPressureCal;
+
+       return size;
+}
+
+static ssize_t pressure_cabratioin_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       pressure_open_calibration(data);
+
+       return sprintf(buf, "%d\n", data->iPressureCal);
+}
+
+static ssize_t eeprom_check_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       char chTempBuf  = 0;
+       int iRet = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       msg->cmd = PRESSURE_FACTORY;
+       msg->length = 1;
+       msg->options = AP2HUB_READ;
+       msg->buffer = &chTempBuf;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 3000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Pressure Selftest Timeout!!\n", __func__);
+               goto exit;
+       }
+
+       ssp_dbg("[SSP]: %s - %u\n", __func__, chTempBuf);
+
+       exit:
+       return snprintf(buf, PAGE_SIZE, "%d", chTempBuf);
+}
+
+/* sysfs for vendor & name */
+static ssize_t pressure_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+#if defined(LPS25H_REV)
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if(data->ap_rev >= LPS25H_REV)
+               return sprintf(buf, "%s\n", VENDOR_STM);
+       else
+               return sprintf(buf, "%s\n", VENDOR_BOSCH);
+#else
+       return sprintf(buf, "%s\n", VENDOR_BOSCH);
+#endif
+}
+
+static ssize_t pressure_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+#if defined (LPS25H_REV)
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if(data->ap_rev >= LPS25H_REV)
+               return sprintf(buf, "%s\n", CHIP_ID_LPS25H);
+       else
+               return sprintf(buf, "%s\n", CHIP_ID_BOSCH);
+#else
+       return sprintf(buf, "%s\n", CHIP_ID_BOSCH);
+#endif
+}
+
+static DEVICE_ATTR(vendor,  S_IRUSR | S_IRGRP, pressure_vendor_show, NULL);
+static DEVICE_ATTR(name,  S_IRUSR | S_IRGRP, pressure_name_show, NULL);
+static DEVICE_ATTR(eeprom_check, S_IRUSR | S_IRGRP, eeprom_check_show, NULL);
+static DEVICE_ATTR(calibration,  S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       pressure_cabratioin_show, pressure_cabratioin_store);
+static DEVICE_ATTR(sea_level_pressure, /*S_IRUGO |*/ S_IWUSR | S_IWGRP,
+       NULL, sea_level_pressure_store);
+
+static struct device_attribute *pressure_attrs[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_calibration,
+       &dev_attr_sea_level_pressure,
+       &dev_attr_eeprom_check,
+       NULL,
+};
+
+#if defined (LPS25H_REV)
+static struct device_attribute *pressure_attrs_lps25h[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_calibration,
+       &dev_attr_sea_level_pressure,
+       NULL,
+};
+#endif
+
+void initialize_pressure_factorytest(struct ssp_data *data)
+{
+#if defined (LPS25H_REV)
+       if(data->ap_rev >= LPS25H_REV)
+               sensors_register(data->prs_device, data, pressure_attrs_lps25h,
+                       "barometer_sensor");
+       else
+               sensors_register(data->prs_device, data, pressure_attrs,
+                       "barometer_sensor");
+#else
+       sensors_register(data->prs_device, data, pressure_attrs,
+               "barometer_sensor");
+#endif
+}
+
+void remove_pressure_factorytest(struct ssp_data *data)
+{
+#if defined (LPS25H_REV)
+       if(data->ap_rev >= LPS25H_REV)
+               sensors_unregister(data->prs_device, pressure_attrs_lps25h);
+       else
+               sensors_unregister(data->prs_device, pressure_attrs);
+#else
+       sensors_unregister(data->prs_device, pressure_attrs);
+#endif
+}
diff --git a/drivers/sensors/brcm/factory/prox_tmg399x.c b/drivers/sensors/brcm/factory/prox_tmg399x.c
new file mode 100644 (file)
index 0000000..fbd9c7c
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "../ssp.h"
+
+#define        VENDOR          "AMS"
+#define        CHIP_ID         "TMG399X"
+
+#define CANCELATION_FILE_PATH  "/efs/prox_cal"
+#define LCD_LDI_FILE_PATH      "/sys/class/lcd/panel/window_type"
+
+#define LINE_1         '4'
+#define LINE_2         '2'
+
+#define LDI_OTHERS     '0'
+#define LDI_GRAY       '1'
+#define LDI_WHITE      '2'
+
+#define TBD_HIGH_THRESHOLD     185
+#define TBD_LOW_THRESHOLD      145
+#define WHITE_HIGH_THRESHOLD   185
+#define WHITE_LOW_THRESHOLD    145
+
+/*************************************************************************/
+/* factory Sysfs                                                         */
+/*************************************************************************/
+
+static ssize_t prox_vendor_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", VENDOR);
+}
+
+static ssize_t prox_name_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return sprintf(buf, "%s\n", CHIP_ID);
+}
+
+static ssize_t proximity_avg_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d,%d,%d\n",
+               data->buf[PROXIMITY_RAW].prox[1],
+               data->buf[PROXIMITY_RAW].prox[2],
+               data->buf[PROXIMITY_RAW].prox[3]);
+}
+
+static ssize_t proximity_avg_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       char chTempbuf[4] = { 0 };
+       int iRet;
+       int64_t dEnable;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       s32 dMsDelay = 20;
+       memcpy(&chTempbuf[0], &dMsDelay, 4);
+
+       iRet = kstrtoll(buf, 10, &dEnable);
+       if (iRet < 0)
+               return iRet;
+
+       if (dEnable) {
+               send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, chTempbuf, 4);
+               data->bProximityRawEnabled = true;
+       } else {
+               send_instruction(data, REMOVE_SENSOR, PROXIMITY_RAW,
+                       chTempbuf, 4);
+               data->bProximityRawEnabled = false;
+       }
+
+       return size;
+}
+
+static u16 get_proximity_rawdata(struct ssp_data *data)
+{
+       u16 uRowdata = 0;
+       char chTempbuf[4] = { 0 };
+
+       s32 dMsDelay = 20;
+       memcpy(&chTempbuf[0], &dMsDelay, 4);
+
+       if (data->bProximityRawEnabled == false) {
+               send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, chTempbuf, 4);
+               msleep(200);
+               uRowdata = data->buf[PROXIMITY_RAW].prox[0];
+               send_instruction(data, REMOVE_SENSOR, PROXIMITY_RAW,
+                       chTempbuf, 4);
+       } else {
+               uRowdata = data->buf[PROXIMITY_RAW].prox[0];
+       }
+
+       return uRowdata;
+}
+
+static ssize_t proximity_state_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%u\n", get_proximity_rawdata(data));
+}
+
+static ssize_t proximity_raw_data_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%u\n", get_proximity_rawdata(data));
+}
+
+void get_proximity_threshold(struct ssp_data *data)
+{
+       data->uProxHiThresh = data->uProxHiThresh_default;
+       data->uProxLoThresh = data->uProxLoThresh_default;
+}
+
+int proximity_open_calibration(struct ssp_data *data)
+{
+       int iRet = 0;
+       mm_segment_t old_fs;
+       struct file *cancel_filp = NULL;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cancel_filp = filp_open(CANCELATION_FILE_PATH, O_RDONLY, 0666);
+       if (IS_ERR(cancel_filp)) {
+               iRet = PTR_ERR(cancel_filp);
+               if (iRet != -ENOENT)
+                       pr_err("[SSP]: %s - Can't open cancelation file\n",
+                               __func__);
+               set_fs(old_fs);
+               goto exit;
+       }
+
+       iRet = cancel_filp->f_op->read(cancel_filp,
+               (u8 *)&data->uProxCanc, sizeof(unsigned int), &cancel_filp->f_pos);
+       if (iRet != sizeof(u8)) {
+               pr_err("[SSP]: %s - Can't read the cancel data\n", __func__);
+               iRet = -EIO;
+       }
+
+       if (data->uProxCanc != 0) {
+               /*If there is an offset cal data. */
+               data->uProxHiThresh =
+                       data->uProxHiThresh_default + data->uProxCanc;
+               data->uProxLoThresh =
+                       data->uProxLoThresh_default + data->uProxCanc;
+       }
+
+       pr_info("[SSP] %s: proximity ps_canc = %d, ps_thresh hi - %d lo - %d\n",
+               __func__, data->uProxCanc, data->uProxHiThresh,
+               data->uProxLoThresh);
+
+       filp_close(cancel_filp, current->files);
+       set_fs(old_fs);
+
+exit:
+       return iRet;
+}
+
+static int calculate_proximity_threshold(struct ssp_data *data)
+{
+       if (data->uCrosstalk < 55) {
+               data->uProxCanc = 0;
+               data->uProxCalResult = 2;
+       } else if (data->uCrosstalk <= 120) {
+               data->uProxCanc = data->uCrosstalk * 5 / 10;
+               data->uProxCalResult = 1;
+       } else {
+               data->uProxCanc = 0;
+               data->uProxCalResult = 0;
+               pr_info("[SSP] crosstalk > 120, calibration failed\n");
+               return ERROR;
+       }
+       data->uProxHiThresh = data->uProxHiThresh_default + data->uProxCanc;
+       data->uProxLoThresh = data->uProxLoThresh_default + data->uProxCanc;
+
+       pr_info("[SSP] %s - crosstalk_offset = %u(%u), HI_THD = %u, LOW_THD = %u\n",
+               __func__, data->uProxCanc, data->uCrosstalk,
+               data->uProxHiThresh, data->uProxLoThresh);
+
+       return SUCCESS;
+}
+
+static int proximity_store_cancelation(struct ssp_data *data, int iCalCMD)
+{
+       int iRet = 0;
+       mm_segment_t old_fs;
+       struct file *cancel_filp = NULL;
+
+       if (iCalCMD) {
+               data->uCrosstalk = get_proximity_rawdata(data);
+               iRet = calculate_proximity_threshold(data);
+       } else {
+               data->uProxHiThresh = data->uProxHiThresh_default;
+               data->uProxLoThresh = data->uProxLoThresh_default;
+               data->uProxCanc = 0;
+       }
+
+       if (iRet != ERROR)
+               set_proximity_threshold(data, data->uProxHiThresh,
+                       data->uProxLoThresh);
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       cancel_filp = filp_open(CANCELATION_FILE_PATH,
+                       O_CREAT | O_TRUNC | O_WRONLY | O_SYNC, 0666);
+       if (IS_ERR(cancel_filp)) {
+               pr_err("%s: Can't open cancelation file\n", __func__);
+               set_fs(old_fs);
+               iRet = PTR_ERR(cancel_filp);
+               return iRet;
+       }
+
+       iRet = cancel_filp->f_op->write(cancel_filp, (u8 *)&data->uProxCanc,
+               sizeof(unsigned int), &cancel_filp->f_pos);
+       if (iRet != sizeof(unsigned int)) {
+               pr_err("%s: Can't write the cancel data to file\n", __func__);
+               iRet = -EIO;
+       }
+
+       filp_close(cancel_filp, current->files);
+       set_fs(old_fs);
+
+       return iRet;
+}
+
+static ssize_t proximity_cancel_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       ssp_dbg("[SSP]: uProxThresh : hi : %u lo : %u, uProxCanc = %u\n",
+               data->uProxHiThresh, data->uProxLoThresh, data->uProxCanc);
+
+       return sprintf(buf, "%u,%u,%u\n", data->uProxCanc,
+               data->uProxHiThresh, data->uProxLoThresh);
+}
+
+static ssize_t proximity_cancel_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int iCalCMD = 0, iRet = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (sysfs_streq(buf, "1")) /* calibrate cancelation value */
+               iCalCMD = 1;
+       else if (sysfs_streq(buf, "0")) /* reset cancelation value */
+               iCalCMD = 0;
+       else {
+               pr_debug("%s: invalid value %d\n", __func__, *buf);
+               return -EINVAL;
+       }
+
+       iRet = proximity_store_cancelation(data, iCalCMD);
+       if (iRet < 0) {
+               pr_err("[SSP]: - %s proximity_store_cancelation() failed\n",
+                       __func__);
+               return iRet;
+       }
+
+       ssp_dbg("[SSP]: %s - %u\n", __func__, iCalCMD);
+       return size;
+}
+
+static ssize_t proximity_thresh_high_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       ssp_dbg("[SSP]: uProxThresh = hi - %u, lo - %u\n",
+               data->uProxHiThresh, data->uProxLoThresh);
+
+       return sprintf(buf, "%u,%u\n", data->uProxHiThresh,
+               data->uProxLoThresh);
+}
+
+static ssize_t proximity_thresh_high_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       u16 uNewThresh;
+       int iRet = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       iRet = kstrtou16(buf, 10, &uNewThresh);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - kstrtoint failed.(%d)\n", __func__, iRet);
+       else {
+               if(uNewThresh & 0xfc00)
+                       pr_err("[SSP]: %s - allow 10bits.(%d)\n", __func__, uNewThresh);
+               else {
+                       uNewThresh &= 0x03ff;
+                       data->uProxHiThresh = data->uProxHiThresh_default = uNewThresh;
+                       set_proximity_threshold(data, data->uProxHiThresh,
+                               data->uProxLoThresh);
+               }
+       }
+
+       ssp_dbg("[SSP]: %s - new prox threshold : hi - %u, lo - %u\n",
+               __func__, data->uProxHiThresh, data->uProxLoThresh);
+
+       return size;
+}
+
+static ssize_t proximity_thresh_low_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       ssp_dbg("[SSP]: uProxThresh = hi - %u, lo - %u\n",
+               data->uProxHiThresh, data->uProxLoThresh);
+
+       return sprintf(buf, "%u,%u\n", data->uProxHiThresh,
+               data->uProxLoThresh);
+}
+
+static ssize_t proximity_thresh_low_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       u16 uNewThresh;
+       int iRet = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       iRet = kstrtou16(buf, 10, &uNewThresh);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - kstrtoint failed.(%d)\n", __func__, iRet);
+       else {
+               if(uNewThresh & 0xfc00)
+                       pr_err("[SSP]: %s - allow 10bits.(%d)\n", __func__, uNewThresh);
+               else {
+                       uNewThresh &= 0x03ff;
+                       data->uProxLoThresh = data->uProxLoThresh_default = uNewThresh;
+                       set_proximity_threshold(data, data->uProxHiThresh,
+                               data->uProxLoThresh);
+               }
+       }
+
+       ssp_dbg("[SSP]: %s - new prox threshold : hi - %u, lo - %u\n",
+               __func__, data->uProxHiThresh, data->uProxLoThresh);
+
+       return size;
+}
+
+static ssize_t proximity_cancel_pass_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       pr_info("[SSP] %s, %u\n", __func__, data->uProxCalResult);
+       return snprintf(buf, PAGE_SIZE, "%u\n", data->uProxCalResult);
+}
+
+static ssize_t barcode_emul_enable_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%u\n", data->bBarcodeEnabled);
+}
+
+static ssize_t barcode_emul_enable_store(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int iRet;
+       int64_t dEnable;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       iRet = kstrtoll(buf, 10, &dEnable);
+       if (iRet < 0)
+               return iRet;
+
+       if (dEnable)
+               set_proximity_barcode_enable(data, true);
+       else
+               set_proximity_barcode_enable(data, false);
+
+       return size;
+}
+
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, prox_vendor_show, NULL);
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, prox_name_show, NULL);
+static DEVICE_ATTR(state, S_IRUSR | S_IRGRP, proximity_state_show, NULL);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IRGRP, proximity_raw_data_show, NULL);
+static DEVICE_ATTR(barcode_emul_en, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       barcode_emul_enable_show, barcode_emul_enable_store);
+static DEVICE_ATTR(prox_avg, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       proximity_avg_show, proximity_avg_store);
+static DEVICE_ATTR(prox_cal, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       proximity_cancel_show, proximity_cancel_store);
+static DEVICE_ATTR(thresh_high, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       proximity_thresh_high_show, proximity_thresh_high_store);
+static DEVICE_ATTR(thresh_low, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       proximity_thresh_low_show, proximity_thresh_low_store);
+static DEVICE_ATTR(prox_offset_pass, S_IRUSR | S_IRGRP,
+       proximity_cancel_pass_show, NULL);
+
+static struct device_attribute *prox_attrs[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_state,
+       &dev_attr_raw_data,
+       &dev_attr_prox_avg,
+       &dev_attr_prox_cal,
+       &dev_attr_thresh_high,
+       &dev_attr_thresh_low,
+       &dev_attr_barcode_emul_en,
+       &dev_attr_prox_offset_pass,
+       NULL,
+};
+
+void initialize_prox_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->prox_device, data,
+               prox_attrs, "proximity_sensor");
+}
+
+void remove_prox_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->prox_device, prox_attrs);
+}
diff --git a/drivers/sensors/brcm/gps/Kconfig b/drivers/sensors/brcm/gps/Kconfig
new file mode 100644 (file)
index 0000000..2da40a9
--- /dev/null
@@ -0,0 +1,7 @@
+menu "Broadcom GPS Drivers"
+
+config GPS_BCM47531
+       bool "BROADCOM_GPS_CHIPSET_47531"
+       select SEC_SYSFS
+       default n
+endmenu
diff --git a/drivers/sensors/brcm/gps/Makefile b/drivers/sensors/brcm/gps/Makefile
new file mode 100644 (file)
index 0000000..2b8fedb
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# Makefile for gps devices
+#
+
+obj-$(CONFIG_GPS_BCM47531)             += sec_gps_bcm47531.o
diff --git a/drivers/sensors/brcm/gps/sec_gps_bcm47531.c b/drivers/sensors/brcm/gps/sec_gps_bcm47531.c
new file mode 100644 (file)
index 0000000..2ec596b
--- /dev/null
@@ -0,0 +1,255 @@
+#include <linux/device.h>
+#include <linux/gpio.h>
+#include <linux/of_gpio.h>
+#include <linux/delay.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/slab.h>
+#include <linux/workqueue.h>
+#include <linux/poll.h>
+#include <linux/miscdevice.h>
+#include <linux/sched.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/list.h>
+#include <linux/io.h>
+#include <linux/workqueue.h>
+#include <linux/unistd.h>
+#include <linux/bug.h>
+
+#include <linux/sec_sysfs.h>
+
+static struct device *gps_dev;
+static wait_queue_head_t *p_geofence_wait;
+static unsigned int gps_host_wake_up;
+static unsigned int gps_pwr_on;
+
+/* BRCM
+ * GPS geofence wakeup device implementation
+ * to support waking up gpsd upon arrival of the interrupt
+ * gpsd will select on this device to be notified of fence crossing event
+ */
+
+struct gps_geofence_wake {
+       wait_queue_head_t wait;
+       int irq;
+       int host_req_pin;
+       struct miscdevice misc;
+};
+
+static int gps_geofence_wake_open(struct inode *inode, struct file *filp)
+{
+       struct gps_geofence_wake *ac_data = container_of(filp->private_data,
+                       struct gps_geofence_wake,
+                       misc);
+
+       filp->private_data = ac_data;
+       return 0;
+}
+
+static int gps_geofence_wake_release(struct inode *inode, struct file *filp)
+{
+       return 0;
+}
+
+static unsigned int gps_geofence_wake_poll(struct file *file, poll_table *wait)
+{
+       int gpio_value;
+       struct gps_geofence_wake *ac_data = file->private_data;
+
+       BUG_ON(!ac_data);
+
+       poll_wait(file, &ac_data->wait, wait);
+
+       gpio_value = gpio_get_value(ac_data->host_req_pin);
+
+       /*printk(KERN_INFO "gpio geofence wake host_req=%d\n",gpio_value);*/
+
+       if (gpio_value)
+               return POLLIN | POLLRDNORM;
+
+       return 0;
+}
+
+
+static long gps_geofence_wake_ioctl(struct file *filp,
+               unsigned int cmd, unsigned long arg)
+{
+       /* TODO
+        * Fill in useful commands
+        * (like test helper)
+        */
+       /*
+       switch(cmd) {
+               default:
+       }
+       */
+       return 0;
+}
+
+
+static const struct file_operations gps_geofence_wake_fops = {
+       .owner = THIS_MODULE,
+       .open = gps_geofence_wake_open,
+       .release = gps_geofence_wake_release,
+       .poll = gps_geofence_wake_poll,
+       /*.read = gps_geofence_wake_read,
+       .write = gps_geofence_wake_write,*/
+       .unlocked_ioctl = gps_geofence_wake_ioctl
+};
+
+static struct gps_geofence_wake geofence_wake;
+
+static int gps_geofence_wake_init(int irq, int host_req_pin)
+{
+       int ret;
+
+       struct gps_geofence_wake *ac_data = &geofence_wake;
+       memset(ac_data, 0, sizeof(struct gps_geofence_wake));
+
+       /* misc device setup */
+       /* gps daemon will access "/dev/gps_geofence_wake" */
+       ac_data->misc.minor = MISC_DYNAMIC_MINOR;
+       ac_data->misc.name = "gps_geofence_wake";
+       ac_data->misc.fops = &gps_geofence_wake_fops;
+
+       /* information that be used later */
+       ac_data->irq = irq;
+       ac_data->host_req_pin = host_req_pin;
+
+       /* initialize wait queue : */
+       /* which will be used by poll or select system call */
+       init_waitqueue_head(&ac_data->wait);
+
+       printk(KERN_INFO "%s misc register, name %s, irq %d, host req pin num %d\n",
+               __func__, ac_data->misc.name, irq, host_req_pin);
+
+       ret = misc_register(&ac_data->misc);
+       if (ret != 0) {
+               printk(KERN_ERR "cannot register gps geofence wake miscdev on minor=%d (%d)\n",
+                       MISC_DYNAMIC_MINOR, ret);
+               return -ENODEV;
+       }
+
+       p_geofence_wait = &ac_data->wait;
+
+       return 0;
+}
+
+/* --------------- */
+
+
+/*EXPORT_SYMBOL(p_geofence_wait);*/ /*- BRCM -*/
+
+static irqreturn_t gps_host_wake_isr(int irq, void *dev)
+{
+
+       int gps_host_wake;
+
+       gps_host_wake = gpio_get_value(gps_host_wake_up);
+       irq_set_irq_type(irq,
+               gps_host_wake ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING);
+
+       if (p_geofence_wait && gps_host_wake) {
+               printk(KERN_ERR "%s Wake-up GPS daemon[TRUE]\n", __func__);
+               wake_up_interruptible(p_geofence_wait);
+       }
+
+       return IRQ_HANDLED;
+}
+
+int check_gps_op(void)
+{
+       /* This pin is high when gps is working */
+       int gps_is_running = gpio_get_value(gps_pwr_on);
+
+       pr_debug("LPA : check_gps_op(%d)\n", gps_is_running);
+
+       return gps_is_running;
+}
+EXPORT_SYMBOL(check_gps_op);
+
+static int __init gps_bcm47531_init(void)
+{
+       int irq = 0, ret = 0;
+       const char *gps_node = "samsung,exynos54xx-bcm4753";
+
+       struct device_node *root_node = NULL;
+
+       gps_dev = sec_device_create(NULL, "gps");
+       BUG_ON(!gps_dev);
+
+       root_node = of_find_compatible_node(NULL, NULL, gps_node);
+       if (!root_node) {
+               WARN(1, "failed to get device node of bcm4753\n");
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+
+       //========== GPS_PWR_EN ============//
+       gps_pwr_on = of_get_gpio(root_node, 0);
+       if (!gpio_is_valid(gps_pwr_on)) {
+               WARN(1, "Invalied gpio pin : %d\n", gps_pwr_on);
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+
+       if (gpio_request(gps_pwr_on, "GPS_PWR_EN")) {
+               WARN(1, "fail to request gpio(GPS_PWR_EN)\n");
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+       gpio_direction_output(gps_pwr_on, 0);
+       gpio_export(gps_pwr_on, 1);
+       gpio_export_link(gps_dev, "GPS_PWR_EN", gps_pwr_on);
+
+       //========== GPS_HOST_WAKE ============//
+       gps_host_wake_up = of_get_gpio(root_node, 1);
+       if (!gpio_is_valid(gps_host_wake_up)) {
+               WARN(1, "Invalied gpio pin : %d\n", gps_host_wake_up);
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+
+       if (gpio_request(gps_host_wake_up, "GPS_HOST_WAKE")) {
+               WARN(1, "fail to request gpio(GPS_HOST_WAKE)\n");
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+       gpio_direction_input(gps_host_wake_up);
+       gpio_export(gps_host_wake_up, 1);
+       gpio_export_link(gps_dev, "GPS_HOST_WAKE", gps_host_wake_up);
+
+       irq = gpio_to_irq(gps_host_wake_up);
+       ret = gps_geofence_wake_init(irq, gps_host_wake_up);
+       if (ret) {
+               pr_err("[GPS] gps_geofence_wake_init failed.\n");
+               ret = -ENODEV;
+               goto err_sec_device_create;
+       }
+
+       ret = request_irq(irq, gps_host_wake_isr,
+               IRQF_TRIGGER_RISING, "gps_host_wake", NULL);
+       if (ret) {
+               pr_err("[GPS] Request_host wake irq failed.\n");
+               ret = -ENODEV;
+               goto err_free_irq;
+       }
+
+       ret = irq_set_irq_wake(irq, 1);
+       if (ret) {
+               pr_err("[GPS] Set_irq_wake failed.\n");
+               ret = -ENODEV;
+               goto err_free_irq;
+       }
+
+       return 0;
+
+err_free_irq:
+       free_irq(irq, NULL);
+err_sec_device_create:
+       sec_device_destroy(gps_dev->devt);
+       return ret;
+}
+
+device_initcall(gps_bcm47531_init);
diff --git a/drivers/sensors/brcm/platform/bbd_s333_patch_file.h b/drivers/sensors/brcm/platform/bbd_s333_patch_file.h
new file mode 100644 (file)
index 0000000..fad7584
--- /dev/null
@@ -0,0 +1,12881 @@
+"<FormatVersion=0x00010001>\n" 
+"<Crc=118>\n" 
+"<BlobLength=296020>\n" 
+"<AsicVersion=0x47730A20>\n" 
+"<ChangeList=4294967295>\n" 
+"<PatchLevel=0>\n" 
+"<PostPatchLevel=1>\n" 
+"<Name=bcm_sensorhub_a2>\n" 
+"<Type=Patch>\n" 
+"<PatchAddress=0x00824401>\n" 
+"<Blob=F194030040820050AA8900014482004151860075518600\n" 
+"A9518600DD518600115286000000000000000000000000\n" 
+"000000000043528600435286000000000039778200ED7C\n" 
+"820043528600435286004352860059A282004352860043\n" 
+"52860043528600435286004789820069898200C1898200\n" 
+"E3898200058A8200278A8200498A82006B8A82008D8A82\n" 
+"00AF8A8200D18A8200F38A8200158B82002F8B8200498B\n" 
+"8200638B820043528600435286004352860043528600DB\n" 
+"8C8200018D8200398D82008B8D820065D98200AFD98200\n" 
+"75DA820043528600657582009D75820043528600435286\n" 
+"00C9BC8200EDBC820039BD820043528600435286004352\n" 
+"8600C9E382008FC8820043528600435286004352860043\n" 
+"52860043528600435286004F54830071548300C9548300\n" 
+"EB5483000D5583002F558300AB778300BD778300435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286004352860043528600435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286004352860043528600435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000F1\n" 
+"9403904382000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000AA\n" 
+"AAAAAA72B6DFF82C00016841F47001016009494FF0E020\n" 
+"C0F8081D4FF0000080F31488DFF814D0C046C04600F008\n" 
+"F800F014F888ED00E00040820050AA89004EF68851CEF2\n" 
+"0001086840F4700008604FF00070E1EE100A7047704701\n" 
+"20C046002801D000F014F80020C046C04600F0FFF800F0\n" 
+"13FA8268521C8260426832B10268531C03601170416849\n" 
+"1E4160704710B5074979441831064C7C44163404E00A68\n" 
+"081D511888470146A142F8D110BD0C7404004C74040080\n" 
+"B501211E2000F0FCF901211F2000F0F8F900F045FA28B1\n" 
+"022830D03ED303280ED048E0022100F0ECF90221012000\n" 
+"F0E8F90221022000F0E4F90221032037E00021002000F0\n" 
+"DDF90021012000F0D9F90021022000F0D5F90021032000\n" 
+"F0D1F901210A2000F0CDF901210B2000F0C9F901211320\n" 
+"00F0C5F90121142018E00121002000F0BEF90121012000\n" 
+"F0BAF90121022000F0B6F90121032005E00321002000F0\n" 
+"AFF90321012000F0ABF90121092000F0A7F903E0D821A9\n" 
+"4800F00DFC0120BDE8024000F052BD80B5A64800210160\n" 
+"A54800F06FFD00F095FD00F0B7FD00F0B5FEFCE700B585\n" 
+"B0A04800F063FD01F057FB00F0DFFA10F1010F00D1FEE7\n" 
+"9C4800F058FDFFF77CFF00F0CAF928B102280FD015D303\n" 
+"281AD027E001208DF80C0000F0B8F9049010B94FF46120\n" 
+"0490914818E003208DF80C00002004908E4811E004208D\n" 
+"F80C00002004908C480AE002208DF80C0000F09EF90490\n" 
+"10B94FF461200490874800F026FD04E04FF4D6717C4800\n" 
+"F0B2FB01F0CBFB824800F01BFD03A801F015FC804800F0\n" 
+"15FD01F08AFE7F4800F010FD022002904FF4407001907C\n" 
+"4800907C4B04227C497C4801F099FE7C4800F000FD05B0\n" 
+"00BD10B586B0794800F017FD794800F014FD00F0A3F977\n" 
+"4800F00FFD7748006800F00BFD764800F008FD75480021\n" 
+"01607548016000F02FF90020C046C0466F4800F0DDFC02\n" 
+"F06AF801211E2000F0FEF801211F2000F0FAF86C4800F0\n" 
+"D0FC00F0E8F800F0E8F800F0E8F80021002000F0EDF800\n" 
+"A9002002F0EEFD00208DF800008DF8020000A902F03AFD\n" 
+"0021012000F0DDF800A9012002F0DEFD00208DF800008D\n" 
+"F8020000A9012002F029FD0021022000F0CCF800A9F194\n" 
+"0320478200022002F0CDFD00208DF8000002208DF80200\n" 
+"00A902F018FD0021032000F0BBF800A9032002F0BCFD00\n" 
+"208DF800008DF8020000A9032002F007FD00F067F9F0B9\n" 
+"454800F081FC03A80020C04660B962B603A802F08DFF04\n" 
+"4600F076FC24B14FF41371244800F002FB9DF80C0000F0\n" 
+"DFF8049800F0D6F872B6384800F065FC00F0D9F818B100\n" 
+"F0D6F803280ED100F0CCF83349884209D3334800F056FC\n" 
+"022002F02DF8052002F02AF805E0042002F026F82D4800\n" 
+"F049FC03F013F82C484078401C2A49487003F04EFA03F0\n" 
+"81FA03F074FCFFF7D2FE0220C046C046254800F034FC00\n" 
+"F0FCF923480121017002F0C8FF002006B010BD28728600\n" 
+"1882890000005505000066060100660602006606030066\n" 
+"060400660605006606190066061A0066061B0066061C82\n" 
+"89007D458200347286001C858900000166060100220214\n" 
+"2023080000110140000B40010011010C200E4010200E40\n" 
+"040022020200220203002202016A18000A002202090022\n" 
+"021C278800000122028488890003F034BD00F0C9B91448\n" 
+"00E0144808214FF0FF3240F8042B491EFBD17047002224\n" 
+"2819D20F220F4B03EBC0035B689A400C4B53F830301B68\n" 
+"9343DFF828C00CEBC00CDCF804C001FA0CF11140194305\n" 
+"4A52F83000016001221046704780E100E080E200E09865\n" 
+"8600A4480021016041608160C1600161416100F0C3BB9F\n" 
+"48A049096841619F490968016170479E48002101609E48\n" 
+"0160704710B1012802D07047994800E099480160704794\n" 
+"49C86070479248C06870479149486070478F4840687047\n" 
+"00B5024692480221002303F008FD8A49086000BD894909\n" 
+"68884200D2704780B508E04FF47A714843844909688842\n" 
+"00D2704780B581490968B0FBF1F0009001E0C046C04600\n" 
+"98411E00910028F8D101BD002000687047042000687047\n" 
+"7D480068006870477B4800684068704780B57948006800\n" 
+"F00700062802D007281ED001BD764800F062FB02211E20\n" 
+"FFF767FF02211F20FFF763FF02212020FFF75FFF022121\n" 
+"20FFF75BFF02212220FFF757FF02212320FFF753FF6948\n" 
+"6A4904E06A4800F044FB664869490160654800680028FB\n" 
+"D101BD10B560480468654800F036FB600704D4634800F0\n" 
+"31FB002010BD04F00700042806D048D3062816D00AD307\n" 
+"2837D042E05C4800F021FB4C4802214160012010BD5948\n" 
+"00F019FB4848032141604FF46121C160022010BD4C4800\n" 
+"F00EFB02211E20FFF713FF02211F20FFF70FFF02212020\n" 
+"FFF70BFF02212120FFF707FF02212220FFF703FFF19403\n" 
+"B04A820002212320FFF7FFFE3F48404901603E48006800\n" 
+"28FBD1032010BD3D4800F0EAFA39483C49016038480068\n" 
+"0028FBD1042010BD3D4800F0DEFA33483C490160324800\n" 
+"680028FBD1052010BD81B0384839490160022000903848\n" 
+"00990160374800680090009820F0020000903448009901\n" 
+"6003200090304800990160314800680090009840084000\n" 
+"0090009840F0010000902B480099016000980028FCD101\n" 
+"B0704780B52848009001232748026846F26661022003F0\n" 
+"ADFD01BD80B5022003F082FD02280BD11F48009001231F\n" 
+"48026846F26661022003F09CFD012002BD4FF0FF3002BD\n" 
+"0000785D890020000E4024000E4030000E4034000E4000\n" 
+"1A711808ED00E000020E4006001101905D8900020011C9\n" 
+"07001101030011C9090011010300110104001101050011\n" 
+"0108001101040011C9FC000B407347BCBCE0000B40E400\n" 
+"0B4000000B4041B686003C2C88002DE97043002003F013\n" 
+"FE0646002146F26662002303F0B2FB46F26662A2FB0089\n" 
+"A6EB0800411C022003F0DAFD0220BDE8464303F093BD02\n" 
+"2003F0BCBD2DE9FC420646022003F0B6FD002003F0F1FD\n" 
+"0446002146F266621546002303F08FFB2A46A2FB0079E0\n" 
+"1B421C0023E5FB062311462A46022003F0B4FD0220BDE8\n" 
+"F64203F06DBD0000DFF85CD3D748D8497047DFF854D3D5\n" 
+"48D54A704772B670470047704772B602464FF0000080F3\n" 
+"1488D0488047104772B64FF0000282F314888546084700\n" 
+"BF00BF00BF00BF72B64FF0000282F314884FF0807282F3\n" 
+"0388854604B402B400B54FF0FF3C4DF804CDDFF8083308\n" 
+"B4DFF8042304B4DFF8041302B40000000000000000DFF8\n" 
+"F40201B46FF0060E704700BF00BF00BF00BF2DE9FF5FB8\n" 
+"4D05F10406B84D46F8045B002546F8045B009D46F8045B\n" 
+"019D46F8045B029D46F8045B039D46F8045B049D46F804\n" 
+"5B059D46F8045B069D46F8045B079D46F8045B089D46F8\n" 
+"045B099D46F8045B0A9D46F8045B0B9D46F8045B0C9D46\n" 
+"F8045B0EAD46F8045B46F804EB0D9D46F8045BBDE8FF9F\n" 
+"2DE9FF1F9A4D05F104069A4D46F8045B002546F8045B0D\n" 
+"AD46F8045BEFF3088546F8045BEFF3098546F8045B009D\n" 
+"46F8045B019D46F8045B029D46F8045B039D46F8045B04\n" 
+"9D46F8045B059D46F8045B069D46F8045B079D46F8045B\n" 
+"089D46F8045B099D46F8045B0A9D46F8045B0B9D46F804\n" 
+"5B0C9D46F8045B46F804EB7E4D46F8045BEFF3038546F8\n" 
+"045BBDE8FF1F04F01BBD2DE9FF1F754D05F10406754D46\n" 
+"F8045B002546F8045B0DAD46F8045BEFF30885F1940340\n" 
+"4E820046F8045BEFF3098546F8045B009D46F8045B019D\n" 
+"46F8045B029D46F8045B039D46F8045B049D46F8045B05\n" 
+"9D46F8045B069D46F8045B079D46F8045B089D46F8045B\n" 
+"099D46F8045B0A9D46F8045B0B9D46F8045B0C9D46F804\n" 
+"5B46F804EB5A4D46F8045BEFF3038546F8045BBDE8FF1F\n" 
+"04F001BD2DE9FF1F504D05F10406504D46F8045B002546\n" 
+"F8045B0DAD46F8045BEFF3088546F8045BEFF3098546F8\n" 
+"045B009D46F8045B019D46F8045B029D46F8045B039D46\n" 
+"F8045B049D46F8045B059D46F8045B069D46F8045B079D\n" 
+"46F8045B089D46F8045B099D46F8045B0A9D46F8045B0B\n" 
+"9D46F8045B0C9D46F8045B46F804EB364D46F8045BEFF3\n" 
+"038546F8045BBDE8FF1F04F0E8BC2DE9FF1F2B4D05F104\n" 
+"062B4D46F8045B002546F8045B0DAD46F8045BEFF30885\n" 
+"46F8045BEFF3098546F8045B009D46F8045B019D46F804\n" 
+"5B029D46F8045B039D46F8045B049D46F8045B059D46F8\n" 
+"045B069D46F8045B079D46F8045B089D46F8045B099D46\n" 
+"F8045B0A9D46F8045B0B9D46F8045B0C9D46F8045B46F8\n" 
+"04EB124D46F8045BEFF3038546F8045BBDE8FF1F04F0C2\n" 
+"BC0000000050AA890050AA890000400000814C82007856\n" 
+"3412CEFABEBA734773475C6F8900331114918D4D820021\n" 
+"4E8200B54E8200494F8200012100F0CBB9002100F0C8B9\n" 
+"10B50446FFF796FC30B92146012004F049FD2146022012\n" 
+"E0022814D0012806D12146002004F03EFD2146012007E0\n" 
+"032809D12146132004F035FD21460A20BDE8104004F02F\n" 
+"BD10BD10490860104949680F4A02EB810188605068401C\n" 
+"50605068102824BF00215160506802EB80000949816010\n" 
+"68401C1060704705480021016041607047014908607047\n" 
+"0000FC000B405C7689000DF00DF004F037BE80B501220A\n" 
+"494FF4000004F0ADFE0122084909488008800004F0A6FE\n" 
+"01220749074880088000BDE8084004F09DBE0000FF3F82\n" 
+"00FFFF870069BB8600FFFF8B0053EA890000B583B0FFF7\n" 
+"DAFF00A804F03DFE0320009960F35F71009100A804F059\n" 
+"FE0521062004F0CBFE04F039FF012004F076FE07BD0268\n" 
+"531C036011707047DFF88C0A406B00B9704780B502F05A\n" 
+"FBDFF87C0A406B8047DFF8740A407808B902F04AFBDFF8\n" 
+"680A00214163C16280F8301001BD80B5DFF87809002100\n" 
+"220B460EC04FF4C071DFF86C0904F0F3FFDFF864090021\n" 
+"017301214173006980088000DFF8501908610846182181\n" 
+"820821C182007E00F0800040F00A00DFF838190876DFF8\n" 
+"34090021016041600FF2413181600FF2A931F19403D051\n" 
+"8200C160002001F06CFDDFF81C09DFF81C190160DFF81C\n" 
+"0968210160DFF818094FF486710160DFF8C0090168DFF8\n" 
+"C009006801F0D6FCDFF8B809DFF8B8190160DFF8B80900\n" 
+"68DFF8B819884205D100210120BDE8044004F0A8BF01BD\n" 
+"38B5044600F0F3FD05462046DFF89C1926E038B5044600\n" 
+"F0EAFD05462068800800F0010004F089FC207800F00C00\n" 
+"0C2808BF04F08DFCDFF88C08007E00F07F00217A01F07F\n" 
+"01884207D0DFF87808007E00F07F00DFF870180876DFF8\n" 
+"4C0921462C2205F040F82846BDE8324000F0C5BD38B505\n" 
+"4600F0BBFD0446DFF84808007B002818BF01281CD1002D\n" 
+"DFF838080BD000210173002001F0C1FC002001F0F3FCDF\n" 
+"F8F40800210AE00121017301F0D6FC012001F0B3FCDFF8\n" 
+"DC08DFF8DC18016007E0681E8041C043C00FDFF8F81781\n" 
+"F870012046C8E710B500F089FD0446DFF8E407007B0028\n" 
+"47D00020DFF8D81704E000281CBF0A68002A3ED1401C09\n" 
+"1D0328F6DB05F0CAFA002836D1DFF8B8070068002801BF\n" 
+"DFF8B0070069C0F34000002808D1DFF8A407C06820B1DF\n" 
+"F89C07C068804768B9DFF89007007CC0071CD4DFF88807\n" 
+"8068C0B1DFF880078068804798B1DFF874070121017390\n" 
+"F8700128B1DFF86407002180F870110173FFF7D2FE2046\n" 
+"BDE8104000F041BDFFF7CBFE204600F03CFD30BF10BD38\n" 
+"B504460D46032C05DB40F23A21DFF81808FFF7E3FC00F0\n" 
+"27FDDFF8241751F824100DB1491C02E00A0018BF491EDF\n" 
+"F8102742F8241054E738B5040005D14FF41671DFF8E407\n" 
+"FFF7C9FC00F00DFD05462146DFF8E80605F0D9FA41E770\n" 
+"B584B0DFF8C8070468DFF8C8070568DFF8C4070560DFF8\n" 
+"C4070460DFF8C406007E10F07F0624D0DFF8B806007EC0\n" 
+"091BD100213046FFF738FA00A9304601F039FF01208DF8\n" 
+"000000208DF802008DF8010000A9304601F081FEDFF888\n" 
+"06007E40F08000DFF87C1608760021304601F0A2FF40F6\n" 
+"FF702843DFF85817086044F47C10DFF84C17086030BFDF\n" 
+"F84807DFF8481709680160DFF83807DFF8401709680160\n" 
+"DFF84006007E10F07F0424D0DFF83406007EC0091BD100\n" 
+"212046FFF7F5F900A9204601F0F6FE01208DF800000020\n" 
+"8DF802008DF8010000A9204601F03EFEDFF80006007E40\n" 
+"F08000DFF8F81508760121204601F05FFF04B070BD38B5\n" 
+"00F085FC044605F08EFA0546DFF8D80502210173417305\n" 
+"F064FADFF8C406007828B900F033FCDFF8BC26C2E90001\n" 
+"2946022000F070FADFF8B006006820F00400DFF8A81608\n" 
+"60012001F0ADFBFFF759FF002001F0A8FBF19403605582\n" 
+"0005F04BFADFF88805012101734173204680F310882846\n" 
+"32BD2DE9F04F85B000F04BFC8046012505F053FA814605\n" 
+"F0E9FA012800F07581DFF85805808A8145C0F26F810020\n" 
+"05F0E9FADFF84C060068401CDFF84416086000F02FFC82\n" 
+"460024DFF82C05066807E0B06820B10320B16888470400\n" 
+"01D176680EB1002CF4D05CB1DFF80C05076805E0F86810\n" 
+"B10320F96888477F68B742F7D1504680F31088002C40F0\n" 
+"138105F0C7FADFF8E80403210173417305F0F9F9DFF8D8\n" 
+"04C08AA9EB0009B9F1010F05DA40F23741DFF8AC05FFF7\n" 
+"AEFB05F097FA012800F0D980DFF8B005007828B900F0A8\n" 
+"FBDFF8A825C2E9000100F065FB01F022FA05F084FA0128\n" 
+"00F0BC8000F040F9DFF8940500680390DFF89005006807\n" 
+"023F0ADFF8640500684FEA002A4FEA1A2ADFF87C050468\n" 
+"DFF87C05066805F067FA012800F08C8000254946032000\n" 
+"F0BEF900F0F5F8DFF84404007E10F07F0B23D0DFF83804\n" 
+"007EC0091AD100215846FFF7F8F800A9584601F0F9FD01\n" 
+"208DF800008DF802508DF8015000A9584601F042FDDFF8\n" 
+"0804007E40F08000DFF8001408760021584601F063FE04\n" 
+"F0FCF9DFF808050570DFF8EC04006840F00400DFF8E014\n" 
+"086005F053FADFF8D804006820F00400DFF8CC140860DF\n" 
+"F89C040068DFF89C1488422ED10121102004F033FD04F0\n" 
+"57FD05F084FA04F06CFDDFF8C00408210160DFF8B40400\n" 
+"7830B1DFF8B4040068401CDFF8AC140860DFF8A0040078\n" 
+"88B1DFF878040078022808BF03F070FADFF8942440F6B8\n" 
+"30002103F03BFADFF85C0402210170DFF8740400780028\n" 
+"B2D1DFF878040068401CDFF87014086000F085F8DFF848\n" 
+"0403990160DFF844040760DFF81804C0F800A0DFF83804\n" 
+"0460DFF83804066000F0B5F801F069F900F0ADFA25B901\n" 
+"F050FA012001F02DFA05F015F9BF48477B00F010FB0446\n" 
+"05F03CF8BB48066805E0F06810B13846F1688847766800\n" 
+"2EF7D1204680F31088B5480121017341730DB904F07FF9\n" 
+"012005F0A6F93DBBAF48007E10F07F0524D0AD48007EC0\n" 
+"0919D100212846FFF736F800A9284601F037FD01208DF8\n" 
+"000000208DF802008DF8010000A9284601F07FFCA14800\n" 
+"7E40F080009F4908760121284601F0A2FD01E04FF00009\n" 
+"404680F31088484605B0BDE8F08F18B4DFF88803DFF888\n" 
+"13024602230C6842F8044B41F8044B5B1EF8D14022DFF8\n" 
+"7413103018BC04F02ABD10B5DFF86043402204F11001DF\n" 
+"F85C0304F020FDDFF85803022154F8042B40F8042B491E\n" 
+"F9D110BDDFF83803DFF844130968C0F8F19403F0588200\n" 
+"0011DFF840130968C0F80411DFF838130968C0F80811BB\n" 
+"490968C0F80C11DFF82C130968C0F81011DFF824130968\n" 
+"C0F82011DFF820130968C0F824110021DFF818238A5C80\n" 
+"F81421491C401C0C29F6DB7047B748D0F80011B94A1160\n" 
+"D0F80411B84A1160D0F80811B74A1160D0F80C11A44A11\n" 
+"60D0F81011B44A1160D0F82011B34A1160D0F82411B24A\n" 
+"11600021B24A90F814318B54491C401C0C29F8DB70472D\n" 
+"E9F84305F037F801F07FF8FFF779FFFFF7A0FF95480468\n" 
+"954805688B480668944807689448D0F800808148D0F800\n" 
+"908049016004F098F88A48006840F004008849086005F0\n" 
+"F4F87948C0F80090874804602802000A86490860300200\n" 
+"0A7B490860844807608448C0F80080FFF7A1FF01F055F8\n" 
+"7B48006820F0040079490860FFF754FF05F001F8BDE8F1\n" 
+"4304F083B82DE9F04704460E4600F0F6F982466F480778\n" 
+"022C35D0032C4AD1380002D0012F03D045E0B6F1405F39\n" 
+"DA022002F0B0FE022002F0EBFE04460025022002F0E9FD\n" 
+"2046002146F266620B4602F085FC46F26662A2FB008902\n" 
+"FB0199B4EB080065EB0901401C41F1000105F02DF9624A\n" 
+"731E4FF47A74C4FB030103F0B4F85348022115E0380014\n" 
+"D1B6F1405F08DA022E18DB701EFFF7C1F84D4801210170\n" 
+"0CE0022002F076FE022002F0B4FD4848032101703FB946\n" 
+"48007820B10FF22D01304605F035F95046BDE8F04700F0\n" 
+"9CB9C05C8900E0448800CC5C890008000E4018030A0004\n" 
+"000E404C000E40D0B500F085F9044600F041F94D4AC2E9\n" 
+"00011046D0E900233348D0E90067BB4207D828BFB24204\n" 
+"D24FF4DF612848FFF729F945482B490978017001290DD0\n" 
+"12D3032902D00FD203F087F8022002F048FDFEF7FAFFFF\n" 
+"F74EF805E01A4890F8300008B9FFF765F81F4800210170\n" 
+"154890F8300050B13448007800281EBF32480078012802\n" 
+"D10F48C06A0BE02E48D0E900231548D0E90067901B63EB\n" 
+"070105F085F808B105F0E3F82046BDE8D04000F036B914\n" 
+"2C8800102C880030000E4007AC8200F00F0B401C278800\n" 
+"200A7347F0448800C466860018F00B402CF00B40085D89\n" 
+"000C5D89008A8889006046880010ED00E0FC5C890010F0\n" 
+"0B4014F00B401CF00B4020F00B408988890080E200E004\n" 
+"5D890041B68600005D89001C45880080E100E000E400E0\n" 
+"00E100E004ED00E008ED00E00CED00E014ED00E024ED00\n" 
+"E088ED00E018ED00E0684688008B88890080B501F048FA\n" 
+"FFF789FA05F0C2F82148FFF700FA02F091FC02F09BFF1E\n" 
+"48FFF7F9F905F039F91D48FFF7F4F9F19403805C820005\n" 
+"F0ACFA1B48FFF7EFF906F093F81A48FFF7EAF904F08EFB\n" 
+"1848FFF7E5F906F030FA1748FFF7E0F906F05CFC1548FF\n" 
+"F7DBF907F031FD1448FFF7D6F901F048FA1248FFF7D1F9\n" 
+"08F0B2F81148FFF7CCF908F0FAFB0F48FFF7C7F908F0C3\n" 
+"FC0E48BDE80240FFF7C0B9060066060700660608006606\n" 
+"090066060A0066060B0066060C0066060D0066060E0066\n" 
+"060F00660610006606110066061200660680B5002002F0\n" 
+"46FD012002F043FD002002F081FC0120BDE8024002F07C\n" 
+"BC80B5002002F053FC012002F050FCBDE8014058B53748\n" 
+"0068C608F60035480660354840F2022101603448016002\n" 
+"F02FFF4FF0FF3404F087FF201A64EB01012F4A10602F48\n" 
+"016046F0010029490860294840F2822101602848016051\n" 
+"BD70B5012002F047FD05462E46002002F042FD04460120\n" 
+"02F03EFD0546B042F4D14FF0FF300146001BA94170BD80\n" 
+"B5002002F055FC18B1C3211C48FEF7DCFF012002F04DFC\n" 
+"012803D0C5211748FEF7D3FF17484FF4807101604FF400\n" 
+"710160BDE80140A8E780B5FFF7CBFFBDE8044004F055BF\n" 
+"80B5FFF7C4FFBDE8044004F068BF0000EFF3108072B670\n" 
+"470020704780F3108870477047B0000B4008900B402890\n" 
+"0B4000900B4020900B40286A860080E100E080B5DFF894\n" 
+"0400F051F8DFF890240FF2D101BDE8084008F00FBC0146\n" 
+"DFF8780474E180B500220321DFF874041EE224E2DFF870\n" 
+"14032251F8043B83420BD0521EF9D10021DFF85C2452F8\n" 
+"043B2BB1491C0329F9DB14E200207047DFF8482442F821\n" 
+"00F8E70021DFF83C2452F8043B834203D0491C0329F8DB\n" 
+"02E2DFF82804002240F821200020704780B500220521FF\n" 
+"E7DFF80C04006805F07BF808B14FF0FF3002BD38B5EFE1\n" 
+"DFF80004704710B50446DFF8F80320606460214604F108\n" 
+"0008F0C2FB04F524500021016043F24450015504F52450\n" 
+"001D08F00BFE204610BD00002DE91040044604F5245000\n" 
+"1D08F058FE04F1080008F0D2FB204610BD10B596B00446\n" 
+"0878012807D0C0F0A880032851D02AD304284ED0A1E0DF\n" 
+"F8940300904868019004F5245014300290DFF888030790\n" 
+"4FF4C0500390DFF8800304904FF4C0500590DFF8780306\n" 
+"9000A94FF4007004F0E4FF04F52451086004F524500068\n" 
+"002869D1002016B010BDDFF8440300904868019004F524\n" 
+"5014300290DFF8380307904FF4C0500390DFF830030490\n" 
+"4FF4C0500590DFF82803069000A940F2012004F0BCFF04\n" 
+"F52451086004F5245000680028D7D040E0042804D10220\n" 
+"8DF82000692003E001208DF82000F19403106082000020\n" 
+"09904FF4C0500A90DFF8E4020B9006208DF8300000208D\n" 
+"F83100C020ADF8320000200D900E904FF4C0500F90DFF8\n" 
+"C402109006208DF8440000208DF845004FF48070ADF846\n" 
+"00002012901390DFF89C02149008A94FF4C06004F07AFF\n" 
+"04F52451086004F524500068002895D04FF48072042104\n" 
+"F52450006804F0A5FFDFF878024FF4C0510160DFF87002\n" 
+"4FF48071016004E0FD21DFF86802FEF76FFE04F5245000\n" 
+"6800283FF478AF012016B010BD38B5044600256D1C0122\n" 
+"00A904F52450006804F098FF012803D19DF80000802802\n" 
+"D1102DEFDB31BD012200A904F1080008F005FB31BD00BF\n" 
+"10B5A0B00446FFF7DFFF802200A904F52450006804F07B\n" 
+"FF012805DB82B200A904F1080008F0EFFAFFF76BFE43F2\n" 
+"4851095901F57A718142E7D20022032104F52450006804\n" 
+"F04CFF43F24C5000210153FFF757FE43F248510851D6E7\n" 
+"30B585B004460D4643F24450005D20B14FF4B4716948FE\n" 
+"F70FFE43F2445001210155FFF740FE43F24851085143F2\n" 
+"4C500021015329462046FFF7DAFE20B940F26F115E48FE\n" 
+"F7F8FD5348002100220B460EC00394022002904FF44060\n" 
+"019004F5245044300090564B5A22564904F52450143008\n" 
+"F037FD05B030BD11F1010F05D00A464FF4C4714D48FEF7\n" 
+"20BE704780B54FF4C8714948FEF7CFFD002002BD2DE9F0\n" 
+"4182B004460D46904600274146606800F52450006804F0\n" 
+"17FE06E0434632464FF4D4713D48FEF74BFE4246294660\n" 
+"6800F52450006804F03AFF0646464517D0002EEBD4B045\n" 
+"E9DB062F13D30B2001F080FF28B13346424633490B2001\n" 
+"F089FF0095434632464FF4D7712C48FEF772FEBDE8F381\n" 
+"A8EB060875197800801D01F010FD7F1C43F24C50616840\n" 
+"5A401C43F24C5162688852C8E740F2C1111F48FEF77BBD\n" 
+"08461146FEF777BD0029406800F524501CBF001D08F05F\n" 
+"BC001D08F07DBC006804F08FFE13490968081A02BD1248\n" 
+"006870474FF0FF307047074C0325206800B18047241D6D\n" 
+"1EF9D131BD7C258900248089007C4E890070F588008425\n" 
+"890018628600DD830F00EB5E82007CF588007C0D890068\n" 
+"F588006CF588003C628600F76082005062860068628600\n" 
+"10B5174C204608F0B9FC04F10C0008F0E3FC04F1180008\n" 
+"F058FD04F1240008F0D0FD104A0FF20D012046BDE81040\n" 
+"08F097B90000704710B5FFF7C9FD0446084908F061FB08\n" 
+"49204608F05DFB0749204608F059FB06492046BDE81040\n" 
+"08F053BB50858900248089005C85890068858900748589\n" 
+"00F0B50E4681B0044617461D46F19403A0638200302103\n" 
+"F0E5FE11496774207C097808432074089884F8250006B1\n" 
+"2662079806994018C008C000002140F8501D4FF0807141\n" 
+"6407490164C5646FF002014162606001B02046BDE8F040\n" 
+"01F0DBBB85888900937782002DE9F04104460E004FF000\n" 
+"08454618D0206847007F08C00F0BD12DB94FF46871DFF8\n" 
+"B008FEF7B8FC606840EA0800386004E001253868616801\n" 
+"EA00080834761EE6D1BDE8F081DFF890281268DFF88C38\n" 
+"1B7838B142F08000DFF87C28106041EA030007E033EA01\n" 
+"0004D122F08001DFF868281160DFF8641808707047DFF8\n" 
+"58381B6820B141EA0300DFF84C1830E0107800281FBF40\n" 
+"1E10701078002804D123EA0100DFF8341808607047DFF8\n" 
+"343853F831301B6850B1DFF8280800EBC10040681843DF\n" 
+"F81C3853F8311011E01078401E1070107858B9DFF80808\n" 
+"00EBC100406823EA0000DFF8F82752F831100860704708\n" 
+"601078401C1070704710B50C460028DFF8E00700783AD0\n" 
+"88BB02E00A20FEF734FADFF8D4070068C003F7D5DFF8CC\n" 
+"07006880088000DFF8C4170860DFF8C007006840F00100\n" 
+"DFF8B8170860DFF8B407006840084000DFF8AC17086002\n" 
+"E00A20FEF713FADFF8900700680004F7D5DFF894070068\n" 
+"20F00200DFF888170860DFF8740700782043DFF86C1708\n" 
+"7010BDA043DFF8601708700878B8B9DFF86807006840F0\n" 
+"0300DFF85C170860DFF85407006840084000DFF8481708\n" 
+"60DFF84007006840F00300DFF83417086010BD0B380628\n" 
+"0FD8DFE800F0040F151B040F1500DFF828074FF4E04209\n" 
+"03036823EA0202114301607047DFF810074FF4E0220904\n" 
+"F3E7DFF804074FF4E0020905EDE7DFF8FC064FF0E06209\n" 
+"06E7E7F8B504460D461F2D00F2BE80DFE805F0101418BC\n" 
+"BCBCBCBCBCBC1E26262626494949497F7F9393A8A8A8A8\n" 
+"A8A8A8AEAEDFF8C426002106E0DFF8C026012102E0DFF8\n" 
+"BC260221BDE8F8402AE70821FFF7F6FEDFF8B026102120\n" 
+"4684E000260827DFF8A406007828B940F2B941DFF85C06\n" 
+"FEF78EFBDFF890060078052806D110212046FFF7DCFE01\n" 
+"264FF4807724B1002231462846FFF78EFFDFF870263946\n" 
+"204661E0DFF864060078052805D040F2D741DFF81806FE\n" 
+"F76CFB10212046FFF7BFFEFCB10B3D062D1CD8DFE805F0\n" 
+"130E0904130E0900DFF81C064FF0E0610DE0DFF810064F\n" 
+"F4E00108E0DFF804064FF4E02103E0DFF8FC054FF4E041\n" 
+"026822EA01010160DFF808264FF4807120462BE0DFF800\n" 
+"060078062805D040F2E941DFF8AC05FEF736FB20210020\n" 
+"FFF789FEDFF8E42520212046F194033067820017E0DFF8\n" 
+"D8050078072805D040F2F541DFF88405FEF722FB202120\n" 
+"46FFF775FEDFF8BC254FF40071204602E0DFF8B4254021\n" 
+"BDE8F84083E6DFF8AC05006820F0F850002C12BF40F000\n" 
+"4040004008DFF898150860F1BD80B5DFF8440500210170\n" 
+"DFF844050170DFF870050170DFF870050170DFF8700501\n" 
+"70DFF848050170DFF848050170DFF844050170DFF84405\n" 
+"0170DFF840050170DFF844050170DFF84C05017001F015\n" 
+"F8DFF848054078401CDFF8401548701621DFF83C05FFF7\n" 
+"03FEDFF82C05012101704FF0C870FEF7AEF8DFF8200540\n" 
+"78401EDFF8181548704878002804BFBDE8014000F0EDBF\n" 
+"01BD10B5044600F0EEFFDFF8F8044078401CDFF8F01448\n" 
+"70601E022807D9C01E01286DD9801E012840F29380BCE0\n" 
+"DFF8D0040078844200F0BD800821DFF8D004FFF7CBFD01\n" 
+"2C19D10621DFF8C404FFF7C4FDDFF85C040068DFF85C14\n" 
+"0978FE22114204D120F08000DFF84814086001210020FF\n" 
+"F72FFE4FF0C87036E0022C1BD1DFF83004006840F08000\n" 
+"DFF824140860DFF82404007840F00100DFF81814087004\n" 
+"21DFF87004FFF798FD01210020FFF711FE4FF0487018E0\n" 
+"01210120FFF70AFE0421DFF85404FFF788FDDFF8E40300\n" 
+"68DFF8E4130978FE22114204D120F08000DFF8D0130860\n" 
+"DFF83404FEF729F80621DFF83004FFF771FDDFF8080404\n" 
+"7059E0042C06D10621DFF81C04FFF766FD082106E00621\n" 
+"DFF81404FFF75FFD4FF48071DFF8C8030470DFF8C40300\n" 
+"78002841D1DFF880030068DFF87C231278EF231A4204D1\n" 
+"20F08000DFF868231060DFF8A02326E0062C06D10621DF\n" 
+"F8D403FFF73DFD202106E00621DFF8C803FFF736FD4FF4\n" 
+"0071DFF87C030470DFF87C030078C8B9DFF830030068DF\n" 
+"F82C231278DF231A4204D120F08000DFF818231060DFF8\n" 
+"58230020FFF758FD05E040F25661DFF80003FEF7DFF9DF\n" 
+"F850034078401EDFF8481348704878002804BFBDE81040\n" 
+"00F005BF10BD10B5044600F006FFDFF828034078401CDF\n" 
+"F82013487021460120FFF7F9FDB24850F834000068B049\n" 
+"01EBC40149680843AD4951F834100860DFF8F802407840\n" 
+"1EDFF8F01248704878002804BFBDE8104000F0DABE10BD\n" 
+"10B5044600F0DBFEB5484078401CB3494870002C1CBF01\n" 
+"2C022C0CD09D4850F8340000689B4901EBC40149688843\n" 
+"984951F83410086021460020FFF7BEFDA7484078401EA6\n" 
+"4948704878002804BFBDE8104000F0AEBE10BDAD48AD49\n" 
+"0F2250F8043B41F8043B521EF9D1704738B5A74C00F0A5\n" 
+"FE9A484078401C98494870F19403C06A82008548002101\n" 
+"7016219648FFF793FC9348007828B19148007890490022\n" 
+"0A7000E00120FFF79BFE8748007818B185480078FFF794\n" 
+"FE8548007818B184480078FFF78DFE8448007860B10020\n" 
+"8DF8000000A86E49096841F040016C4A11600178491C01\n" 
+"7077480078C0B100208DF800006748006840F080006549\n" 
+"08606548007840F008006349087000A86049096841F010\n" 
+"015E4A11600178491C01707E480F217E4D16E0624A9442\n" 
+"07D112687C4B1A4003682B401A435D4B0AE05D4A944208\n" 
+"D1126822F0E062036803F0E0631A43584B1A6050F8042B\n" 
+"44F8042B491EE2D160484078401E5F494870487808B900\n" 
+"F023FE31BD70B504460D4658480668F00348BF00F037F8\n" 
+"B00305D55448006820F400305249086063480068634908\n" 
+"40290401F4E0210843210201F4E06108435F4908435C49\n" 
+"08604948006840F03C004749086070BD3248006840F006\n" 
+"00304908604248006840F4403009E02D48006840F00100\n" 
+"2B4908603D48006820F440303B49086070472648006840\n" 
+"F00100244908603648006820F48030F1E710B5044600F0\n" 
+"D9FD34484078401C32494870002C4448006812BF40F003\n" 
+"0080088000404908602C484078401E2B49487048780028\n" 
+"04BFBDE8104000F0B8BD10BD3A484FF0FF310160394800\n" 
+"68C00CC00440F4802040F45F30354908603548006840F0\n" 
+"070033490860704700283248006814BF40F0040020F006\n" 
+"002E49086070470000CC66860040000B408C888900D866\n" 
+"86008D8889000C000B4010000B40E80F0B4014000B405C\n" 
+"000B4060000B4091888900928889009388890094888900\n" 
+"958889008E888900968889008F8889009088890044000B\n" 
+"40978889001C278800D867860048698600B8698600E869\n" 
+"8600086A860000E1F5058869860088688600B8688600E8\n" 
+"6886001869860050000B40105D890000707700FF8F88FF\n" 
+"48000B40FFF8F8FF0010101180000B4068000B4078000B\n" 
+"407C000B4070000B4030B40023DFF874482568A84224BF\n" 
+"656885420BD30B6003EB8301C900DFF85C38C958401A10\n" 
+"60012030BC70475B1C2834022BE9D3002030BC704738B5\n" 
+"DFF840080068DFF840180860DFF83C0800684860DFF838\n" 
+"0800688860DFF834080068C860DFF8300800680861DFF8\n" 
+"2C080068DFF82C180860DFF8280800684860DFF8240800\n" 
+"68DFF824180860DFF82008006848600024DFF81C58287A\n" 
+"00F00300032804BFA87A03281FD1204600F0A0FA012807\n" 
+"D1052029894FF69B72114041F0200106E0042029894FF6\n" 
+"9F72114041F044012981F19403506E8200E8722889C0F3\n" 
+"001028B12889C0F34111204602F02FFE641C0C35242CD3\n" 
+"DB002032BDF0B583B00520FFF7B8FD0620FFF7B5FDDFF8\n" 
+"7C07DFF87C1709680160DFF874074068DFF870170860DF\n" 
+"F868078068DFF868170860DFF85C07C068DFF860170860\n" 
+"DFF850070069DFF858170860DFF8740710210160202101\n" 
+"60DFF84C074FF0FF310160DFF848071F210160DFF85807\n" 
+"4FF0FF310160DFF854071F210160DFF85007DFF8341709\n" 
+"680160DFF82C074068DFF840170860DFF84007DFF81C17\n" 
+"0968C9430160DFF810074068C043DFF82C1708600024DF\n" 
+"F80857287AC00703D5E97A204600F085F8641C0C35242C\n" 
+"F4DBDFF8D806DFF8D81609680160DFF8D0064068DFF8CC\n" 
+"160860DFF8F806DFF8C0160968C9430160DFF8B4064068\n" 
+"C043DFF8E4160860DFF8C4060068DFF8C0160968DFF8D8\n" 
+"26126802F00F02DFF8D0361B6803F00F03DFF888462468\n" 
+"E443204201BFDFF87C064068C043014241D11A423FD100\n" 
+"24DFF8AC06017801F00B010B2933D101A900AA0025DFF8\n" 
+"34663768BC4224BF7768A74204D26D1C2836022DF5D308\n" 
+"E0156005EB8502D200DFF814565259A21A0A600099DFF8\n" 
+"702652F821100122019B9A401143009ADFF85C3643F822\n" 
+"100099243149B24A09DFF85036012501F01F0105FA01F1\n" 
+"43F82210641C0C30242CC2DBDFF83C0610210160202101\n" 
+"60002003B0F0BDFCB400EB4002DFF8E83503EB820200AB\n" 
+"01AC0025DFF8A4653768B84224BF7768874204D26D1C28\n" 
+"36022DF5D308E0256005EB8504E400DFF884556459001B\n" 
+"18601068DFF8EC3518404B1E022B06D9DB1E07D05B1E08\n" 
+"BF40F4404004E040EAC10001E040F400401060019901EB\n" 
+"8102DFF84C1501EBC201496A009A41F82200F3BC704710\n" 
+"B5DFF8AC050468FEF796FEDFF8A41508600868001B1528\n" 
+"05D2DFF89805BDE8104007F0ACBF10BD80B5DFF8440510\n" 
+"210160202101600520FFF777FC0620FFF774FCDFF81005\n" 
+"4FF0FF310160DFF810051F210160DFF820054FF0FF3101\n" 
+"60DFF818051F2101604FF4D871DFF8000503F01EF8DFF8\n" 
+"2C050021016041601622DFF83815DFF83005BDE8084007\n" 
+"F06CBF80B5DFF82C05FEF747F9DFF81005102101602021\n" 
+"016001BD7CB431B300AA01AB0024DFF888542E68B04224\n" 
+"BF6E68864204D2641C2835022CF5D316E01C6004EB8403\n" 
+"DB00DFF864441B59C31A13600A78022ABCBF4A78062A07\n" 
+"DA8A78032ABFBFCA78092A0A79062A00DBD1E000EB4002\n" 
+"DFF86C0400EB820000220B7803B901224B785B1E022B06\n" 
+"D9DB1E08D05B1E08BFF19403E071820042F4404205E04B\n" 
+"7842EAC30201E042F400428B78012B08BF42F0060203D0\n" 
+"022B08BF42F00202CB78082B1CBF43F0080342EA43124B\n" 
+"790BB142F400528B790BB142F480520B7942EA43220260\n" 
+"019B03EB8304DFF8C83303EBC4035B6A009C43F824204A\n" 
+"78012A06D0022A0CD0042A02D0052A08D010E004220389\n" 
+"4FF69F74234043F0440306E0052203894FF69B74234043\n" 
+"F02003038105E002894FF69F731A4002810022C2724A78\n" 
+"827202894FF6F5731A40019BDFF8844354F82330009C04\n" 
+"F01F04E34003F0010383F0010342EA4302028189684160\n" 
+"018941F00101018152E07CB471B100AA01AB0024DFF830\n" 
+"532E68B04224BF6E68864204D2641C2835022CF5D33DE0\n" 
+"1C6004EB8403DB00DFF80C431B59C31A136000EB4002DF\n" 
+"F8340300EB8200019A02EB820304EBC302526A009B52F8\n" 
+"232002F0010383F001030B70837A4B70930704D5530754\n" 
+"BF0223012300E000238B70D30546BF530903F00F030823\n" 
+"CB70530B03F001034B71130B03F001038B71520A02F007\n" 
+"020A714068886002E0002076BC7047012076BC70477CB4\n" 
+"002100AA01AB0024DFF884522E68B04224BF6E68864204\n" 
+"D2641C2835022CF5D314E01C6004EB8401C900984BC958\n" 
+"401A1060019800EB800103EBC100C0680068009901F01F\n" 
+"01C84000F00101FFE7084676BC7047FCB4002200AB01AC\n" 
+"00258B4E3768B84224BF7768874204D26D1C2836022DF5\n" 
+"D317E0256005EB8502D200834C1259801A186000290198\n" 
+"00EB800104EBC1000CBF406900690121009A02F01F0291\n" 
+"40016001221046F6BC704700EB4002844B03EB82022428\n" 
+"13D2137ADB0710D50029118906D041F0100111811189C1\n" 
+"F3411104E04FF6EF7319401181002102F03ABB704700EB\n" 
+"4002764B03EB8202242806D2107AC00703D5108961F3C3\n" 
+"001081704730B583B00446002500AA01A9FFF780FCB0B1\n" 
+"04EB44006A4901EB8000018941F002010181019800EB80\n" 
+"01584800EBC100006A0121009A02F01F02914001600125\n" 
+"20E030B583B00446002500AA01A9FFF75FFCB8B104EB44\n" 
+"00594901EB800001894FF6FD7211400181019800EB8001\n" 
+"474800EBC100C0690121009A02F01F0291400160012528\n" 
+"4603B030BD2DE9F04104460F4690460126B84523D307EB\n" 
+"4700484901EB8005287AC00716D5A87AE97A884203D001\n" 
+"463846FFF78BFD686800281FBF2889C0F3400000283442\n" 
+"05D02889C0F3800138466A6890477F1C76000C35B845E0\n" 
+"D2FEF752FC474908604748BDE8F04107F06EBD80B54748\n" 
+"0078401C45490870F194037075820045480078401C4449\n" 
+"08702F4800682E490860384909680843364900220A601F\n" 
+"220021FFF7B2FF3D4810211AE080B539480078401C3749\n" 
+"087037480078401C3649087022480068214908602A4949\n" 
+"680843284900224A6023222021FFF796FF2F4820210160\n" 
+"2B480078401E2A4908702A480078012804D12848406808\n" 
+"B100F0FEF825480078401E2449087001BD3C6586000004\n" 
+"0B40845C890004040B4008040B400C040B4010040B40A0\n" 
+"100B40985C8900A0200B4000100B40A05C890000200B40\n" 
+"CC5A890084E100E080100B4080200B4040100B4040200B\n" 
+"4060100B4060200B40C0100B40C0200B4014200E401020\n" 
+"0E40D45A89007C5C890000E200E004E100E0E73FFFFFA8\n" 
+"5C8900AC5C8900C3708200002C8800868889001C278800\n" 
+"84E200E038B504462148FDF7E7FC0020002103C4083C07\n" 
+"F031FD1E48FDF7DEFC0720FFF7B5F8012007F08BFD07F0\n" 
+"57FD05461948FDF7D2FC012D04D11748FDF7CDFC022005\n" 
+"E0022D07D11548FDF7C6FC01202070FDF735F910E0032D\n" 
+"0ED11148FDF7BCFC00202070FDF72BF907F093FD6060FD\n" 
+"F720F96068FDF7B0FC07F095FD0948FDF7ABFC681E8041\n" 
+"C00F32BD00BF0000770701007707020077070300770704\n" 
+"007707050077070600770734488168002904BF08B008E0\n" 
+"EFF30982A2F12802036882E8F84F83685A6000F069F881\n" 
+"6859B14A6892E8F84F036002F1280282F3098813F47F4F\n" 
+"3FD07047264826490968401A80F308884FF08071C16123\n" 
+"4981617FF0060E704701BC2046DFF884E000BDFEE72048\n" 
+"00681C490968401A203820F0070080F308884FF0000115\n" 
+"48417081F3118862B600F014F8FEE703680CB44FF00001\n" 
+"41704FF0000181F311881249134A0A604FF0800181F311\n" 
+"880CBC036070470D490E4A0A6070474FF0000181F31188\n" 
+"704700BF4FF0800181F31188704700BF1C27880030AA89\n" 
+"009C618600457D82009D7782000040820004ED00E00000\n" 
+"001070B5DFF8B8440020607001202070606B50B1FFF7DF\n" 
+"FF606B8047FFF7D5FF00206063E06284F83000A0680028\n" 
+"1CBF816A002904D009680A001CBF4068884794F8290000\n" 
+"2846D0A06894F8281080F82410207900283ED0FFF7BDFF\n" 
+"A56800202071FFF7B2FF002D1CBF2E68002E30D0687C71\n" 
+"7C81422CD100E00E463168A1B14A7C824211D10E463168\n" 
+"71B14A7C82420BD10E46316841B14A7C824205D10E4631\n" 
+"6811B14A7C8242E7D0FFF794FF28682169A94208BF2061\n" 
+"E9690860C161EE613068286000B1C561356096F8250086\n" 
+"F82400FFF77AFFF1940300798200206928B303E0286820\n" 
+"61FFF773FFFFF777FF2569F5B12E7CE6B170070ED5E868\n" 
+"216A411A012905DA284600F0D0F8287C20B90DE0616A41\n" 
+"1A48BF606206F0FB001028E0D1A86880684068007C0028\n" 
+"DAD1FFF756FF607960B92069002800F07F802069007C00\n" 
+"28206967D080688068406863E000206071206AE16900F1\n" 
+"8040606208001CBF20468847FFF734FFE56812E0012060\n" 
+"71607808B9FFF72CFFFFF730FF287C0028D6D0E868616A\n" 
+"411A48BF6062FFF720FF2D68002DCAD0FFF721FF206920\n" 
+"B1687C2169497C8842C3D3287C4007EED5E868216A401A\n" 
+"0128E4DAA86840B1216AE9600168406801B14860016000\n" 
+"20A860287C10F003002874CFD1206980B1697C427C8A42\n" 
+"0CDBA8420BD09142C5D12A461268002ABDD0537C9942BA\n" 
+"D18242F7D1256120780028B2D1012020702046FFF7C9FE\n" 
+"00202070ACE7A060A068816A21B149680A001CBF406888\n" 
+"47A06890F8240084F8280084F82900204670BD84F82900\n" 
+"84F82800A0602070FFF7C3FE204670BDDFF87402407800\n" 
+"2808BFFFF7BABE704710B5DFF860422078401E2070C0B2\n" 
+"98B9606888B1FFF7B3FE606830B1012020702046FFF78F\n" 
+"FE002020706078002804BFBDE81040FFF79DBE10BD8168\n" 
+"0A68496802B151600A6000218160704730B581B0816884\n" 
+"4C41B1226AC2600A68496802B151600A6000218160017C\n" 
+"11F00301017427D1216999B92061207838B90120207020\n" 
+"46FFF75FFE0020207001E0012060716078B0B901B0BDE8\n" 
+"3040FFF76ABE427C4B7C9342E7DB8142E6D09A4209D103\n" 
+"461B68002BECD05D7CAA42E9D18B42F7D1D9E701B030BD\n" 
+"30B5674C81B02169A9B92061207838B9012020702046FF\n" 
+"F732FE0020207001E001206071607820B901B0BDE83040\n" 
+"FFF73DBE01B030BD427C4B7C9342E5DB8142E4D09A42EE\n" 
+"D103461B68002BEAD05D7CAA42E7D18B42F7D1D7E730B5\n" 
+"504C2178054681B0687C491C217004F10C0100E011460A\n" 
+"68A2B1537C984211DA11460A6872B1537C98420BDA1146\n" 
+"0A6842B1537C984205DA11460A6812B1537C9842E7DB2A\n" 
+"60E9610D6042B1D561517C81420CBF95F82500002085F8\n" 
+"2400287C40B9FFF7FBFD2846FFF75FFF607808B9FFF7EE\n" 
+"FD2078401E2070C0B298B9606888B1FFF7EBFD606830B1\n" 
+"012020702046FFF7C7FD00202070607820B901B0BDE830\n" 
+"40FFF7D5BD01B030BDC16902680A60016809B1C069C861\n" 
+"704730B5214C2578681C207081B02046FFF7ABFD607825\n" 
+"7020B901B0BDE83040FFF7BABD01B030BD00B581B007F0\n" 
+"E6FA16480121F19403907C8200017001B000BD30B5134C\n" 
+"81B0216A0D18207830B1FFF7A6FD206A401BFCD401B030\n" 
+"BDFFF7A5FDA068C5600421A06801742578681C20702046\n" 
+"FFF77DFD6078257020B901B0BDE83040FFF78CBD01B030\n" 
+"BD01498968886270471C278800704780B5FFF786FD1448\n" 
+"4078401C1349487007F0C7FAFCF731FF10F1010F00D1FE\n" 
+"E70F480F49016000200F49E02201F8012B401C8028FADB\n" 
+"FCF76AFF07484078401E064948704878002804BFBDE801\n" 
+"40FFF75ABD01BD000030BFFDE71C27880008ED00E00040\n" 
+"820000E400E070B504460D46DFF86C0506F003FFDFF868\n" 
+"0590F82400002861D1002D5FD0DFF85805C069DFF85015\n" 
+"096A884233D3DFF848058069DFF84015C969401A2E4685\n" 
+"4288BF064632462146DFF82C05C06902F0A3FADFF82405\n" 
+"C06A3018DFF81C15C862C8693018AD1B3419896988420C\n" 
+"D1DFF808054069DFF80015096A814204D1DFF8F8140122\n" 
+"81F82420DFF8EC14C86135B391F8240018BBDFF8E00480\n" 
+"6ADFF8D814C96A401A854288BF05462A462146DFF8C804\n" 
+"C06902F070FADFF8BC04C06A2818DFF8B414C862C86928\n" 
+"18C861C869096A884204D1DFF8A004012180F82410DFF8\n" 
+"9404BDE8704006F0B6BEDFF89014012007F02ABA2DE9F0\n" 
+"438FB00446894690461D4602A8DFF87814092202F055FA\n" 
+"05A8DFF87014222202F04FFAFDF7C2FF0026DFF85414C9\n" 
+"7939B9DFF84C144979A1422DD00A212970012604F00701\n" 
+"02AA89560191DFF84414B0FBF1F1DFF83C2402FB110000\n" 
+"90E00805A94356DFF81C048279DFF82814701907F00FFA\n" 
+"0746002F04D5C521DFF81C04FCF75DFFBE19DFF8F80300\n" 
+"21C1718079401CDFF8EC13887143464A46C6F1B4017019\n" 
+"07F010FA070004D5CC21DFF8EC03FCF745FF3E44B52E0B\n" 
+"D3B32695F8B30020B1D621DFF8D403FCF739FF0A2085F8\n" 
+"B200284607F015FA40B1401910F8010C0A2803D1DFF89C\n" 
+"030121C171DFF89403447130460FB0BDE8F083F8B50446\n" 
+"0D0016465AD0DFF8780306F009FEDFF87403806ADFF86C\n" 
+"13C96A471A332FDFF8640329D38069DFF85C13C969401A\n" 
+"B52828BFB42F10D30B46324629462046FFF75FFFDFF840\n" 
+"13C9694118DFF83823D161D16A4018D06213E0DFF84433\n" 
+"324629462046FFF74DFF01468F4204D3DFF83003FFF7CC\n" 
+"FE04E0C3488079401CC1498871C048C06858B14FF48071\n" 
+"C64800F0E2F878B10146C348BB4AD268904709E0B94800\n" 
+"7A30B1C048FDF741FFB749012007F051F9B348BDE8F240\n" 
+"06F0D3BDF1BD30B589B0B0480121017401E0FDF75BFF01\n" 
+"2007F0B4F9F194032080820014E0FDF764FF014602A807\n" 
+"F0F3F9014600A807F07EFB2246AD4907F0A3FB002102A8\n" 
+"07F0D8F902A8C046C046FDF713FF0446FDF70AFF8442DD\n" 
+"D39C4806F086FDA34C9B48C56A65B380699949096A401A\n" 
+"B0F5807F88BF4FF48070854288BF05462A46204602F034\n" 
+"F99148C06A401B9049C862C5F580718E48006A28182C19\n" 
+"8C4A9269904204BF8A484069894A10621046002280F824\n" 
+"2089B2204600F071F8441900E00024814806F072FDA4B2\n" 
+"002CA8D18848FDF7EBFEA0E700B583B07C480121C17100\n" 
+"21818001608171784806F024FD764806F03BFD76480021\n" 
+"41618161C161016280F824108162C162704806F04FFD02\n" 
+"2002904FF40070019077480090774B642277496B48FEF7\n" 
+"35F903B000BD6849086070476649087170476548006870\n" 
+"476348007970476249097900F00702D14001F001015E4A\n" 
+"1268C00822FA00F000F00100084070470CB438B504460D\n" 
+"46FFF7EAFF20B104AA29462046FFF7E5FE31BC5DF80CFB\n" 
+"70B504460D461646FFF7DBFF28B1324629462046BDE870\n" 
+"40D4E670BD70B504460D004A48C66A18BF002E01D10020\n" 
+"70BD80694649096A401A854238BF2846864288BF064632\n" 
+"46204602F090F83F48C06A801B3E49C862AD1B086A3018\n" 
+"08623419086A8969884202D13848416901623748002180\n" 
+"F82410A9B22046FFF7CFFF801980B270BD10B504463048\n" 
+"007CF0B12E4806F0AAFC2D48007A844212D0002C2B4808\n" 
+"D0407C58B1294800214174284807F0F3FC04E001214174\n" 
+"254807F0CDFC234804722148BDE8104006F0AFBC10BD70\n" 
+"B505460E4600241C4806F086FC4DB91B4844618461C461\n" 
+"046280F824408462C46224E040F2FE708542B8BF4FF4F9\n" 
+"711ADBBEB129463046FFF789FF10494E61A9190E4A9161\n" 
+"8119D161166200219562D062A84204BF0121D661084880\n" 
+"F82410012404E040F20E210B48FCF766FD024806F074FC\n" 
+"204670BD0000C0298800DC278800D0298800A0618600AC\n" 
+"61860080969800D0618600E06186000C288800C0288800\n" 
+"437E8200002A88000B808200EC618600074607F0CAFC38\n" 
+"4607F0EAFCFBE750F8041B61B150F8042BD30744BFA9F1\n" 
+"01039A18002342F8043B091FFAD1EFE7704713F0004C03\n" 
+"D55B42524263F100039CEA210C00F0178010B5644603D3\n" 
+"4942404261F1000100F00EF8640004D34942404261F100\n" 
+"01244203D55B42524263F1000310BD00001B4213D10942\n" 
+"36D12AB18446B0FBF2F002FB10C2704707F0B3BCFCD300\n" 
+"22002370470B000200002100207047904271EB030CF6D3\n" 
+"70B5B1FAF19403B083820081F4B3FA83F52C1BA340C4F1\n" 
+"200532FA05F63343A2405FF00046E64002E05B085FEA32\n" 
+"02841A71EB030524BF204629467641F4D302000B003000\n" 
+"002170BD012ACFD970B5140C20D0B1FA81F4B2FA82F5C4\n" 
+"F120046419B4F12006D6D3B2405FF00044F440002502E0\n" 
+"52085FEA3303C61A71EB020E24BF3046714664416D41F3\n" 
+"D302000B002000290070BD0C46B1FBF2F102FB11452D04\n" 
+"45EA1045B5FBF2F402FB145580B240EA0545B5FBF2F002\n" 
+"FB105240EA044070BD10B450F8041B81B102681218001D\n" 
+"50F8043BDC0744BFA9F10104E31852F8044B43F8044B09\n" 
+"1FF9D1EBE710BC7047002100EB4002DFF88C38D25C3AB1\n" 
+"022A0BD007D3032A08BFDFF87C1807E0DFF87C1804E0DF\n" 
+"F8781801E0DFF81C1900EB4000C0184078401E01EB4010\n" 
+"704738B507F012FC0024DFF804591BE0002C1CBF012C02\n" 
+"2C16D0287800F00600022811D12046FFF7CDFF696821F0\n" 
+"80018160204600F0B2F92046FFF7C3FF4068E860204600\n" 
+"F08DF8641C2035102CDFDB002032BD2DE9F04180460025\n" 
+"DFF8B06823E0002D18BF012D1FD0022D1CBF706800281A\n" 
+"D03078C0F38000B0B977682846FFF7A0FF0446284600F0\n" 
+"46F827F08000A060284600F082F9B06820603078C0F340\n" 
+"0010B147F08000A0606D1C2036102DD7DB404607F0F3FB\n" 
+"0020BDE8F08138B54FF40071DFF8480801F0EAFDDFF844\n" 
+"0800210160DFF840081021012590F900205309DFF83848\n" 
+"02F01F0205FA02F244F8232010F9032B5309DFF8244802\n" 
+"F01F0205FA02F244F82320491EE7D1DFF81408BDE83240\n" 
+"FCF700BF002800D5704710B500EB4000DFF83017445CDF\n" 
+"F8E807205C78B92CB1022C07D004D3032C06D008E00920\n" 
+"04E0172002E0182000E01920FEF7E5F9DFF8C007205C40\n" 
+"1CDFF8B817605410BD00281DD400EB4000DFF8EC16405C\n" 
+"DFF8A017415C491EDFF898278154815C79B928B1022807\n" 
+"D004D3032806D07047092004E0172002E0182000E01920\n" 
+"FEF7E8B9704738B50446102C05DB40F29511DFF87407FC\n" 
+"F782FBFDF7C6FB05466001DFF84C17405CC0070BD46001\n" 
+"405C40F001006101DFF8382788542046FFF79CFF01E04F\n" 
+"F0FF34284680F31088204632BD2DE9F84380460F461446\n" 
+"9946DFF8100700EB48152878C00705D440F2C511DFF818\n" 
+"07FCF753FB4046FFF7D4FE064624F08000B060404600F0\n" 
+"B9F837600898A8610020C5E90400AF606C60B9F1000F08\n" 
+"EB4800DFF8141606D0401890F902004109DFF8D82605E0\n" 
+"401890F902004109DFF8BC26012300F01F0003FA00F042\n" 
+"F82100F1940340878200B460287800F0FD00E10901F001\n" 
+"0140EA41002870BDE8F183DFF8841601EB4011002200EB\n" 
+"4003DFF8C0C513F80C306BB1022B05D007D3032B0AD1DF\n" 
+"F8B02507E0DFF8582604E0DFF8AC2501E0DFF8A02500EB\n" 
+"40006044407802EB401050F8182D42F080020260087840\n" 
+"F002000870704738B50446DFF8280600EB44152046FFF7\n" 
+"69FE50F8081F21F080010160204600F04DF8287800F0FD\n" 
+"00287031BD70B4002400EB4005DFF84065AD5D6DB1022D\n" 
+"05D007D3032D0AD1DFF8344507E0DFF8DC4504E0DFF830\n" 
+"4501E0DFF8244500EB40039B195B785B1E04EB4313DFF8\n" 
+"C44504EB4010826019609A6170BC7047002100EB4002DF\n" 
+"F8F434D25C6AB1022A05D007D3032A0AD1DFF8E41407E0\n" 
+"DFF8901504E0DFF8E01401E0DFF8D81400EB4000C01840\n" 
+"7801EB401050F81C0C704710B4DFF8B844002200EB4003\n" 
+"1B5D6BB1022B05D007D3032B0AD1DFF8A42407E0DFF84C\n" 
+"2504E0DFF8A02401E0DFF8942400EB40010919497802EB\n" 
+"4111012241F8142C002200EB40031B5D6BB1022B05D007\n" 
+"D3032B0AD1DFF8682407E0DFF8102504E0DFF8642401E0\n" 
+"DFF8582400EB40010919497802EB411151F8101C0029C2\n" 
+"D100EB4000001990F902004109DFF8F424012300F01F00\n" 
+"03FA00F042F8210010BC704710B50446DFF8CC0400EB44\n" 
+"11D1E90423521C43F10003C1E90423886900281EBF0878\n" 
+"C0F34000002802D02046896988472046BDE8104092E780\n" 
+"B5DFF8B4040078401CDFF8AC140870DFF8AC040078401C\n" 
+"DFF8A414087000200FE080B5DFF894040078401CDFF88C\n" 
+"140870DFF888040078401CDFF8801408700120FFF7C1FF\n" 
+"DFF870040078401EDFF868140870DFF868040078012805\n" 
+"D1DFF85C04406808B1FEF71EFFDFF850040078401EDFF8\n" 
+"4814087001BD80B5DFF83C040078401CDFF834140870DF\n" 
+"F830040078401CDFF8281408700220D2E780B5DFF81804\n" 
+"0078401CDFF810140870DFF810040078401CDFF8081408\n" 
+"700320C1E780B5DFF8F8030078401CDFF8F0130870DFF8\n" 
+"EC030078401CDFF8E41308700420B0E780B5DFF8D40300\n" 
+"78401CDFF8CC130870DFF8CC030078401CDFF8C4130870\n" 
+"05209FE780B5DFF8B4030078401CDFF8AC130870DFF8A8\n" 
+"030078401CDFF8A013087006208EE780B5DFF890030078\n" 
+"401CDFF888130870DFF888030078401CDFF88013087007\n" 
+"207DE780B5DFF870030078401CDFF868130870DFF86403\n" 
+"0078401CDFF85C13087008206CE780B5DFF84C03007840\n" 
+"1CDFF844130870DFF844030078401CDFF83C1308700920\n" 
+"5BE7F19403D08A820080B5DFF82C030078401CDFF82413\n" 
+"0870DFF820030078401CDFF8181308700A204AE780B5DF\n" 
+"F808030078401CDFF800130870DFF800030078401CDFF8\n" 
+"F81208700B2039E780B5BA480078401CB8490870B84800\n" 
+"78401CB74908700C202CE780B5B3480078401CB2490870\n" 
+"B2480078401CB04908700D201FE780B5AD480078401CAB\n" 
+"490870AB480078401CAA4908700E2012E780B5A6480078\n" 
+"401CA5490870A5480078401CA3490870A349D1E9042352\n" 
+"1C43F10003C1E90423886900281EBF0878C0F340000028\n" 
+"02D00F20896988470F20FFF764FEF2E691484FF0805101\n" 
+"609748002101609648016096480F2101608C484FF08051\n" 
+"0160704738B59348016893480068FDF7EDFFFEF713F891\n" 
+"480468914800688505AD0D90480068854203D08C480468\n" 
+"8D480560FEF70EF8002200211019694134BD1CB5894B1B\n" 
+"6813B16FF0010016BD874B1A6002F043F804467E480168\n" 
+"7E480068FDF7C4FFFDF7EAFF7C480068210901EB101080\n" 
+"018009744908606C484FF0805101607248012101607748\n" 
+"0160FDF7E1FF69484FF080510160002016BD7248006800\n" 
+"B9704780B560484FF0805101606948016869480068FDF7\n" 
+"99FFFDF7BFFF634800210160684801606848016060480F\n" 
+"210160FDF7BEFF55484FF08051016001BD10B504465048\n" 
+"4FF0805101605748002101605D480160564804605C4800\n" 
+"6828B15A4800688047594800210160504800682042FBD1\n" 
+"10BD80B548480078401C4749087047480078401C454908\n" 
+"700120FFF7D7FF3E484FF08051016045E680B53F480078\n" 
+"401C3D4908703D480078401C3C4908700220FFF7C4FF34\n" 
+"484FF00051016032E60000746D860000800C4000900B40\n" 
+"00A00B4080B531480078401C2F4908702F480078401C2E\n" 
+"49087027484FF0805101602E4800210160334801602C48\n" 
+"042101603248006828B13048006880472F480021016026\n" 
+"4800684007FBD41B484FF08041016000E680B51C480078\n" 
+"401C1B4908701B480078401C1949087012484FF0805101\n" 
+"601948002101601F4801601848082101601D48006828B1\n" 
+"1C48006880471A4800210160124800680007FBD407484F\n" 
+"F000410160D7E500700C40604D8800DC758900766D8600\n" 
+"80E100E080E200E0482C8800686D860000E100E0868889\n" 
+"001C278800404F88000C200E4010200E4014200E40142C\n" 
+"8800102C880000200E4004200E40E4758900E0758900E8\n" 
+"758900F8B506460C46FCF7DEFF07464FF4CC61DFF80C0B\n" 
+"07F014F8DFF8085BDFF8080B28606C6006F12800A86030\n" 
+"68F19403608E8200E86056F8040F286156F8040F686256\n" 
+"F8040FA86256F8040FE86256F8040F286356F8040F6863\n" 
+"56F8040FA86356F8040FE86356F8040F286456F8040F68\n" 
+"6156F8040FA86156F8040FE86156F8040F286256F8040F\n" 
+"686456F8040FA86456F8040FE86456F8040F28656F658C\n" 
+"22DFF8FC1A05F1580001F01CFADFF8780ADFF8F01AC0F8\n" 
+"5C15A868A96CDFF8682A126DDFF8E43A01251D60DFF8E0\n" 
+"5A44F000432B606A60A960E860FCF778FF2861DFF8CC3A\n" 
+"A3A2802105F1140000F0EFBC8169097881708169497881\n" 
+"8081698978C1800321C288002A4ED0D20703D58169C978\n" 
+"017204218279920703D582698A5C4272491C8279520703\n" 
+"D582698A5C8272491C8279120703D582698A5CC272491C\n" 
+"8279D20603D582698A5C0273491C8279920603D582698A\n" 
+"5C4273491C8279520608D582698A5C8273491C8288837B\n" 
+"42EA032282808279120608D582698A5CC273491CC288C3\n" 
+"7B42EA0322C280C288D20503D582698A5C0274491CC288\n" 
+"920503D582698A5C4274491C82698A5C491C13060AD502\n" 
+"F07F0212024282428A8369CB5C1A434282491C00E04282\n" 
+"82698A5C491C13060AD502F07F0212028282828A8369CB\n" 
+"5C1A438282491C00E08282C182828A11FA82F18269895C\n" 
+"017770472DE9F04182B00446002600258DF800502F46FC\n" 
+"F7DEFE804600A801F0CBFA00286AD09DF80000112818BF\n" 
+"132872D036B1012E08D0132E0CD0162E17D05CE0B0285A\n" 
+"D1207055E008B960704DE0B02853D051E0B02808BF1626\n" 
+"4ED0B7F50A7F4AD2A0699DF8001039547F1C45E0A0779D\n" 
+"F80000012819D1A069401C0021BA1E07D010F8013B5940\n" 
+"DFF8D839C95C521EF7D10A0942EA01110078C9B281422B\n" 
+"D1012539462046FFF726FF25E0032805D1B7F50A7F20D2\n" 
+"A069B02106E0042808D1B7F50A7F19D2A069112139547F\n" 
+"1C132613E0052808D1B7F50A7F0DD2A069132139547F1C\n" 
+"132608E010B91326002704E0B02801D1012600E00026FC\n" 
+"F76BFE40452FBFA0EB08004FF0FF31A1EB08014018B0F5\n" 
+"FA6F02D8002D3FF47FAF2846BDE8F68130B400232AB3DF\n" 
+"F83C4994F8E8400D786C40DFF82C59645DDFF8285985F8\n" 
+"E8400C78B02C03D11C545B1C03240CE0112C04D1B0241C\n" 
+"545B1C042405E0132C03D1B0241C545B1C05241C545B1C\n" 
+"491C521ED9D1184630BC70472573000080B58DF8001001\n" 
+"2200A9FFF7CBFF02BD2DE9F04104460D461E46AF1C4FF4\n" 
+"0A71304606F055FE812DA8BF7F1CDFF8B808002180F8E8\n" 
+"10B02030707170B170F9B2F01CFFF7DDFFC01C1FFA80F8\n" 
+"F19403F0918200BFB2FF2F0ADDC02108EB0600FFF7D2FF\n" 
+"8044390A1FFA88F0801902E0802108EB0600FFF7C7FF00\n" 
+"EB08070221B8B28019FFF7C0FFC7190021B8B28019FFF7\n" 
+"BAFFC719BFB2812C0BD3200A40F08001C9B2B819FFF7AF\n" 
+"FFC719E1B2B8B2801901E0E1B2B819FFF7A6FFC419A4B2\n" 
+"812D0ADB280A40F08001A019FFF79CFF0419E9B2A0B280\n" 
+"1901E0E9B2A019FFF793FF001980B2BDE8F08170B5DFF8\n" 
+"4807006801280CBFDFF84447DFF8F84704F1140006F057\n" 
+"F8451CEDB2812DA8BF8025DFF8E4372A4605F1150189B2\n" 
+"1820FFF77BFF064604222146DFF88C06301800F54D70FF\n" 
+"F73BFF86190422211DDFF87806301800F54D70FFF731FF\n" 
+"8619042204F10801DFF86406301800F54D70FFF726FF86\n" 
+"19042204F10C01DFF84C06301800F54D70FFF71BFF8619\n" 
+"042204F11001DFF83806301800F54D70FFF710FF861929\n" 
+"46DFF82406301800F54D70FFF735FF86196A1E92B204F1\n" 
+"1401DFF80C06301800F54D70FFF7FBFE84190021DFF8FC\n" 
+"05201800F54D70FFF720FF0419DFF8EC0590F8E8000109\n" 
+"41EA0011C9B2DFF8DC05201800F54D70FFF710FF0019DF\n" 
+"F8CC154118B02281F83423401CDFF8BC154118012281F8\n" 
+"3423411CDFF8F006BDE8704001F04EB9F8B5C18A82698A\n" 
+"18D2788369CB189B781B0443EA02628369CB185B7842EA\n" 
+"03228369CB5C43EA020782698A1852798369CB181B7943\n" 
+"EA0224806908188579B4F5807F88BF4FF48074B4FBF5F0\n" 
+"05FB104018B1B4FBF5F005FB0054DFF88836A2B2E11D89\n" 
+"B22620FFF7CEFE0646F9B2DFF83405301800F54D70FFF7\n" 
+"BDFE86193904090EDFF82005301800F54D70FFF7B3FE86\n" 
+"193902090EDFF80C05301800F54D70FFF7A9FE8619390E\n" 
+"DFF8FC04301800F54D70FFF7A0FE8619E1B2DFF8E80430\n" 
+"1800F54D70FFF797FE86192104090EDFF8D404301800F5\n" 
+"4D70FFF78DFE86192946DFF8C404301800F54D70FFF784\n" 
+"FE86190DE057F8040B0090042200A9DFF8A804301800F5\n" 
+"4D70FFF748FE8619241F012C31DB012D13D0022D02D004\n" 
+"2DE9D01DE037F8020B0090022200A9DFF87804301800F5\n" 
+"4D70FFF731FE8619A41EE7E717F8010B0090012200A9DF\n" 
+"F85C04301800F54D70FFF722FE8619641ED8E72A463946\n" 
+"DFF84404301800F54D70FFF716FE8619EF19641BCBE7DF\n" 
+"F82C0490F8E800010941EA0011C9B2DFF81C04301800F5\n" 
+"4D70FFF731FE8019DFF80C144118B02281F83423401CDF\n" 
+"F800144118012281F83423411CDFF8300501F071F8F1BD\n" 
+"38B50024418A1A295FD0222904D0232904D0242956D0F1\n" 
+"9403809582006CE001246AE0DFF80C35E422E6212520FF\n" 
+"F710FE0546E4208DF8020001220DF10201DFF8B0032818\n" 
+"00F54D70FFF7CCFD45198DF8014001220DF10101DFF894\n" 
+"03281800F54D70FFF7BFFD4519E422DFF88813DFF88003\n" 
+"281800F54D70FFF7B4FD4519DFF8700390F8E800010941\n" 
+"EA00108DF80000012200A9DFF85803281800F54D70FFF7\n" 
+"A1FD4019DFF848134118B02281F83423401CDFF83C1341\n" 
+"18012281F83423411CDFF86C0401F00FF816E0FFF7BEFE\n" 
+"13E00124FBF775F9FBF72FF9FBF72FF9FBF72FF9DFF850\n" 
+"0400210160DFF84C04016002210160FBF74FFA204632BD\n" 
+"30B591B00124DFF83804006820F00600DFF82C140860B7\n" 
+"480460012001F00CFC9CB14FF40024402100A8FEF789FD\n" 
+"050008D0412D06D2294600A800F0A1F9641B012CF0DAFF\n" 
+"F7EFFD00242021DFF8F40306F0E0FB4FF40A71DFF8EC03\n" 
+"06F0DAFBA448DFF8E413C0F80411DFF8D803FFF7ABFC40\n" 
+"B1DFF8CC03FFF747FFF0B19D48002101601EE09B480068\n" 
+"D8B1DFF8BC0300788007C1D501F034FA01280ED0002001\n" 
+"F03BFA00F0DBFF002001F0C5FBFCF73FF901F019F80120\n" 
+"01F02FFA8D4800680028AAD10020006804460420006805\n" 
+"46FBF7F8F8FBF7B2F8FBF7B2F8FBF7B2F8DFF854030021\n" 
+"0160DFF85003016002210160A048006801282946204603\n" 
+"D1FBF7B1FA11B030BDFBF7A2FA11B030BD0221FFF760BB\n" 
+"0321FFF75DBB0421FFF75ABB0521FFF757BB70B50646FC\n" 
+"F736FB05464FF4CC616F4806F06DFB6F4C6F4820600620\n" 
+"606006F12800A0603068E060301D0168216150F8041F61\n" 
+"6250F8041FA16250F8041FE16250F8041F216350F8041F\n" 
+"616350F8041FA16350F8041FE16350F8041F216450F804\n" 
+"1F616150F8041FA16150F8041FE16150F8041F216250F8\n" 
+"041F616450F8041FA16450F8041FE16450F8041F216565\n" 
+"658C226C4904F1580000F077FD4C486A49C0F85C15A068\n" 
+"A16C494A126D684B01241C60674C9D4B23606260A160E0\n" 
+"60FCF7D9FA2061644B5EA2802104F1140020E070B50446\n" 
+"0D463E4EFCF7CCFA70658C22594906F1580000F050FD38\n" 
+"485749C0F85C15564800210160844E35607160B160F160\n" 
+"FCF7B7FA306123464DA2802106F1140006F0F0FA854800\n" 
+"68C00700D5FEE78449844800090001BDE87040FBF7FCB9\n" 
+"F8B504460D461646264FFCF79BFA78658C22404907F158\n" 
+"0000F01FFD20483E49C0F85C153E48002101606B4F3D60\n" 
+"7E60B960F960FCF786FA3861234635A2802107F1140006\n" 
+"F0BFFA6D480068C00700D5FEE76B496C4800090001F194\n" 
+"0310998200BDE8F440FBF7CBB92DE9F04180460D461646\n" 
+"1F460C4CFCF768FA60658C22274904F1580000F0ECFC06\n" 
+"482549C0F85C15244800210160524C25606660A760E160\n" 
+"23E000005C6F8900606F8900331114912DE9F04180460D\n" 
+"4616461F46544CFCF744FA60658C22154904F1580000F0\n" 
+"C8FC42481349C0F85C15124800210160404C25606660A7\n" 
+"600698E060FCF72EFA2061434609A2802104F1140006F0\n" 
+"67FA41480068C00700D5FEE73F49404800090001BDE8F0\n" 
+"41FBF773B92573000000ED00E0BEBA3412306E8900346E\n" 
+"8900646B860070B582B004460D462A4BAAB2E91C89B219\n" 
+"20FFF7DFFB0646E9B22448301800F54D70FFF7CFFB8619\n" 
+"2904090E1F48301800F54D70FFF7C6FB8619AAB221461B\n" 
+"48301800F54D70FFF78FFB841900208DF8010001220DF1\n" 
+"01011448201800F54D70FFF782FB0419114890F8E80001\n" 
+"0941EA00108DF80000012200A90C48201800F54D70FFF7\n" 
+"71FB001908494118B02281F83423401C05494118012281\n" 
+"F83423411C044800F0E2FD73BD746B86005C6F8900C86E\n" 
+"89009072890008ED00E00CED00E070000B404870890068\n" 
+"708900442C880006000080F0ED00E061968200B8758900\n" 
+"606F8900202802DB384A203804E01028A6BF354A103833\n" 
+"4A400013684FF0030C0CFA00FC23EA0C0301FA00F01843\n" 
+"106070472F490860704780B52E4801682E480068FDF755\n" 
+"F8FDF77BF82C4800682C49884203D12B48006828490860\n" 
+"2748006840F0010015E080B52248016822480068FDF73E\n" 
+"F8FDF764F8204800682049884203D1204800681D490860\n" 
+"1C480068400840001A4908601B4809680160BDE80140FD\n" 
+"F759B818490968002814BF41F4007021F4007014490860\n" 
+"70471348006840F400701149086040F0100008600F4800\n" 
+"6840F008000D4908600548006840F48070A7E700008000\n" 
+"0E4084000E4088000E404C000E40142C8800102C880038\n" 
+"2C8800EFBEADDE44000E4008000E4004000E4010B55E48\n" 
+"06F074F95D4C204604F056FD5C4820605C48A0605C4820\n" 
+"605C48A0605C4A5D495548BDE8104004F041BD30B589B0\n" 
+"04460D465948844203D031215848FBF7BCF825B9002232\n" 
+"215548FBF700F9FCF765F9014602A805F0F4FB014600A8\n" 
+"05F03FFF2246A9B205F044FF012102A805F0D9FB4B4B4F\n" 
+"F4007248493F4806F0E9F902A8C046C04609B030BD0838\n" 
+"10B50C462E20FEF76FFA38B1002C14BF5422462241492E\n" 
+"20FEF776FA002C334804BFBDE8104006F09AB906F040F9\n" 
+"394B4FF4007236492D48BDE8104006F0C3B90838F19403\n" 
+"A09C82007CB50C4615461E462E20FEF74CFA70B1002D14\n" 
+"BF54234623002C14BF542246220698019000962D492E20\n" 
+"FEF74CFA73BD0838F8B50C461546022605E023463A468E\n" 
+"212348FBF7E6F8A4B222462946174806F086F90746A742\n" 
+"0FD0002FEED4BC42ECDB5EB92B20FEF71EFA30B1E21B1C\n" 
+"492B20BDE8F840FEF726BAF1BDE41B7D190620FDF7B8FF\n" 
+"761EDEE780B52E20FEF70AFA18B113492E20FEF715FAFC\n" 
+"F7D7F80349BDE8044004F06EBE0000D0D2880024E58800\n" 
+"8C648600A0648600DC5F8600FC5F860024808900CDB686\n" 
+"0030E5880010608600FF9B820038608600506086006C60\n" 
+"86002060860010B58CB0044600A8FBF74BFA206800F060\n" 
+"402060400040080099490840EAC17020600098C0082168\n" 
+"60F39E71216000988008216860F35D7121609DF8080000\n" 
+"F07F0060600CB010BD10B58CB0044600A8FBF727FA0098\n" 
+"20F002002168C90F40EA410000902068800F009960F3C3\n" 
+"0100912068400F009960F38201009160689DF8081060F3\n" 
+"06018DF8081000A8FBF712FA0CB010BD80F00100FBF73B\n" 
+"BA06F084B930B583B0044608788DF8000048780728B2BF\n" 
+"00250125801F8DF8010088788DF802004868029008208D\n" 
+"F803000020ADF804008DF8060000A92046FDF781F920B1\n" 
+"29462046FDF7F1FA012003B030BDFAF71EBD80B5FDF776\n" 
+"FAC0B202BDFDF79DBA10B504460121FDF7C4FA2046BDE8\n" 
+"1040FDF7EABA10B504460021FDF7BAFA2046BDE81040FD\n" 
+"F701BB054800687047054800687047024A106002480160\n" 
+"00F00EBE882788008C27880010B582B000208DF800009D\n" 
+"4C04F1100314220D2104F5067006F0C8F904F58A731422\n" 
+"0D2104F50C7006F0C0F906F0CAF9002849D006F0E3F9A0\n" 
+"6006F097FD07F08EFAA0680178002903D0217841F00101\n" 
+"2170072106F031FAA06806F009FAA068C178002903D021\n" 
+"7841F0020121704179002903D0217841F0040121708179\n" 
+"002903D0217841F00801217021780F2902D15521817500\n" 
+"E0817500220121084606F01DFC08F04DF93221A06806F0\n" 
+"98FBA06806F060FB06F00CFC06F00DFC08F050F90021C0\n" 
+"F8801016BD002016BD10B584B06B4CFFF795FF60600220\n" 
+"02904FF48060019004F512700090664B78220FF2981104\n" 
+"F5B0507830FCF7E5F9022002904FF48050019004F5C960\n" 
+"00900FF215036E220FF2801104F5B0504830FCF7D3F91F\n" 
+"BD7FB50020C046002801D0C046C0460020C046002801D0\n" 
+"C046C04608F0D5F9504C3E2005F0B9F9064608F061FD04\n" 
+"F5B055A835B00710D56068D0F8800006F035FCF1940330\n" 
+"A0820008F0AAFC04F10C01284608F0D9FF04F10C012846\n" 
+"09F03EF8F0060AD5002006F0AFFB102007F0D3FE04F10C\n" 
+"01284609F031F8B0060CD504F10C01284608F0CFFF0420\n" 
+"07F0C4FE04F10C01284609F022F8700703D56068C06F07\n" 
+"F0B3F804F10C01284609F0F5FC30071FD4B9E7BDF80100\n" 
+"001D0AF07BFCCDF8090002220DF103010AF09EFC02220D\n" 
+"F10101DDF80900801C0AF096FC04F10C02294600A809F0\n" 
+"42FD00A904F50C700AF091FC00A904F506700AF0B0FC00\n" 
+"2893D19DF8030010F00300D4D00128F1D104F10C022946\n" 
+"00A809F03DFEBDF801000028E7D0DDF809009DF8031049\n" 
+"0718D50421ADF803100121ADF8011002220DF103010AF0\n" 
+"62FC02220DF10101DDF80900801C0AF05AFC00A904F50C\n" 
+"700AF05BFCC8E70AF040FCC5E70000088888000D838600\n" 
+"534820436F6D5461736B00005348204D61696E5461736B\n" 
+"0000220AF085BC000002004F4800684E4B19604E490A70\n" 
+"114618BF4D494D4A11604D4901220A604D4909680029FB\n" 
+"D14C4908220A60704738B504460D460820FCF71DFC4248\n" 
+"007810B9424841490160424801210160414800680028FB\n" 
+"D1404808210160002005B102203E49086004B901243D48\n" 
+"04603548007810B936480021016031BD3248007810B932\n" 
+"48314901603748082101603348006840F0010031490860\n" 
+"3348096801602948007810B92948002101607047254800\n" 
+"7810B92648244901602C48082101602748006840084000\n" 
+"254908602748002101601C48007808B91D4801600820FC\n" 
+"F7F5BB80B523480078401C2149087021480078401C2049\n" 
+"08701248006810B1104800688047134801210160124800\n" 
+"680028FBD111480821016016480078401E144908701448\n" 
+"0078012804D11248406808B1FDF7A1FA10480078401E0E\n" 
+"49087001BD00004C7689009988890051E5CC1A009C0C40\n" 
+"0C900C4014900C4080E200E05076890000900C4000E100\n" 
+"E008900C4080E100E0868889001C27880062B38B0708D0\n" 
+"521E11F8013B00F8013B00F024808B07F6D1830740F020\n" 
+"8000BF103A07D330B4B1E83810103AA0E83810F9D230BC\n" 
+"530724BFB1E80810A0E8081044BF51F8043B40F8043BD2\n" 
+"0724BF31F8022B20F8022B44BF0B7803707047083A07D3\n" 
+"B1E80810083A40F8043B40F804CBF7D25307E4E700007C\n" 
+"B504460D4616466F20FDF7E8FE48B1019600952346DFF8\n" 
+"9C25DFF89C156F20FDF7EDFE73BD7CB504460D4616466F\n" 
+"20FDF7D5FE48B1019600952346DFF87C25DFF874156F20\n" 
+"FDF7DAFE73BD80B50AF004FF0BF0C0FBBDE8F19403C0A3\n" 
+"8200014058E238B504462079062804D10AF051FD00280E\n" 
+"D420710AF0F2FC050017D425602562607900280CBFDFF8\n" 
+"3C05DFF83C0502E04FF0FF3032BDE06120460AF047FD28\n" 
+"B128460AF00FFD6FF0030032BD284632BD10B504460AF0\n" 
+"9FFE20460AF003FD40B210BD0BF0F4BB0BF0B9BC10B5A0\n" 
+"B004460023802200A920460BF0B0FC0128F7DA20460BF0\n" 
+"3FF920B010BDC0EB0011DFF8DC0400EB01104169096A42\n" 
+"69526A130C03F001034FEA114C0CF0010C9CEA030303D0\n" 
+"90B289B2401A70474069C06A001D89B2401A10FA82F070\n" 
+"47C0EB0012DFF89C0400EB021040690BF054BDC0EB0011\n" 
+"DFF8880400EB01104069816921F0040181617047C0EB00\n" 
+"11DFF8700400EB0110406902210160816941F004018161\n" 
+"70472DE9F84F804600200090DFF854040068C20704D440\n" 
+"F00100DFF844241060DFF84404D0F800A0DFF840040068\n" 
+"041DDFF83C040668DFF838040068020C02F00102330C03\n" 
+"F001035A401CD080B2B2B2871A57D08F4288BF0F460097\n" 
+"3A4641461AFA86F0FFF7DBFEDFF80C0402210160DFF808\n" 
+"04006820F00200DFF8FC1308600022B9193AE0B2B2A51A\n" 
+"1FFA80F919EB050737D08F4288BF0F460097BD4288BF3D\n" 
+"462A4641461AFA86F0FFF7B8FEA84405EB060B1FFA8BF0\n" 
+"A1B2884205D14FF0000BF00358BF4FF4803B781B08D081\n" 
+"4588BF81464A4641465046FFF7A0FECB44DFF894030221\n" 
+"0160DFF89003006820F00200DFF88413086000225946DF\n" 
+"F878030AF06FFA0098BDE8F28F2DE9F04104460025DFF8\n" 
+"68030668DFF86803D0F80080FBF702FC0746DFF85C0300\n" 
+"68DFF85C130968884212D016FA80F109782170012581B2\n" 
+"414506BF00F4803080F48031411C0122DFF838030AF044\n" 
+"FA0AE0FBF7E4FBB8422FBFC01B4FF0FF31C91B40186528\n" 
+"D9D32846BDE8F08170B504460D46BD4802210160FBF7D0\n" 
+"FB064629462046FFF738FF0128A4BF04192D1AFBF7C5FB\n" 
+"B0422FBF801B4FF0FF31891B4018B0F57A7F02D8002DE9\n" 
+"D105E025B140F2A321B448FAF77BFBAC4800688007FBD5\n" 
+"AA4802210160A948006840F00200A7490860A3480068A3\n" 
+"4909688842F9D170BD9D480068A9494860A94800688860\n" 
+"9F480068C8609B48006808619A48006848619648006888\n" 
+"6195480068C861A14800680862A04800684862A0480068\n" 
+"88629F480068C8629F4800689F4948609F48006888609E\n" 
+"480068C8609048006808618F48006848618B4800688861\n" 
+"8A480068C8619848006808629748006848629748006888\n" 
+"6296480068C862704780B58D4800210160F1940350A782\n" 
+"008C4880688C4908608A48C0688B4908607D4800210160\n" 
+"87488069794908608548C069784908608348006A854908\n" 
+"608148406A8449086076480BF0B7F874480BF0BFF87348\n" 
+"40F2DF3101608148012101607848406876490860624800\n" 
+"2101606E4880686E4908606C48C0686449086060480021\n" 
+"0160684880695B4908606648C0695A4908606448006A65\n" 
+"4908606248406A6449086058480BF088F857480BF090F8\n" 
+"554840F2DF3101606A48012101605A4840684C49086001\n" 
+"BD5FEA805C18BF5FEA815C07D1884203D0900503D19805\n" 
+"01D10120704700207047C0EB0011404800EB0110406981\n" 
+"6941F004028261026802F0040202608161042101600121\n" 
+"0163704710B504460AF090FF40B920460AF0B2FF20B120\n" 
+"46BDE810400AF0C2BF4FF0FF3010BD0AF0FFBF80B53348\n" 
+"0BF03EF832480BF046F836480BF038F835480BF040F845\n" 
+"480BF032F844480BF03AF843480BF02CF842480BF034F8\n" 
+"41480BF026F840480BF02EF83F480BF020F83E48BDE802\n" 
+"400BF026B8F8B5002400253B4E307801281ED17768062F\n" 
+"04D340F28B312148FAF755FAC7EB0710124901EB001000\n" 
+"7C20B940F28F311B48FAF749FA38460AF03CFF012803D0\n" 
+"38460AF05DFF08B9012403E06D1C1036062DD9D32046F2\n" 
+"BDA46D8600B86D8600006E86008FA3820069A38200187A\n" 
+"890010600B4028600B402C600B4020600B4024600B4000\n" 
+"600B4018600B4028620B402C620B4020620B4024620B40\n" 
+"00620B40146E8600EC75890014600B4030600B4040600B\n" 
+"4044600B4048600B4010620B401C76890014620B401862\n" 
+"0B4030620B4040620B4044620B4048620B4004620B4004\n" 
+"600B4000700B4000720B4000800B4000820B40B87F8900\n" 
+"38B504000D4603D14E210848FAF7E0F95DB10020686060\n" 
+"682860002814BF4560256065602089401C208131BD606D\n" 
+"860000200F49096809B102200DE070470C48406808B102\n" 
+"2010E0704700200849096809B1032000E0704705490968\n" 
+"08470448406808B1032000E07047014949680847CC5C89\n" 
+"0080B50BF097FA0128B8BF002002BD000000B583B00820\n" 
+"8DF8030000208DF80000ADF804008DF802008DF8060004\n" 
+"208DF801000FF215000290FFF722FA00A9FCF77BFB03B0\n" 
+"00BD000000B583B0FFF718FAFCF717FD08208DF8030000\n" 
+"208DF80000ADF804008DF802008DF8060005208DF80100\n" 
+"0FF221000290FFF702FA00A9FCF75BFB0020FAF7AEFAFF\n" 
+"F7FAF9FCF7D8FC03B000BD80B5FFF7F3F9FCF7F2FCFFF7\n" 
+"B7FF0020FAF7A1FAFFF7EAF9BDE80240F19403E0AA8200\n" 
+"FCF7C6BC00B583B0FFF7E5F90021F9F7E2FEFFF7DDF900\n" 
+"21F9F7DDFEFFF7DBF9FCF7D7FCFFF7D7F90121FCF75AFC\n" 
+"08208DF8030001208DF800000020ADF804008DF802008D\n" 
+"F806008DF801000290FFF7C2F900A9FCF718FB18B97721\n" 
+"1B48FAF725F9FFF7B5F90221FEF7BCFFFFF778FFFFF7AE\n" 
+"F9FCF78CFC15480121017003B000BD80B51248007828B1\n" 
+"FFF7A1F9BDE80240FCF7FBBBFF2002BD10B504460C4800\n" 
+"7830B1FFF797F92146BDE81040FCF718BC10BD80B50648\n" 
+"007828B1FFF788F9BDE80240FCF785BC01BD00008C6586\n" 
+"0087888900000000000000000000000000EFF310822DE9\n" 
+"FC5F72B62848006801B42748006801B4EFF314834FF000\n" 
+"0080F314886C464FF0020080F314886D46EFF311862049\n" 
+"78C183F3148830BF1E49087800282BD1FFE772B6DFF860\n" 
+"00016841F470010160174978C986F311884FF0020080F3\n" 
+"1488AD46002080F31488A54683F314880F4A01BC10600C\n" 
+"4A01BC1060BDE8FC5F82F310880C49087800280AD17047\n" 
+"0A490120087008490870B1E7074900200870D0E7044900\n" 
+"200870704788ED00E008ED00E0DC5C8900888889008988\n" 
+"890018B402460B464FF44874A4FB020104FB031114BC70\n" 
+"474FF47A720023FDF76CBBC90341EA5041C00309B1274A\n" 
+"F5E7264915E038B44FF47A720023A2FB004502FB015514\n" 
+"F5480055F1000100D01FE04FF0C871B0FBF1F032BC7047\n" 
+"4FF47A71B0FBF1F00021704738B4174A0023A2FB004502\n" 
+"FB015514F5480055F1000100D006E04FF0C871B0FBF1F0\n" 
+"002134BC70474FF0C87201B030BCFDF72FBB1CB44FF0C8\n" 
+"74A4FB002304FB01333BB110461946064A002302B010BC\n" 
+"FDF71FBB0348B2FBF0F000211CBC7047000040420F0030\n" 
+"B581B004460D46FCF754FD0548C4624563407820B901B0\n" 
+"BDE83040FCF744BD01B030BD1C27880010B50446FCF742\n" 
+"FD0548016A611801624078002804BFBDE81040FCF731BD\n" 
+"10BD1C27880010B53C4800680069C0B202F070FDC0B138\n" 
+"4800680069C0B202F07CFD0446FBF758F842F21071B4FB\n" 
+"F1F11030B0FBF1F0411C31480BF0DAF82F48BDE8104004\n" 
+"F033B900210920BDE81040FCF7EEBA00B583B0F9F7B3FD\n" 
+"002818BF032820D100210920F9F75CFD08208DF8030001\n" 
+"208DF800000020ADF804008DF802008DF801008DF80600\n" 
+"029000210920FCF7CEFA00A90920FCF79DF90022184917\n" 
+"4804F0F8F803B000BD38B504460D46F9F787FD002818BF\n" 
+"03281DD10F4804602069C0B202F029FD0446FBF705F842\n" 
+"F21071B4FBF1F140191030B0FBF1F0F1940370AE820041\n" 
+"1C07480BF086F8054804F0E1F801210920BDE83440FCF7\n" 
+"9CBA31BDD0758900BC75890099AD820010B584B00446F9\n" 
+"F759FD002818BF03281ED100210920F9F702FD08208DF8\n" 
+"030001208DF800000020ADF804008DF802008DF801008D\n" 
+"F806000290002C14BF012100210920FCF771FA00A90920\n" 
+"FCF740F904B010BD80B51C21DFF8DC02FFF73CF9DFF8D8\n" 
+"020021018101604160DFF8C80203F016FEDFF8C802BDE8\n" 
+"0240FAF768BA38B504460D46B4F9080000F0F0F800B153\n" 
+"E004F1200003F003FEE56100202063DFF8940203F016FE\n" 
+"FAF76AFF05462146DFF88802FFF736FD284680F31088DF\n" 
+"F8780203F028FE002032BD70B50C4600F0CEF8050013D0\n" 
+"6E6905F1200003F0FAFD214628463268904744B214B928\n" 
+"6B401C286305F1200003F00EFE04B10025284670BD38B5\n" 
+"0446B4F9080000F0B0F8A0B1A04212D1656904F1200003\n" 
+"F0DBFD204669688847050002D1206B401E206304F12000\n" 
+"03F0F0FD284632BD4FF0FF3032BD70B504460D461646B4\n" 
+"F9080000F08FF800B97DE06369986830B1324629462046\n" 
+"9B68BDE8704018476FF0050070BDF8B504460D461646B4\n" 
+"F9080000F078F800B940E06FF00500A17A00296769F968\n" 
+"08D031B14FF0FF33324629462046FC68A047F2BD0029FC\n" 
+"D04FF0FF33324629462046FC68A047F2BDF8B504460D46\n" 
+"16461F46B4F9080000F053F800B91BE06FF00500A17A00\n" 
+"29D4F814C0DCF80C1008D031B13B46324629462046DCF8\n" 
+"0C40A047F2BD0029FCD03B46324629462046DCF80C40A0\n" 
+"47F2BD4FF0FF30F2BD70B504460D461646B4F9080000F0\n" 
+"2AF800B918E06FF00500A17A00296369196908D031B132\n" 
+"46294620461B69BDE87040184770BD0029FCD032462946\n" 
+"20461B69BDE8704018474FF0FF3070BD80B5203003F03B\n" 
+"FD002002BD80B5203003F056FD002002BD38B50446FAF7\n" 
+"85FE30490D6900E06D68002D1CBFB5F90810A142F8D1FA\n" 
+"F77FFE284632BD2DE9F04104460025FAF771FE80462548\n" 
+"07690CE0386B48B1BA693AB1106828B121463846126890\n" 
+"47050001D17F680FB1002DEFD08DB11B4806690CE0306B\n" 
+"00281CBFB269002A05D0506818B1214630465268904776\n" 
+"68BE42F0D1404680F310882846BDE8F081F8B504460026\n" 
+"FAF73FFE05460C4807690DE0386B00281CBFBA69002A06\n" 
+"D0506820B1214638465268904706467F680FB1002EEED0\n" 
+"284680F310883046F2BD00004C5D89005C5D8900182C88\n" 
+"0080B5DFF88C0BDFF88C1B0160DFF8880B006820F41010\n" 
+"DFF8801B0860086840F410100860F1940300B28200DFF8\n" 
+"680B00210160DFF8641B0160DFF8640B006820F49000DF\n" 
+"F8581B0860086840F490000860DFF8440B00210160DFF8\n" 
+"401B0160DFF83C0B006820F41000DFF8341B0860086840\n" 
+"F410000860DFF81C0B002101608421DFF8200BFEF789FF\n" 
+"DFF8180B0021417128210171DFF8101B01600021017201\n" 
+"2180F83110292180F83010DFF8FC1AC162002180F83410\n" 
+"022180F85D102A2180F85C10DFF8E81A8165002180F860\n" 
+"1001BD002128B1022806D038BF4FF4900104E04FF41011\n" 
+"01E04FF41001DFF8A80ADFF8A82A0260DFF8A80A006888\n" 
+"43DFF8A02A1060106808431060DFF88C0A002101607047\n" 
+"DFF89C1A0860704738B50C462C21DFF8802A01FB002529\n" 
+"6800224A6495F90710002901BF2968096A01F0C001C029\n" 
+"03D12968496D490703D4FFF7C1FF0020E8712868FF2181\n" 
+"6495F904004109DFF8542A012300F01F0003FA00F042F8\n" 
+"21002868C12101622868DFF8381A0968C16228689F2181\n" 
+"642868C06C000A00022968C8642868C06B40F080002968\n" 
+"C8632868C06B20F080002968C863286800218166286841\n" 
+"66286801672146284600F045F82868C06C40F001002968\n" 
+"C8642C610020686195F9060028B9002105F124000AF0FA\n" 
+"FD04E0002105F124000AF032FE95F904004109DFF8C429\n" 
+"012300F01F0003FA00F042F8210000202873AB7131BD2C\n" 
+"22DFF8903902FB003000290168496E12BF41F001014908\n" 
+"49000068416670472C22DFF8703902FB0030017270472C\n" 
+"21DFF8602901FB00200069704710B40022DFF86C391C88\n" 
+"1A2C08D15C688C420DD0A14207DA012A09DB521E07E01B\n" 
+"2C01D300220AE0521C0C33052AEBDB052A08BF042202D0\n" 
+"12F1010F2ED00168C96C490849000368D9640168496A89\n" 
+"098901036859620168496A02EB4203DFF8144904EB8303\n" 
+"1B7A1943036859620168C96C21F07E010368D9640168C9\n" 
+"6C02EB420304EB83035B7A19430368D96402EB420104EB\n" 
+"810149890068816510BC704730B490F904205309DFF8CC\n" 
+"48012502F01F0205FA02F244F82320026841F005015164\n" 
+"90F904004109DFF8A42800F01F0005FA00F042F8210030\n" 
+"BC704710B5044642F210702268126A02F03002102A04D0\n" 
+"401EF7D16FF0010010BD0028FAD02068006A20F00E0069\n" 
+"B1022907D002D303290CD010E0216840F002000AE02168\n" 
+"40F00A0006E0216840F0040002E0216840F00600086208\n" 
+"E04B20FCF7F5FD20B1DFF83C184B20FCF7FFFD08212046\n" 
+"FFF7A8FF002010BD03681B6A23F00E03D0F800C0CCF820\n" 
+"3013040FD50B0A5B0003F00603F1940390B5820043F0F0\n" 
+"03920748BF43F00103026893620068C9B2816270474B00\n" 
+"DBB2910748BF43F0010300688362704770B4B0F91C208B\n" 
+"68D318CA88B0F91C40141B002205682D6A25F00E050668\n" 
+"356204E013F8015B0668B562521C24B1641E05686D6D2D\n" 
+"07F4D51AB3838BD3188383B0F91C30C9888B4204BF0121\n" 
+"C17290F904104B09DFF88847012501F01F0105FA01F144\n" 
+"F82310016807234B6490F904004109DFF8603700F01F00\n" 
+"05FA00F043F82100104670BC704738B50446C888B4F91C\n" 
+"10451A05D540F23731DFF84807F9F798FB42F210702168\n" 
+"096A890604D5401EF9D16FF0010032BD0028FAD042F210\n" 
+"702168096A01F03001102902D0401EF7D1EFE70028EDD0\n" 
+"802D02DB7F20E08302E02800E08318D02168496C21F00A\n" 
+"01226851642168496C41F01001226851640146A84208BF\n" 
+"41F080012268126A22F00E0223681A622268916632BDB0\n" 
+"F91C208B68D218B0F91E303BB15B1ED0F800C0DCF86CC0\n" 
+"02F801CBF7D1828BC38B9A188283B0F91C20C9888A4204\n" 
+"BF0121C1720168496C21F01001026851640168496C41F0\n" 
+"080102685164B0F91E007047000038B5044601E0012020\n" 
+"7394F90A0000EB4001A06900EB8105207B401E062800F2\n" 
+"EA80DFE800F0044389AEC3C9E20094F90A0000280CBF01\n" 
+"2002200221217342F210712268126A02F03002102A02D0\n" 
+"491EF7D131BD002900F0CE802168096A21F00E0140B102\n" 
+"280AD00DD3032810D1206841F006010AE0206841F00401\n" 
+"06E0206841F00A0102E0206841F00201016208E04B20FC\n" 
+"F7C4FC20B1DFF8D8154B20FCF7CEFC08212046BDE83440\n" 
+"75E694F90A00002804BF2069B0F5486F3BD10320207342\n" 
+"F210702168096A890602D5401EF9D115E0A0B142F21070\n" 
+"2168096A01F03001102902D0401EF7D109E040B1206800\n" 
+"6A20F00E002168086220680F21816294F904004109DFF8\n" 
+"6825012300F01F0003FA00F042F8210020680D21416494\n" 
+"F904004109DFF8442500F01F0003FA00F042F8210031BD\n" 
+"042067E742F210702168096A01F03001102903D0401EF7\n" 
+"D1042051E00028FBD02068006A20F00E0040F00A002168\n" 
+"086208212046FFF716FE2068806D40F400402168886520\n" 
+"6834214162042038E02A68A9882046FFF760FE0020A083\n" 
+"E072287880072946204603D5FFF7BDFE062027E0FFF775\n" 
+"FE052023E029462046FFF76FFE48B131BD29462046FFF7\n" 
+"F6FE29462046FFF7A9FEA8B9A07A401CA07294F90A0094\n" 
+"F9091088427FF414AF00212046FFF7F7FD072004E004F1\n" 
+"24000AF04FFB0020207331BDF1940320B98200F8B50446\n" 
+"94F90A0000EB4001A06900EB810529462046FFF740FE06\n" 
+"003FD02068076F0520207394F90B0088B394F90A0094F9\n" 
+"0910491E88421FD0A07A401CA0720020A083E07247F004\n" 
+"0755F80C2FA9882046FFF7FFFD287880070AD529462046\n" 
+"FFF75FFEA0B106212173E98888420FD106E02068002181\n" 
+"660AE02068002181662068406C40F020002168486447F0\n" 
+"10072068006F47F002010843216808673046F2BD70B504\n" 
+"4694F90A0000EB4001A06900EB81062068056F31462046\n" 
+"FFF731FE98B106212173F188884207D12168496C41F020\n" 
+"012268516445F010052168096F45F00202114322681167\n" 
+"70BD70B50446002594F90A0000EB4001A06900EB810694\n" 
+"F90900032805DB40F29941DFF87003F9F7ACF9207B0128\n" 
+"06D0052851D0062854D0072868D16BE002202073206801\n" 
+"21016794F90A000028206802D0052101672DE009210167\n" 
+"2069B0F5486F27D142F210702168096A890602D5401EF9\n" 
+"D115E0A0B142F210702168096A01F03001102902D0401E\n" 
+"F7D109E040B12068006A20F00E002168086220680F2181\n" 
+"622068806D40F40040216888652068342141623268B188\n" 
+"2046FFF756FDA583E57230788007204644BFBDE87040FF\n" 
+"F773BFBDE870401EE72046FFF71CFFC8B907E031462046\n" 
+"FFF7F0FD2046FFF764FF80B994F90A0094F90910491E88\n" 
+"420EBF0720012001252073A07A401CA072002D7FF479AF\n" 
+"70BD2068456C680604D440F2FA419C48F9F72DF9206825\n" 
+"F0200141642068406C10F0600F04D04FF4A0619548F9F7\n" 
+"1FF904F124000AF031FA0020207370BD70B582B00C4615\n" 
+"462C21844A01FB002696F90710002901BF3168096A01F0\n" 
+"C001C02903D13168496D490702D43169FFF7B1FB306800\n" 
+"21416471613068806C40F0FF00316888643068C06C40F0\n" 
+"01003168C8643068C06B40F080003168C8633068C06B20\n" 
+"F080003168C8633068C06B40F040003168C8633068C121\n" 
+"016296F905002C21664A10FB012002E00168C96E009101\n" 
+"68496D4907F8D5B46175720020B072306201203073307A\n" 
+"0028304602D0FFF78DFD01E0FFF7FCFE4FF47A7106F124\n" 
+"000AF01CFA50B94B20FCF78FFA18B15E494B20FCF79AFA\n" 
+"6FF003003062306A00B928463169B1F5486F05D1316889\n" 
+"6D21F400413268916576BD38B52C21474A01FB00242068\n" 
+"806C21688864616940EA010500206061E80705D5207B03\n" 
+"281CBF6FF008002062680703D56FF00900206201E0206A\n" 
+"28B104F12400BDE832400AF08EB9207A002820461CBFBD\n" 
+"E83240FFF73EBDFFF7AEFEF19403B0BC820015F0120F07\n" 
+"D02068406C400603D52046BDE83240A2E631BD80B53748\n" 
+"0078401C3549087035480078401C344908700020FFF7B8\n" 
+"FF32484FF4807110E080B52E480078401C2C4908702C48\n" 
+"0078401C2B4908700120FFF7A6FF29484FF40071016025\n" 
+"480078401E2449087024480078012804D12248406808B1\n" 
+"FBF760FD1F480078401E1E49087001BD80B51B48007840\n" 
+"1C1949087019480078401C184908700220FFF780FF1648\n" 
+"4FF48061D8E72C21064A01FB00200121C17100207047FC\n" 
+"000B407347BCBCEC000B406086890000300B4000500C40\n" 
+"00600C40442D880080E200E000E100E0082D880080E100\n" 
+"E0347486005074860058748600868889001C27880084E2\n" 
+"00E038B500247B4D64212046FFF797FA7A48F9F750F944\n" 
+"212846FEF7D0F97748F9F749F90CB9062003E0012C0CBF\n" 
+"0720082028810020A872AC81714868610020A86105F134\n" 
+"0002F09EFE6E48F9F733F929462846FFF787F86C48F9F7\n" 
+"2CF9641C4435032CD0DB6948BDE83240F9F7E3BA80B5B0\n" 
+"F90C0008B91A2003E001280CBF1B201C20FAF7D9FD0220\n" 
+"F9F7EAF8002002BD80B5016B01290AD1B0F90C0008B91A\n" 
+"2003E001280CBF1B201C20FAF7F0FD0220F9F7D9F80020\n" 
+"02BD2DE9F04104460D4616460027C069C046804608F134\n" 
+"0002F073FE2DB26D1E0CD06D1E0FD04FF4FF702D1A0FD0\n" 
+"6D1E19D06D1E1DD06D1E21D026E0B4F90C00FFF7FCF923\n" 
+"E03046FFF719FA1FE0B4F90C00FFF7A9FAB04219D03146\n" 
+"B4F90C00FFF711FA13E0B4F90C00FFF79DFA30600DE031\n" 
+"46B4F90C00FFF77FFA07E03146B4F90C00FFF789FA01E0\n" 
+"4FF0FF3708F1340002F057FE3846BDE8F081F8B504460D\n" 
+"461646C069C046074607F1340002F028FE32462946B4F9\n" 
+"0C00FFF71AFE044607F1340002F03EFE2046F2BD70B500\n" 
+"24224D28460AF0B1F8B8B94FF0FF36641E012C10DB04EB\n" 
+"0410154901EB800000F134052046FFF7FDFE284602F023\n" 
+"FE641E443D012CF5DA304670BD20460020C0460600E4D1\n" 
+"641C4435032CDADBF3E738B500240D4D2046FFF7E4FE28\n" 
+"4602F00AFE641C4435032CF5DB002032BD000088858900\n" 
+"1400660615006606207486001600660617006606F82C88\n" 
+"00BC858900DFF8A8030068DFF8A8130840DFF8A413DFF8\n" 
+"A4230A6020F44071DFF8902311601060DFF89003002101\n" 
+"60704780B5FFF7E7FFDFF888034068C0F3035007282ED1\n" 
+"DFF878034068C0F38140032827DADFF86C034068C0F381\n" 
+"40000140F00700DFF85C134968C1F3814169B9DFF85013\n" 
+"4968C1F34041DFF84423F1940340C082005268C2F30042\n" 
+"D20142EA81110843DFF834134968C1F3072140EA0120DF\n" 
+"F824130979C90702D54FF0FF3002BDDFF814130979DFF8\n" 
+"1023127A02F003021201DFF808331A60DFF8FC32DA60DF\n" 
+"F800231060DFF8FC020160002002BDDFF8E802C06840F0\n" 
+"0200DFF8DC12C860C868DFF8D8120860DFF8D002406800\n" 
+"0EFF2805D0DFF8C4028068C0F3800116E07047AD48C068\n" 
+"20F00200AB49C860C868AB490860A9484068000EFF2806\n" 
+"D0A6488068C0F38000C0F1010100E07047A2484068000E\n" 
+"FBF760B910B59F48002100220B460C461EC00E20FAF76B\n" 
+"FC9F480068C0B2222801BF9D480068C0B2102821D19C48\n" 
+"0068C0B224281CD19A480068000601BF99480068C0B20D\n" 
+"2813D198480068C0B2F02801BF96480068C0B2052809D1\n" 
+"95480068C0B2B12804D1FFF730FF9248F9F73DF90E20BD\n" 
+"E81040FAF765BC38B50C468148007810B16FF0010032BD\n" 
+"14B94FF0FF3032BD0E20FAF72BFC8848007878B1874821\n" 
+"46022250F8043B51F8045BAB4206D1521EF7D174480121\n" 
+"0170002032BD7E48012101707048D4E90023C0E9012310\n" 
+"0EFF2806D0C3F38000C0F10101100EFBF7F1F8FFF708FF\n" 
+"0400E4D00E20FAF72AFC204632BD80B56348007858B162\n" 
+"48007B800748BFFFF763FF0E20FAF71BFC5D4800210170\n" 
+"002002BD70B40024694E03E011F8015B3560641CE4B284\n" 
+"4201D2082CF6DB001B0AD0634D2D686D07FBD5604D2D68\n" 
+"11F8015B3560401EF4D1E4B25CB1641E5C4800684007FB\n" 
+"D559480068F5E7584800210160641CE4B2944201D2082C\n" 
+"F6DB101B0CD0534909684907FBD55049096803F8011B4E\n" 
+"4900220A60401EF2D1E4B24CB1641E4B4800684007FBD5\n" 
+"4848006803F8010BF3E7002070BC7047F8B504460D0016\n" 
+"461F4600D10CB92FB926B140F29F314148F8F762FDFFF7\n" 
+"E7FE3B46324629462046FFF79FFF0446FFF7F7FE2046F2\n" 
+"BD70B506460D00144618BF002C04D140F297413448F8F7\n" 
+"49FDFFF7CEFE00202F4A03E015F8011B1160401CC1B2B1\n" 
+"4202D2C0B20828F5DBC0B2311A89B271B1311A89B21346\n" 
+"274A12685207FBD51A6804F8012B15F8012B1A60491EF3\n" 
+"D1C0B248B1401E1F4909684907FBD51C49096804F8011B\n" 
+"F3E7FFF7B9FE002070BD0948007810B14FF0FF30704713\n" 
+"480021017000207047E8000B403FFF677DFC000B407347\n" 
+"BCBC685D890004300C4000300C4010300C40E03F0C40E4\n" 
+"3F0C40E83F0C40EC3F0C40F03F0C40F43F0C40F83F0C40\n" 
+"FC3F0C40282C8800988889006C5D890008300C400C300C\n" 
+"40346A860000207047F19403D0C3820080B5DFF88C05C3\n" 
+"6A8269816A4069FEF713FA20B9CB21DFF87C05F8F7CFFC\n" 
+"DFF87005C16AC0F8B010080071D0DFF8600590F8301080\n" 
+"F8A410012180F8A510002180F8A61090F8311080F8A710\n" 
+"816AC0F8A810418EC0F8AC10416BC0F8B410816BC0F8B8\n" 
+"10C16BC0F8C410DFF82C05FDF7C1FFDFF81C15C1F89C00\n" 
+"D1F89C00002811D5DFF81805006800F4E060DFF80C1508\n" 
+"60DFF8FC04C06EFDF7D4FFDFF8F004D0F89C0031E00846\n" 
+"8969C0F8801008002ED0DFF8DC04017F80F87410002180\n" 
+"F8751080F87610417F80F8771041698167C18BC167016A\n" 
+"C0F88410416AC0F88810DFF8BC04FDF786FFDFF8A414C8\n" 
+"66C86E002811D5DFF8A404006800F4E060DFF89C140860\n" 
+"DFF88804C06E10F1010F02D16FF0020002BDBFE0C86EFD\n" 
+"F7A0FFDFF87C04006840F00100DFF870140860C820F8F7\n" 
+"3CFADFF86404006840084000DFF85C140860DFF8480400\n" 
+"7B18B102280FD008D31CE0086800F4E06040F00A000860\n" 
+"002002BD086800F4E06040F00800F6E7086800F4E060DF\n" 
+"F818140969090601F0FE41084340F00C00DFF81014E7E7\n" 
+"4FF0FF3002BD80B5CC21DFF8F403FDF700FEDFF8EC03DF\n" 
+"F8FC130160DFF8FC1341602F2101720121DFF8F40309F0\n" 
+"0FFD0121DFF8EC0309F00AFDDFF8C413DFF8E403BDE804\n" 
+"40FEF7B8BC10B5DFF8DC034FF40042026011B94FF0FF30\n" 
+"10BDDFF8CC033422FDF7A5FE1C21DFF8C403FDF7D0FD04\n" 
+"20FAF70BFAFFF7FBFE040004D00420FAF72FFA204610BD\n" 
+"DFF8A8034FF400410160002010BD80B5DFF88C034FF400\n" 
+"410160DFF85C03C06E00280BD4DFF85003C06EFDF7FFFE\n" 
+"DFF848134FF0FF32CA66002813D4DFF83803D0F89C0000\n" 
+"280ED4DFF82C03D0F89C00FDF7ECFEDFF820134FF0FF32\n" 
+"C1F89C20002800D50CE0DFF81C03006800F4E060DFF810\n" 
+"1308600420FAF7EFF9002002BD6FF0070002BD70B50D46\n" 
+"16466FF00704DFF80C034FF400410160B748D0F89C0000\n" 
+"2810D4BB4809F0ADFC32462946B248D0F89C00FDF7C3FE\n" 
+"040048BF6FF00704B44809F085FC1EE070B50D4616466F\n" 
+"F00704B3484FF400410160A748C06E002811D4AD4809F0\n" 
+"8EFC4FF0FF3332462946A148C06EFDF7A5FE040048BF6F\n" 
+"F00704A54809F065FCA9484FF400410160204670BD10B5\n" 
+"0024A2484FF400430360012911D002294ED003291DD004\n" 
+"2922D0052927D006292BD0B1F5007F2ED040F201208142\n" 
+"36D041E08F48006840F001008D490860C820F8F71EF98A\n" 
+"480068400840008849086033E08448D0F89C00FDF77BFE\n" 
+"04462CE011468048F1940360C78200D0F89C00FDF793FE\n" 
+"25E07D48D0F89C00FDF796FE1FE07A48D0F89C00FDF79C\n" 
+"FE19E07748C06E002804D47548C06EFDF74EFE10E06FF0\n" 
+"07040DE07148007B022804D132B16E481168016104E06F\n" 
+"F0050401E04FF0FF3477484FF400410160204610BD80B5\n" 
+"0020744A126802B10120734A126802B10120032900D150\n" 
+"B96048C06EFEF736F828B95E48D0F89C00FEF730F800B1\n" 
+"B4E66A4800686A4908606748006848605A480068886067\n" 
+"480068C860674800686749086060480068486065480068\n" 
+"886065480068C860002002BD80B54F48006840F001004D\n" 
+"490860C820F8F79EF84A48006840084000484908605448\n" 
+"012101605448C0685449086052488068434908603F48C0\n" 
+"6EFEF704F850480F2101604F48C068504908604D488068\n" 
+"4D4908603748D0F89C00FDF7F4FF002002BD38B5002000\n" 
+"21494A1278521C484B1A70484A1278521C464B1A70374A\n" 
+"4FF4004313603D4A1268404B1B68394C246824EA02023A\n" 
+"4C246824EA0303254CA46D641C244DAC65940724D4D407\n" 
+"03D501202C6D641C2C65DC0703D501212C6C641C2C649C\n" 
+"0704D541F002016C6C641C6C645C0704D541F00401AC6C\n" 
+"641CAC641C0704D541F00801EC6C641CEC64002808BF00\n" 
+"2902D1686D401C68651E4802602048036019484FF40041\n" 
+"016021480078401E1F4908701F480078012804D11D4840\n" 
+"6808B1FAF74DFF1B480078401E1949087031BD00002087\n" 
+"8900A4748600C08789000CC00A409087890000C00A4000\n" 
+"D00A40848789007C8789008C2D880084E100E02C878900\n" 
+"6087890004E100E008D00A4008C00A4004C00A40EC8789\n" 
+"0010C00A4004D00A40FC8789000CD00A4010D00A408688\n" 
+"89001C27880000EB4012DFF8480D00EBC20090F82820D2\n" 
+"0702D44FF0FF307047426892699206FBD4406801600846\n" 
+"7047F8B50446F9F711FA054694F8F700B0B9012084F8F7\n" 
+"000220F8F705FB0FE007EB4710DFF8001D01EBC00090F8\n" 
+"2810C90705D5416889698906FBD4406806606068806980\n" 
+"0625D404F1E00009F052FB00BB04F1E00009F078FB0646\n" 
+"277807EB4710DFF8C41C01EBC00090F82810C907E6D580\n" 
+"6ADFF8581D08400828D0D131463846FFF7A9FF0A2EDAD1\n" 
+"0D213846FFF7A3FFD5E794F8F70050B104F1E00009F029\n" 
+"FB28B1002084F8F7000220F8F7BFFA2846BDE8F240F9F7\n" 
+"BFB9F8B5044694F8F600A0B9012084F8F6000220F8F7AC\n" 
+"FA0DE041688969C906FBD44068066816F4706F04D1F1B2\n" 
+"04F1CC0009F019FB60688069C00665D404F1CC0009F003\n" 
+"FB00285FD12578F19403F0CA820005EB4510DFF81C1C01\n" 
+"EBC00090F82810C90758BF4FF0FF36DFD5806ADFF8AC1C\n" 
+"0840082805EB4510DFF8F81B01EBC00090F828103FD1C9\n" 
+"0758BFFF2605D541688969C906FBD44068066816F4706F\n" 
+"C4D10D2E08BF0A26F1B22846FFF73BFFF7B20A2F03D10D\n" 
+"212846FFF734FF082EB4D105EB4510DFF8AC1B01EBC000\n" 
+"90F82810C90706D5416889698906FBD440682021016005\n" 
+"EB4510DFF88C1B01EBC00090F82810C90799D541688969\n" 
+"8906FBD440680821016091E7C90789D4FF268DE794F8F6\n" 
+"0058B160688069C00607D5002084F8F6000220BDE8F240\n" 
+"F8F727BAF1BD38B504462578032D05DB4FF42B71DFF8E0\n" 
+"0BF8F7D4F805EB4510DFF8281B01EBC00595F82800C007\n" 
+"58BF4FF0FF3529D595F99A004109DFF8542D012300F01F\n" 
+"0003FA00F042F82100686869686A680023136340F8383F\n" 
+"41F8483F05F1AC0009F090FA05F1B40009F08CFA05F1BC\n" 
+"0009F088FA05F1C40009F084FAA86A40084000A8620025\n" 
+"0020C4F8F000C4F8DC0094F80401F9F7EFFE284632BD70\n" 
+"4770472DE9F24F84B0074614469A46032F05DB4FF47271\n" 
+"DFF83C0BF8F782F807EB4710DFF8841A01EBC0064FF484\n" 
+"713046FDF769FA377027B9DFF81C0C706020200CE0012F\n" 
+"04D1DFF8100C7060212005E0022F05D1DFF8080C706022\n" 
+"2086F89A001698C6F8F0001898C6F8DC00D6F8F00028B9\n" 
+"40F2CF31DFF8DC0AF8F752F8D6F8DC0028B94FF47471DF\n" 
+"F8CC0AF8F749F80498DFF8601C884227BF07F10F004FF0\n" 
+"487707F10B004FF0C87786F8040196F80401F9F766FE01\n" 
+"2106F1AC0009F041F9012106F1B40009F03CF9002106F1\n" 
+"BC0009F037F9002106F1C40009F032F9179AD6F8DC1006\n" 
+"F1CC0009F0BDF9159AD6F8F01006F1E00009F0B6F9C6F8\n" 
+"9070706800F12C0830300190706800F1340900F1380500\n" 
+"F1480B443002904FF440700090149818B1009840F08000\n" 
+"00903CB1009840F440400090B06A40F40020B062019800\n" 
+"990160049A3946706800F006FD12981399084311990843\n" 
+"40F0100000900098C8F800000F980E9941EAC000009000\n" 
+"98C9F8000001E07068006870688069C006F9D51098BAF1\n" 
+"000F0AD00321CBF80010B16A41F00601B1624FF4F06129\n" 
+"600DE038B14FF4FE612960B16A41F00401B16201E00021\n" 
+"29600021CBF80010B16A41F00101B1620199096841F001\n" 
+"01019A11607168096C029A116096F99A104A09DFF8203C\n" 
+"012401F01F0104FA01F143F8221050B196F99A004109DF\n" 
+"F80C2C00F01F0004FA00F042F82100002005B0BDE8F08F\n" 
+"38B500EB4011F1940380CE8200DFF8D40C00EBC1046068\n" 
+"00F1440100F14002001D15680D6094F82810C90703D401\n" 
+"2084F88C0031BD15F4F06F16D0290648BF03210AD4E905\n" 
+"48BF042106D4A90548BF052102D4690502D5062184F88C\n" 
+"10012184F899100168016031BD002084F88C0015F0500F\n" 
+"0CD02046FFF7DCFD94F8F40030B1002084F8F40004F1C4\n" 
+"0009F05BF8A8060CD52046FFF771FD94F8F50030B10020\n" 
+"84F8F50004F1BC0009F04CF8012084F8980031BD2DE9F1\n" 
+"4F90B00C46C069C046054628780B9000200C904FF0010A\n" 
+"012660680E902068C0F3012040010F902068C0F3802000\n" 
+"B108200D902068000B00F00700012802D0022802D003E0\n" 
+"022000E006200C906769D4F80C802078C00740F12381A3\n" 
+"69226939464046FDF73BFC28B940F26651DFF82408F7F7\n" 
+"F6FEB7F1011F28BF4FF0FF3080F08B81B8F1011F2CBF4F\n" 
+"F4803040462168C1F3405139B10B99002918BF012902D1\n" 
+"B146B34602E04FF00009CB4621690A910990A069089007\n" 
+"972068C0F3C02006900D9805900F9804900C9803900020\n" 
+"0290CDF804B0CDF8009001232068C0F300120E990B98C0\n" 
+"B2FFF72BFE0090A86ADFF8401B084040EA892040EA4B30\n" 
+"40F00200A8620B9818B1022805D002D309E0022002E003\n" 
+"2000E0042085F83A0085F866000DE0052085F83A0085F8\n" 
+"66000B98032805DB40F2A151DFF85C07F7F791FEE069A8\n" 
+"652068C0F34050002814BF4FF003094FF000092068C00B\n" 
+"00F00700401E062819D8DFE800F004070A0D101316004F\n" 
+"EAD71A10E04FEA971A0DE04FEA571A0AE04FEA171A07E0\n" 
+"4FEAD70A04E04FEA970A01E04FEA570ABAF1000F08BF4F\n" 
+"F0080A05F10800B4E80E58A0E80E5806CC06C054F8200D\n" 
+"C0F3420085F8380085F8396085F83B90EF63C5F840A0A0\n" 
+"696864DFF8640AA8641098E864A068E86505F13400FDF7\n" 
+"5AF9E862002805D540F2E551DFF8A406F7F735FEE86A00\n" 
+"284BD42068800C00F00700401E062819D8DFE800F00407\n" 
+"0A0D101316004FEAD81610E04FEA98160DE04FEA58160A\n" 
+"E04FEA181607E04FEAD80604E04FEA980601E04FEA5806\n" 
+"06B901262068C0F3421085F86400002085F8650085F867\n" 
+"90C5F86880EE6620692867DFF8D40968671098A867A068\n" 
+"E86505F16000FDF711F92863002805D540F22261DFF810\n" 
+"06F7F7ECFD286B00283FD5E86AFDF72AF92846FFF704FD\n" 
+"6FF002007BE02068C0F3C239C0F3824B20690A90CDF824\n" 
+"80A069089007972068C0F3C02006900D9805900F980490\n" 
+"0C9803900296CDF804B0CDF8009000232068C0F300120E\n" 
+"990B98C0B2F1940310D28200FFF72CFD009005F10800B4\n" 
+"E8CE51A0E8CE51203CA86ADFF84019084040EA892040EA\n" 
+"4B3040F00400A862A86A40F00100A862A86A20F4E02021\n" 
+"68C1F3023140EA0140A8622068C0F30120401DA96A21F0\n" 
+"F00141EA0010A8622068C0F38020401CA96A21F4407141\n" 
+"EA0020A862A86A20F008002168C1F3805140EAC100A862\n" 
+"A86A20F400202168C1F3001140EAC140A862A86A20F480\n" 
+"102168C1F3C02140EA0150A8620E98C5F8940095F89B00\n" 
+"401C85F89B00009811B0BDE8F08F38B50024C069C04605\n" 
+"4695F89B00401E85F89B0095F89B0060B9287AC00705D5\n" 
+"E86AFDF792F8286BFDF78FF82846FFF769FC0446204632\n" 
+"BDF8B50E4615460024C069C04636B2761E012E40F29180\n" 
+"B61E14D0761E17D0761E1AD0761E1CD04FF4FD71761A1C\n" 
+"D0761E38D0761E3AD0761E59D0761E5ED0761E63D077E0\n" 
+"C06AFDF781F8044674E02946C06AFDF79BF86FE0C06AFD\n" 
+"F7A0F86BE0C06AFDF7A8F867E0007800EB4011DFF8A003\n" 
+"00EBC10090F82810C90758BF6FF0070459D5416801F130\n" 
+"06376831684908490031602A46D0F89010406800F011FA\n" 
+"376049E0D0F89400286045E0017AC90703D5006BFDF73A\n" 
+"F83EE0007800EB4011D44800EBC10505F1B40008F00EFE\n" 
+"05F1CC0008F07FFE01E06868006868688069C006F9D505\n" 
+"F1B40008F0E5FD24E0406800F13001086840F4404019E0\n" 
+"406800F13001086820F4404012E0DFF85C27126803781B\n" 
+"B940F64940024305E0012B04BF42F4400242F4922242F4\n" 
+"4040DFF83C17086001E04FF0FF342046F2BD2DE9F04104\n" 
+"460D4616469846C069C0460746387AC0070FD507F1B400\n" 
+"08F0C7FD434632462946386BFCF7E0FF044607F1B40008\n" 
+"F0A2FD06E0324629462069C0B200F025FA04462046BDE8\n" 
+"F081F8B504460D461646C069C0460746387AC0070ED507\n" 
+"F1AC0008F0A3FD32462946F86AFCF7BBFF044607F1AC00\n" 
+"08F07FFD06E0324629462069C0B200F091F904462046F2\n" 
+"BD2DE9F04104460D4616469846C069C0460746387AC007\n" 
+"22D518F1010F05D0414607F1B40008F0B1FD03E007F1B4\n" 
+"0008F076FD434632462946386BFCF78FFF8046DDF818C0\n" 
+"BCF1000F04D04346324629462046E04707F1B40008F047\n" 
+"FD06E0324629462069C0B200F0CAF980464046BDE8F081\n" 
+"2DE9F84304460D4616469846C069C0460746387AC0070E\n" 
+"D507F1AC0008F046FD32462946F86AFCF75EFF814607F1\n" 
+"AC0008F022FD06E0324629462069C0B200F034F981465F\n" 
+"EA080004D04B46324629462046C0474846BDE8F2832DE9\n" 
+"F0410F46F19403A0D5820090F81080B8F1030F04DB40F2\n" 
+"3B718448F7F7ECFB08EB4810DFF89C1501EBC00494F828\n" 
+"00C0073AD5656825B940F241717B48F7F7DBFB04F1F806\n" 
+"032F0ED108EB4810DFF8741501EBC00707F1E00008F077\n" 
+"FD00B37868806900061CD5A88C3080288D708095F82C00\n" 
+"307195F834007071288F3081B5F848007081288EF080A0\n" 
+"6AC0F3400058B1E06AFDF712F918B9206BFDF70EF918B1\n" 
+"4FF0FF30BDE8F0810020BDE8F08138B5047C032C04DB40\n" 
+"F273715B48F7F79BFB04EB44102E4901EBC00494F82800\n" 
+"C00735D5656825B940F27C715348F7F78BFB04F1F80000\n" 
+"2129860188A98441882985017985F82C10417985F83410\n" 
+"018929874189A5F84810C0882886A06AC0F3400028B1E0\n" 
+"6AFDF7E2F8206BFDF7DFF8B5F84000A5F8440094F99A00\n" 
+"4109DFF8A823012300F01F0003FA00F042F82100002032\n" 
+"BD002120B1022804D038BF0C2102E0032100E03021DFF8\n" 
+"8004DFF880240260DFF8800400688843DFF87824106010\n" 
+"6808431060DFF86404002101607047A476890010B50020\n" 
+"FFF7DCFF0120FFF7D9FF0220FFF7D6FFDFF828444FF484\n" 
+"712046FCF71BFD0020207060486060202084F89A00DFF8\n" 
+"30444FF484712046FCF70DFD012020705A486060212084\n" 
+"F89A00DFF818444FF484712046FCF7FFFC022020705448\n" 
+"6060222084F89A00DFF8000400210180DFF8FC030180DF\n" 
+"F8FC030180DFF8C013DFF8F403FDF7BCFBDFF8D813DFF8\n" 
+"EC03FDF7B6FB2146DFF8E803BDE81040FDF7AFBB000008\n" 
+"0010002C6E86001301B1FBF3FC03FB1C1C4FEA8C0CBCFB\n" 
+"F2F2B1FBF3F141EA02418AB24262C1F307418162704770\n" 
+"B50D46164600EB4011DFF8600300EBC10404F1AC0008F0\n" 
+"F4FBC4F8A050C4F8A4603546F8F703FB0646002084F8F5\n" 
+"0024E004F1E00008F066FC78B1012084F8F5002046FFF7\n" 
+"DEF8304680F3108804F1BC0008F0D6FBF8F7EAFA0646D4\n" 
+"F8A000401CC4F8A00010F8011D04F1E00008F058FCD4F8\n" 
+"A400401EC4F8A400D4F8A4000028D6D1304680F3108820\n" 
+"46FFF7BAF804F1AC0008F09BFB284670BD10B500EB4011\n" 
+"B24800EBC10404F1E00008F023FC28B160688069000601\n" 
+"D5002010BD012010BD00EB4011A94800EBC100D0F89400\n" 
+"70470000000000400B4000500B4000400C40F8B50D4616\n" 
+"4600EB4011A04800EBC10404F1B40008F084FBC4F89C50\n" 
+"C4F8A860002084F8F400D4F8A850F8F78FFA064620E004\n" 
+"F1CC0008F0EDFB60B1012084F8F400304680F3108804F1\n" 
+"C40008F068FBF8F77CFA0646D4F89C70781CC4F89C0004\n" 
+"F1CC00F1940330D9820008F001FC3870D4F8A800401EC4\n" 
+"F8A800D4F8A8000028DAD1304680F3108804F1B40008F0\n" 
+"31FB2846F2BD000080E100E0016A180080B58D48007840\n" 
+"1C8B4908708B480078401C8A4908708A48012101600020\n" 
+"FFF77AFA85480078401E8349087083480078012804D181\n" 
+"48406808B1F9F725FF7F480078401E7D49087001BD38B5\n" 
+"7A480078401C7949087079480078401C77490870774802\n" 
+"2101606C4C606800F1440100F14002001D15680D6094F8\n" 
+"2810C90703D4012084F88C003EE015F4F06F16D0290648\n" 
+"BF03210AD4E90548BF042106D4A90548BF052102D46905\n" 
+"02D5062184F88C10012184F899100168016024E0002084\n" 
+"F88C0015F0500F0CD02046FFF73AF894F8F40030B10020\n" 
+"84F8F40004F1C40008F0B9FAA8060CD52046FEF7CFFF94\n" 
+"F8F50030B1002084F8F50004F1BC0008F0AAFA012084F8\n" 
+"980061E080E200E000E100E038B549480078401C474908\n" 
+"7047480078401C464908704648042101603B4C606800F1\n" 
+"440100F14002001D15680D6094F82810C90703D4012084\n" 
+"F88C003EE015F4F06F16D0290648BF03210AD4E90548BF\n" 
+"042106D4A90548BF052102D4690502D5062184F88C1001\n" 
+"2184F899100168016024E0002084F88C0015F0500F0CD0\n" 
+"2046FEF7D7FF94F8F40030B1002084F8F40004F1C40008\n" 
+"F056FAA8060CD52046FEF76CFF94F8F50030B1002084F8\n" 
+"F50004F1BC0008F047FA012084F898001A480078401E19\n" 
+"49087019480078012804D11748406808B1F9F750FE1448\n" 
+"0078401E1349087031BDA4768900FB03FFFF69CC82006B\n" 
+"CC8200FD03FFFFC0000B40FC000B407347BCBCE8000B40\n" 
+"AC778900B478890030400B4030500B4030400C40582C88\n" 
+"008C2C8800C02C8800868889001C27880084E200E070B4\n" 
+"0A68120E02F00702022A02D0042A0FD010E003222023DF\n" 
+"F8C048DFF8C058E56100240D68ED0F47D00C682402240A\n" 
+"63E00522EFE701221023DFF8A048DFF8A058E5614FF0FF\n" 
+"340D682D022D0AB5F5FA5F2DD042F61136B54227D0B5F5\n" 
+"7A5F22D045F22266B5421CD0B5F5FA4F17D04AF64446B5\n" 
+"4211D04BF68036B5420BD0DFF86068B54205D0DFF85C68\n" 
+"B54210D10B240EE00A240CE009240AE0082408E0072406\n" 
+"E0052404E0042402E0022400E00024002C37D50F2435E0\n" 
+"0D682D022D0A012D18D0022D13D0082D0ED0102D09D020\n" 
+"2D04D0402D10D1DFF80C480DE04BF680340AE04AF64444\n" 
+"07E04FF4FA4404E04FF47A5401E04FF4FA54A5010C24DF\n" 
+"F8E067B5421EBFDFF8D4673668002E0AD0DFF8C867366A\n" 
+"B560F19403C0DC8200DFF8C0572D6AAD68DFF8B867F561\n" 
+"48BB0D68C5F30175012D08BF42F0480205D00D68C5F301\n" 
+"750DB942F00802DFF8A4572D682D6C2D0C2D04DFF89867\n" 
+"36683564DFF890572D682D6C2A43DFF888572D682A64DF\n" 
+"F8802712681363DFF878271268536329E0012827D10D68\n" 
+"C5F30175012D08BF42F4904205D00D68C5F301750DB942\n" 
+"F40062DFF84C572D682D6CADB2DFF8446736683564DFF8\n" 
+"3C572D682D6C2A43DFF830572D682A64DFF82827126893\n" 
+"63DFF820271268D363112B04D3DFF814271268082319E0\n" 
+"DFF8FC26D269DFF808379A4205D1DFF8FC26126840F201\n" 
+"130CE0DFF8E026D269DFF8F4369A42DFF8E42612680CBF\n" 
+"40F202230023D362DFF8D4261268D26822F03102DFF8B8\n" 
+"361B680BB942F0010288B922F4706040EA04220868C0F3\n" 
+"8070E8B142F002020868C0F30170012816D142F0400213\n" 
+"E0012811D120020B68C3F3807343B140F002000968C1F3\n" 
+"0171012908BF40F00100DFF8781609680861DFF8700600\n" 
+"68C26070BC704780B5DFF86006006808210160DFF85806\n" 
+"006802210160DFF84C0600684160DFF8440600680021C1\n" 
+"623C21DFF82806FCF788F9DFF82006002141600160DFF8\n" 
+"34168160C160DFF81416C161DFF8281601628868DFF800\n" 
+"16C861DFF8200608F069F9DFF81C0608F065F9DFF8EC15\n" 
+"DFF81406BDE80440FDF739B810B50C0002D14FF0FF3010\n" 
+"BDDFF8D0050069002802BFDFF8C4054069002800D037E2\n" 
+"1E20F8F78FFD6068DFF8B01508602078002818BF022818\n" 
+"D1DFF8B005006802210160DFF8A805006850210160DFF8\n" 
+"9C05006844F201010160DFF880050121016104F1080100\n" 
+"20FFF74BFE2078012818BF022818D1DFF8740500680221\n" 
+"4160DFF86C05006850214160DFF8600500684CF2010141\n" 
+"60DFF844050121416104F108010120FFF72DFEDFF84405\n" 
+"006840F205514161002010BD80B5DFF82005006968B1DF\n" 
+"F818050068E8B1DFF820050068806920F40040DFF81415\n" 
+"09688861DFF8FC04406900281EBFDFF8F4040068002809\n" 
+"D0DFF8F8040068006A20F40040DFF8EC1409680862DFF8\n" 
+"D40400214161016141601E20F8F742FD002002BD70B50C\n" 
+"4615462E46DFF8B804406800B960E0DFF8AC04006900B9\n" 
+"5EE0012D1CDA304670BD2278637842EA0322A37842EA03\n" 
+"42E37842EA0362DFF898341B689A60241D2D1F401C8842\n" 
+"01D2012DEADA012DE4DBDFF8900408F0BEF8DFF8740400\n" 
+"688069C0B2C0F180010020ECE770B50C4615462E46DFF8\n" 
+"4C04406800B92AE0DFF84004406900B928E0012D1CDA30\n" 
+"46F1940350E0820070BDDFF840040068806804F8010B03\n" 
+"0A04F8013B030C04F8013B000E04F8010B2D1F491C9142\n" 
+"01D2012DEADA012DE4DBDFF8280408F088F8DFF8080400\n" 
+"68006AC2B20021EEE76FF0070070BD6FF0050070BD10B5\n" 
+"0024491E0CD040F2FF10091A00F02D81491E012940F2A7\n" 
+"80891E012926D935E1DFF8BC034068002800F0A180DFF8\n" 
+"B0034069012809D1DFF8B8030068006840F00200DFF8AC\n" 
+"1309680860DFF894030069012840F01D81DFF898030068\n" 
+"406840F00200DFF88C130968486011E1DFF87003406800\n" 
+"287BD0DFF868030069012846D1DFF85C034068401EDFF8\n" 
+"54134860DFF860030068C06820F02000DFF854130968C8\n" 
+"60DFF84C030068C06800F47060B0F5706F13D1DFF83803\n" 
+"0068C06820F47060DFF82C130968C860DFF824030068C0\n" 
+"6840F47060DFF818130968C860DFF810030068006820F0\n" 
+"A000C14909680860C0480068406920F08000BD49096848\n" 
+"61BC480068806920F40040B94909688861B44840690128\n" 
+"24D1B2484068401EB0494860B3480068C06820F01000B1\n" 
+"490968C860AF480068406820F08000AD4909684860AB48\n" 
+"0068406920F40040A94909684861A7480068006A20F400\n" 
+"40A54909680862002104207EE09E484068022800DB91E0\n" 
+"9B48006901282FD199484068401C984948609B48006840\n" 
+"6940F080009849096848619348006838B1954800688069\n" 
+"40F4004093490968886191480068C06840F028008F4909\n" 
+"68C86095484FF4804101608B480068006840F080008949\n" 
+"0968086090484FF4804101608148406901282FD17F4840\n" 
+"68401C7E49486081480068406940F400407E4909684861\n" 
+"7D480068C06840F010007A490968C8607548006838B177\n" 
+"480068006A40F400407549096808627B484FF480410160\n" 
+"71480068406840F080006F490968486076484FF4804101\n" 
+"6001210520F6F7E5FA01210620F6F7E1FA01210720F6F7\n" 
+"DDFA05211820F6F7D9FA05211920F6F7D5FA12E0614800\n" 
+"68406840F002005E49096848605D480068006840F00200\n" 
+"5A490968086001E04FF0FF34204610BD6FF0070010BD51\n" 
+"48406808B34F4853490968C96841625149096809698162\n" 
+"4F480068C06820F030004C490968C8604B480068406840\n" 
+"F0020048490968486047480068006840F0020044490968\n" 
+"0860002070473E484068D0B140480068406840F002003E\n" 
+"49096848603C480068006840F002003A49096808603848\n" 
+"00683349896A0161364800683149496AC1600020704710\n" 
+"B53C480078401C3A4908703A480078401C394908703948\n" 
+"F19403E0E382004FF4804101602748006900281FBF2948\n" 
+"0068006810F0400411D0264800688069C0B2C0F1800001\n" 
+"28A4BF274807F0EAFE20480068006820431E4909680860\n" 
+"1948406900281FBF1B480068406810F040040FD0184800\n" 
+"68006AC0B20128A4BF1B4807F0D0FE1348006840682043\n" 
+"11490968486019484FF48041016018480078401E164908\n" 
+"7016480078012804D11448406808B1F9F7BBF912480078\n" 
+"401E1049087010BD0000E4868900001BB7008858010000\n" 
+"7701007C2D88000080BB008041AC005F000067802D8800\n" 
+"1887890010878900482D880084E200E004E100E0868889\n" 
+"001C27880084E100E080B5002000F017F802215E4807F0\n" 
+"A6FE04215C4807F0A2FE20215A4807F09EFE4021584807\n" 
+"F09AFE4FF000415648BDE8044007F093BE80B500285448\n" 
+"00680CD040F4806051490860086840F08000086002214E\n" 
+"4807F082FE12E020F080004B490860086820F480600860\n" 
+"086820F00400086049E04648007810B10220F9F7A7FB44\n" 
+"4800688007F5D54048006840F004003E49086005E03E48\n" 
+"007810B10220F9F796FB3C4800684007F5D53748006840\n" 
+"F010003549086005E03548007810B10220F9F785FB3448\n" 
+"00684003F5D432480068800307D42E4800780028F7D002\n" 
+"20F9F776FBF3E72C480068C00349D5284800780028F7D0\n" 
+"0220F9F76AFBF3E72448007810B10220F9F763FB224800\n" 
+"684007F5D41E48006820F002001C49086005E01C480078\n" 
+"10B10220F9F752FB1A4800688007F5D41548006820F010\n" 
+"001349086005E01348007810B10220F9F741FB12480068\n" 
+"C003F5D51048006880030DD50C4800780028F7D00220F9\n" 
+"F732FBF3E70848007810B10220F9F72BFB074800684003\n" 
+"F5D501BD000004000E4044000E4008000E40848889000C\n" 
+"000E4048000E4003480021016003480160034801607047\n" 
+"54868900588689005C8689000B460146184601F0EDBA00\n" 
+"0032E210B50446616004F10800DFF81014016044600022\n" 
+"04F1080104F1100007F0CDFD41F6D4000021015140F2FC\n" 
+"7204F5C051F43104F5C050D83008F047FD42F6F0000021\n" 
+"015142F6F400015542F6F50001210155204610BD10B504\n" 
+"4604F5C050D830C046C04604F1100007F0F8FD204610BD\n" 
+"70B504460D461646012160680268126A90473246294604\n" 
+"F1100007F0FAFFBEE1002160680268126ABDE810401047\n" 
+"10B50446012160680268126A904742F6F400005D30B158\n" 
+"22DFF86813606803689B69984742F6F4000121015510BD\n" 
+"F8B504460F46154642F6F400005D30B95E22DFF84013F1\n" 
+"940370E78200606803689B6998472846007EC04630B15F\n" 
+"22DFF82C13606803689B699847284608F064FC86B2B01C\n" 
+"812FA8BF401C812EA8BF401C42F6F00109594018B0F500\n" 
+"6F07D37122DFF8F812606803689B6998474CE0802F0BDB\n" 
+"084642F6F001421C0A5142F2F00100193A0A42F080020A\n" 
+"5442F6F000005942F6F001421C0A5142F2F00100190F54\n" 
+"802E0DDB42F6F000005942F6F001421C0A5142F2F00100\n" 
+"19320A42F080020A5442F6F000005942F6F001421C0A51\n" 
+"42F2F00100190E54284608F016FC074628468068C0463A\n" 
+"46014642F6F0000059001900F50050F030FBF751FD42F6\n" 
+"F0000059301842F6F001085104F5C050D830BDE8F24008\n" 
+"F005BC10B5044642F6F400005D28B98A228D4960680368\n" 
+"9B69984742F6F4000021015542F6F000025992B204F500\n" 
+"51F03104F1100007F0A3FD42F6F000002101513AE7F0B5\n" 
+"83B004460D4616461F4642F6F400005D28B994227B4960\n" 
+"6803689B69984742F6F40000210155019700962B4642F6\n" 
+"F000025992B204F50051F03104F1100007F007FF42F6F0\n" 
+"000021015160680268126A03B0BDE8F040104700F5C050\n" 
+"D8307047F8B504460D46164600F02FF818B3012E2ADB15\n" 
+"F8011B701E0A0607D54FF67F72114015F8012B42EA0121\n" 
+"401E15F8016B471E300607D54FF67F70304015F8012B42\n" 
+"EA00267F1E33462A46204600F02AF87519BE1BDBE7D022\n" 
+"5249606803689B6901B0BDE8F0401847F1BD15E011F801\n" 
+"0B521E000644BF491C521E11F8010B521E030607D54FF6\n" 
+"7F73184011F8013B43EA0020521E4118121A012AE7DA50\n" 
+"1E8041C00F704770B588B004460D4611461A4600A808F0\n" 
+"65FB41F6D400065942F6F5000021015560680268126A90\n" 
+"4700E07668AEB100AA2946304633689B6898470028F5D0\n" 
+"00A808F039FB18B900A8007EC04628B1FE222B49606803\n" 
+"689B699847012160680268126A904742F6F50001210155\n" 
+"00A8C046C04608B070BD70B504460D4601216068026812\n" 
+"6A904735B94FF487721C49606803689B69984742F6F500\n" 
+"005D30B940F20F121749606803689B699847686830B14F\n" 
+"F488721249606803689B69984741F6D400065909E0AE42\n" 
+"06D140F215120C49606803689B6998477668002EF3D141\n" 
+"F6D4000059686041F6D4000551002160680268126ABDE8\n" 
+"704010470000086586002C658600406840680268926810\n" 
+"47406840680168C96808474068406803681B6918474068\n" 
+"4068016849690847406815E74068406803689B69184740\n" 
+"6840680168C9690847002141607047000070B50446F194\n" 
+"0300EB82003548364E0568B5B1287A88B16868A0420ED1\n" 
+"012028723078401C3070287A401E2872C0B210B9284608\n" 
+"F080FBF8F7A9FFED68002DE8D170BD10B5044628482949\n" 
+"016000200021024603460FC4103CF8F757FE21480168E1\n" 
+"60046020484078002804BFBDE81040F8F745BE10BD30B5\n" 
+"1B4D04462878401C287081B0A868217A11B9606001250D\n" 
+"E06168814208D01021204608F062FB207A0028F8D1A868\n" 
+"6060207A451C2572F8F76DFF284601B030BD0B490A7852\n" 
+"1C0A70017A491E0172C9B2002918BFF8F75EBF00B581B0\n" 
+"08F02FFB01B05DF804EBF8F755BFC4D288001C278800D4\n" 
+"758900FDEA820011490A78521C0A70104903E0824205D0\n" 
+"02F10C010A68AAB1824202D1C068086010E002F10C010A\n" 
+"6862B18242F6D002F10C010A6832B18242F0D002F10C01\n" 
+"0A68002AE3D1F8F729BF1C278800C4D28800F0B50E4681\n" 
+"B0044617461D463021FBF793FA12496774207C09780843\n" 
+"2074089884F8250006B12662079806994018C008C00000\n" 
+"2140F8501D4FF08071416408490164C5646FF002014162\n" 
+"09994160606001B02046BDE8F040F8F787BF8588890093\n" 
+"77820010B50446FFF7F4FCB9482060B948A060B9482060\n" 
+"B948A060204610BD083870B588B00C0015461E4616D0F7\n" 
+"F712F9014602A800F0A1FB014600A800F064FE32462946\n" 
+"00F07FFE012102A800F086FB02A8C046C046641EE8D108\n" 
+"B070BD10B50446FFF7C6FC964820609648A06096482060\n" 
+"9648D0E7083830B589B0F7F7EAF8014602A800F079FB01\n" 
+"4600A800F0D4FC08F0BFFA044608F0BAFA054608F0ADFA\n" 
+"23462A46014600A800F0C9FCA9E0083800B589B0F7F7CE\n" 
+"F8014602A800F05DFB014600A800F0B8FC08F0A6FA0146\n" 
+"00A800F0D4FC012102A800F040FB02A8C046C04609B000\n" 
+"BD0838084608F07FBB0838084608F0A2BB083870470838\n" 
+"084608F077BB08387047083838B50C46154629462046F5\n" 
+"F783FD40B92B4622467721784801B0BDE83040F6F778B8\n" 
+"31BD083880B5084611461A46039B0093029B08F0BBFB01\n" 
+"BD0838002918BFF8F746BEF8F70BBD10B50446FFF74DFC\n" 
+"5E4820605E48A0605E4820605E4857E708380846194608\n" 
+"F074BA0838084611461A4608F050BA083830B5C9B01446\n" 
+"1D46B5F5807F03D99E215C48F5F7AEFF2A4608A9204608\n" 
+"F0A1FAF7F758F8014602A800F0E7FA014600A800F01DFD\n" 
+"08AB2A46214600F01BFD012102A800F0CBFA02A8C046C0\n" 
+"4649B030BD083830B589B00C461546F7F73BF8014602A8\n" 
+"00F0CAFA014600A800F000FD2946204608F0A7FAF19403\n" 
+"90EE820003462A46214600A800F015FD012102A800F0A9\n" 
+"FA02A8C046C04609B030BD083830B589B00C461546F7F7\n" 
+"19F8014602A800F0A8FA014600A800F0DEFC2946204608\n" 
+"F0BCFA03462A46214600A800F00EFDDCE710B50446FFF7\n" 
+"D1FB244820602448A060244820602448DBE6083838B50C\n" 
+"4615460C20F9F71FF940B12B46224624490C2001B0BDE8\n" 
+"3040F9F725B931BD083870B582B00C4615461E462046F9\n" 
+"F76CF90C20F9F708F948B1002C14BF5422462200962B46\n" 
+"17490C20F9F70DF92846F9F7F1F83046BDE87640F9F7E9\n" 
+"B8DC638600F063860080728600BC728600286486003C64\n" 
+"8600F47286001C738600E4648600F8648600407386005C\n" 
+"73860060648600746486004C7286006872860064738600\n" 
+"74738600C473860030B4564982680B6A9A188260012202\n" 
+"744A692AB9026048610FF23100C8610CE001F114038468\n" 
+"9568651B012D03DB13461A68002AF7D10260186048694A\n" 
+"6A8068821A48BF486230BC7047000010B504460DE0A061\n" 
+"0168616100210174A0698160F8F7F4FBA06940688047F8\n" 
+"F7F5FB606928B18168226A8A1A012AEADB616210BD30B4\n" 
+"002300241D4638C018C01438C2608260416030BC704730\n" 
+"B581B00446F8F7DBFB207C2D4DC0B105F1140000E00846\n" 
+"016891B1A1420ED00846016869B1A14209D00846016841\n" 
+"B1A14204D00846016819B1A142EBD121680160E068A060\n" 
+"2046FFF78EFF687820B901B0BDE83040F8F7ADBB01B030\n" 
+"BD10B50446F8F7ADFB217C164809B300212174A168026A\n" 
+"891AA16000F1140100E011460A6892B1A2420ED011460A\n" 
+"686AB1A24209D011460A6842B1A24204D011460A681AB1\n" 
+"A242EBD122680A60416901B9C1614078002804BFBDE810\n" 
+"40F8F77BBB10BD000000001C27880080B50520F7F786FB\n" 
+"2048F5F7A9FF2048006840F002001E490860086820F002\n" 
+"0008601C48802101601B481C4901601C48006820F08070\n" 
+"1A49086040F0807008601548002101601248006820F004\n" 
+"00104908601448802101601220BDE80240F7F741BC10B5\n" 
+"0A48006810F01804FAD01220F7F763FC0648006820F004\n" 
+"0004490860084880210160E00810BD000008007707C400\n" 
+"0B4084E200E0FC000B407347BCBCE8000B4084E100E080\n" 
+"B531B90821104608F06DFA2349486001BD2249C978BDE8\n" 
+"044008F00ABA00B583B01E4900224A6001AA02A908F00E\n" 
+"FBC8B91B480090002304229DF80410029808F0C9F978B9\n" 
+"1548029941700221C1709DF80410817001210170C17802\n" 
+"9808F0E8F903B000BD5A210E48F5F7B7FD03B0F1940320\n" 
+"F2820000BD0A48406818B9084800780028F8D106484068\n" 
+"70470548007828B1034800210170407808F0CDB9704700\n" 
+"0080858900B1F182001474860010B5EFF3108072B60A4C\n" 
+"216841F47F01216080F31088A06E10F4700F04BFA72008\n" 
+"F0E8FA4FF00070C4F81C020020C4F8140210BD20ED00E0\n" 
+"FFE702484FF0C87101607047402C880030B581B004460D\n" 
+"46F8F7AAFA686920436861297C01F0F801082905D1A969\n" 
+"01421CBF2846F8F703FC0448407820B901B0BDE83040F8\n" 
+"F78EBA01B030BD1C2788000CB41CB5044604A801900A46\n" 
+"009401AB00A907487844183008F0C6FA009900220A7000\n" 
+"285CBF0098001B16BC5DF80CFB235EFFFF08B584B00023\n" 
+"029311B90093019302E00090481E019004AB00A9074878\n" 
+"44183008F0A8FA009909B100220A70002858BF029805B0\n" 
+"00BD00BF2751FFFF00F10103810704D010F8011B89B181\n" 
+"07FAD10268B2F10131914311F0803F04BF50F8042FF6E7\n" 
+"10F8011B11B110F8011BFBE7C01A7047000030B5104C05\n" 
+"462078401C81B02070F8F733FAA0684169294205D18561\n" 
+"082101742046F8F70CFAA0684569002141612078401E20\n" 
+"70607808B9F8F718FA284601B030BD00BF1C27880010B5\n" 
+"04461348206061600020A060E0602061FFE720756068FF\n" 
+"F7A0F9204610BD4068FFF7B2B9017D002904BF4068FFF7\n" 
+"34BA0369C26881684068FFF74EBA4068FFF778BA10B504\n" 
+"46FFF7DAFF02482060204610BDF0628600006386002DE9\n" 
+"FC4705461646012491B1012916D002291AD01A2923D01B\n" 
+"292FD02E2933D02F293CD0342949D036297BD0372956D0\n" 
+"86E005F10800A9688968884781E005F10800A968C96888\n" 
+"477BE030463168C96A8847014605F10800AA6812699047\n" 
+"70E030463168496A8847411E8941C943C90F05F10800AA\n" 
+"685269904762E005F10800A968896988475CE030463168\n" 
+"496B8847014605F10800AA68D269904751E03046316849\n" 
+"6A8847410801F0010200F0010105F10800AB681B6A9847\n" 
+"42E030463168496A8847074630463168496A8847024639\n" 
+"4605F10800AB685B6A984731E030463168496B88478246\n" 
+"30463168496B8847804630463168496B88478146304631\n" 
+"68496B8847074630463168496B8847019000974B464246\n" 
+"514605F10800AD68AD6AA8470EE030463168496A884741\n" 
+"1E8941C943C90F05F10800AA68D26A904700E000242046\n" 
+"BDE8F687DFF8F02502604160704710B504466068FFF743\n" 
+"FF0246002106E010B504466068FFF73BFF024601216068\n" 
+"BDE81040FFF725BF70B504460D466068FFF7F19403B0F5\n" 
+"82002EFF06462946326812699047324602210CE070B504\n" 
+"460D466068FFF720FF0646294632689268904732461A21\n" 
+"6068BDE87040FFF705BF10B504466068FFF70FFF02461B\n" 
+"21D2E770B504460D466068FFF706FF0646294632689269\n" 
+"904732462E21E4E7F8B504460D4616466068FFF7F7FE07\n" 
+"46002E14BF0220002040EA050138463A68926890473A46\n" 
+"2F2112E0F8B504460D4616466068FFF7E2FE074629463A\n" 
+"6892689047314638463A68926890473A4634216068BDE8\n" 
+"F840FFF7C2BE2DE9F04104460F4690461D466068FFF7C8\n" 
+"FE06463946326892699047414630463268926990472946\n" 
+"3046326892699047069930463268926990470799304632\n" 
+"6892699047324637212AE070B504460D466068FFF7A6FE\n" 
+"064629463268926890473246362184E7DFF8E4234FE72D\n" 
+"E9F04104460F4690461D466068FFF792FE064639463268\n" 
+"9269904741463046326892699047294630463268926990\n" 
+"47324603216068BDE8F041FFF76DBE70B504460D466068\n" 
+"FFF776FE064629463268926990473246042154E7DFF888\n" 
+"231FE72DE9F04104460D4690461F466068FFF762FE0646\n" 
+"07F08BFCF91C884203D2304607F085FCC71EB9B2304632\n" 
+"6812699047BAB24146304633681B6A9847002130463268\n" 
+"9268904732462946C3E713460A461921D5E72DE9F04104\n" 
+"4616460125052921D0062937D0072904D030294AD03129\n" 
+"59D069E030463168496A8847471EBF41FF433046316849\n" 
+"6B8847804630463168C96A884703464246F90F04F10800\n" 
+"A4682469A04751E030463168496B8847074630463168C9\n" 
+"6A88478046414630463268D26B904703464246394604F1\n" 
+"0800A468A468A04739E030463168496B88470746304631\n" 
+"68496B8847804630463168496B884703464246394604F1\n" 
+"0800A468E468A04722E030463168496B88470746304631\n" 
+"68496B88470246394604F10800A3685B69984711E03046\n" 
+"3168496B8847074630463168496B88470246394604F108\n" 
+"00A3689B69984700E000252846BDE8F081DFF8342274E6\n" 
+"2DE9F0410446884615461E466068FFF7B7FD074641463A\n" 
+"6892699047294638463A68126990472A46314638463B68\n" 
+"1B6A98473A46082122E72DE9F04104460F4690461D4660\n" 
+"68FFF79BFD064639463268926990474146304632689269\n" 
+"9047294630463268926990473246322107E72DE9F04104\n" 
+"460F4690461D466068FFF780FD06463946326892699047\n" 
+"4146304632689269904729463046326892689047324633\n" 
+"21ECE62DE9F041044615460126092902D0F1940340F982\n" 
+"000A2918D029E028462968496A8847074628462968C96A\n" 
+"88478046414628462A68D26B904703464246394604F108\n" 
+"00A468A468A04712E028462968C96A8847074639462846\n" 
+"2A68D26B90470246394604F10800A368DB68984700E000\n" 
+"263046BDE8F081614AFFF7E8BD2DE9F041044688461546\n" 
+"1E466068FFF72AFD074641463A6892689047294638463A\n" 
+"68126990472A46314638463B681B6A98473A46092195E6\n" 
+"F8B504460D4616466068FFF710FD074629463A68126990\n" 
+"472A46314638463B681B6A98473A460A21FFF72BBE2DE9\n" 
+"F843044616464FF001081C2904D044D31E2930D00ED340\n" 
+"E030463168496A8847411E8941C943C90F04F10800A268\n" 
+"9268904734E030463168496A8847471EBF41FF43304631\n" 
+"68496A8847451EAD41ED4330463168C96A884781463046\n" 
+"3168C96A884700904B46EA0FF90F04F10800A468E468A0\n" 
+"4713E030463168C96A88470746394630463268D26B9047\n" 
+"0246394604F10800A3681B69984701E04FF000084046BD\n" 
+"E8F2831E4AFFF760BD486386006063860080638600F8B5\n" 
+"04460D4616466068FFF79EFC074629463A68126990472A\n" 
+"46314638463B681B6A98473A461F21FFF7B9BDF8B50546\n" 
+"16460124202911D130463168C96A884707463946304632\n" 
+"68D26B90470246394605F10800AB689B68984700E00024\n" 
+"2046F2BD00009C638600B4638600DFF8A420FFF720BD00\n" 
+"00F8B504460D4616466068FFF763FC074629463A681269\n" 
+"90472A46314638463B681B6A98473A462121FFF77EBD00\n" 
+"00106386002DE9F0410446164601252A2902D02B2911D0\n" 
+"28E030463168496B8847074630463168C96A8847024639\n" 
+"4604F10800A3681B68984718E030463168496A88470746\n" 
+"30463168496A8847804630463168496B88470346424607\n" 
+"F0010104F10800A4686468A04700E00025FFF755BEC863\n" 
+"860030B581B00400194D08BFAC68F7F70AFE207C401C20\n" 
+"74A868844208D1012068712C78601C28702846F7F7DFFD\n" 
+"2C70687820B901B0BDE83040F7F7EEBD01B030BD10B504\n" 
+"46F7F7EEFD207C401E207404D12046BDE81040F7F789BF\n" 
+"04484078002804BFBDE81040F7F7D7BD10BD1C27880038\n" 
+"B504460D46AC4205D0206820188047241DAC42F9D131BD\n" 
+"F8B504460D461646C046C0461948016809B91949016007\n" 
+"6818498F422EBF002707F10C010160C046C0460FB90120\n" 
+"F2BD3D607C60BE600020F2BD0020F8B50D4C25682E0000\n" 
+"D1F1BD0B4F0AE0064605460C3E7168080004D000207060\n" 
+"306830B1884720688542F1D1BE42F1D1F19403D0FC8200\n" 
+"F1BD8847F7E70000208089009C8889004C8A890080B5C0\n" 
+"46C046024A11001820ABBEFBE7260002007047000010B5\n" 
+"08F08EFCFBF70AF8DFF85C21C2E90001DFF84C01046827\n" 
+"E0E068C0F3800010BBE06840F00400E060DFF840010068\n" 
+"28B940F27F11DFF83801F5F729F89CB1A068002810D4E0\n" 
+"6840F00100E060A068F8F730FDA068F8F76BFDD4E90623\n" 
+"002110185941C4E906016468002CD5D1002010BD2DE970\n" 
+"4382B008F053FCFAF7CFFFDFF8E420D2E90045041B61EB\n" 
+"0505DFF8D000066817E0D6E906890023B8EB010269EB03\n" 
+"03C6E90623F06820F00600F0600FF2850000900123DFF8\n" 
+"A8000268B068F8F780FC7668A6B3F068C0F380000028F8\n" 
+"D0D6E90601A94205D828BFA04202D20120002101E0001B\n" 
+"A941C6E906011F48006820B94FF4A7711D48F4F7C9FF00\n" 
+"2EE0D0B0680028DDD4307BC00704D4D6E90401C6E90601\n" 
+"03E0F06840084000F060D6E9060101292CBF4FF0FF31D6\n" 
+"E90613B1E70020BDE876830949096800E0496861B18A68\n" 
+"8242FAD10220CA6860F30202CA6008494FF00040FFF724\n" 
+"BA70470000C0798900F42C8800604F8800BC798900606F\n" 
+"8600CC798900002208F0DBBB000008B400B584B005AB03\n" 
+"930023029311B90093019302E00090481E019003AB00A9\n" 
+"074878441A3007F0F1FC009909B100220A70002858BF02\n" 
+"9804B05DF808FB00BFB745FFFF10B50446002020606060\n" 
+"41F250200021015541F25120015504F590503830FEF72B\n" 
+"FE204610BD10B5044600F067F841F25020005D18B104F1\n" 
+"080008F0C9FB04F590503830FEF770FE204610BD10B58C\n" 
+"B004462068002849D140F2DD3004904FF40060079004F1\n" 
+"380008904FF40060099004F638000A901F20049960F3D5\n" 
+"3104914FF461200590002006900B9004A940F20220FBF7\n" 
+"06F8206068B30120FEF7CFFA0120F5F757F81E20F7F795\n" 
+"FE002240F202212068FBF730F841F25020005DA8B941F2\n" 
+"5020012101550394022002904FF40070019004F5805038\n" 
+"3000900FF2CD034622504904F10800FEF746FE206810B1\n" 
+"01200CB010BD00200CB010BD10B504462068E0B10020FE\n" 
+"F79AFA0120F5F725F841F251200121015504F590503830\n" 
+"FEF7C5FD2068FAF7D9FF0020206004F590503830FEF7DC\n" 
+"FD41F251200021015510BD10B5036863B11846FBF74BF8\n" 
+"0446012C04DA22467D213448F4F702FF204610BD002010\n" 
+"BDF8B504460E4615461F462068D8B141F25120005DB8B9\n" 
+"04F590503830FEF794FD676041F24820065141F24C2005\n" 
+"5104F590503830FEF7A9FD04F10801F194036000830001\n" 
+"20BDE8F440FFF71BB9F1BD00BF00BF10B504461CE01D49\n" 
+"042008F04FFB206888B1C82341F24C20025941F2482001\n" 
+"592068FAF7DCFF012813DB014641F24820005962689047\n" 
+"04F590503830FEF77FFD012008F059FB04F590503830FE\n" 
+"F756FDDDE741F25121095D21B10949062008F025FBE8E7\n" 
+"0028CED00246BC210248F4F79FFECCE7906286009C6286\n" 
+"00D0628600B062860038B504460D46062C04D340F2B711\n" 
+"5948F4F742FE082D04D34FF4DC715548F4F73BFE042C32\n" 
+"BF54485448241F0168012205EBC4039A409143016031BD\n" 
+"2DE9F04704460E469046B4F5000F28BFA64204D24FF4F7\n" 
+"714748F4F71FFE04F57C50FF30800B4FEA803AF01C4FEA\n" 
+"9039AAF50000440CC0F38236062C78D038BF082E0CD34F\n" 
+"F4FE713B48F4F707FE06E0761C082E04BF0026641C0AF5\n" 
+"804ABAEB893F65D2B8F1000F3AD02546062D04D34FF4D0\n" 
+"713048F4F7F1FD082E04D340F2A1112D48F4F7EAFD042D\n" 
+"32BF2B482C482D1F0168012206EBC5039A40114301600A\n" 
+"252846451E00283CD02746062F04D34FF4EA712048F4F7\n" 
+"D1FD082E04D340F2D5111D48F4F7CAFD042F32BF1D481E\n" 
+"483F1F006806EBC701C840C007E1D521E031462046FFF7\n" 
+"6EFF0A252846451EC8B12746062F04D34FF4EA710F48F4\n" 
+"F7AEFD082E04D340F2D5110B48F4F7A7FD042F32BF0C48\n" 
+"0C483F1F006806EBC701C840C007E2D4002D93D14FF0FF\n" 
+"30BDE8F0870020BDE8F0870000B86686001CF00B4020F0\n" 
+"0B4024F00B4028F00B4070B400240025264670C070C018\n" 
+"384360C260818270BC704708F08EBA80B501F0C9FFD0F8\n" 
+"800000F0D1FF0348007802BD0149087070470000828889\n" 
+"0010B5DFF81C474FF48E720021204608F07EFA204610BD\n" 
+"DFF80807704710B5FFF7EFFF044600231A461146084600\n" 
+"F06AFAC046C04601F0D5FF204600F019F8C046C0462046\n" 
+"00F0D5F9204600F015F8204600F016F800F098F9002060\n" 
+"72A072E0722073012060730020E075A073012010BD0021\n" 
+"C171017225E00121417108467047012181710846704738\n" 
+"B50446012502F05BF8012804D12846E0700020A0700AE0\n" 
+"022804D10020E0702846A07003E00020E070A070054628\n" 
+"4632BD80B502F04EF8012002BD10B504460120C0460121\n" 
+"217010BD70B504460025E679E171FFF7F2FF002807D020\n" 
+"46FFF7C7FF2046FFF7C8FF012503E0E6712046FFF7E4FF\n" 
+"284670BD0EB470B5C1B0054600A84FF48071F9F7D3FEFF\n" 
+"F780FF044645AB2A464FF4807100A8FEF79BFF00A8FEF7\n" 
+"B6FF451C00A82818002100F8011CF19403F0038300DFF8\n" 
+"E8653078401C3070F7F701FA7078401C7070207E2818FF\n" 
+"2810DA207E002803D0207E00190A2101762A4600A9207E\n" 
+"0019193004F0E4FA207E281820767078401E7070C0B200\n" 
+"2801D1F7F7DBF9F7F720FB41B070BC5DF810FB2DE9F843\n" 
+"05460E4617464FF00208F7F7D2F9DFF87C456078401C60\n" 
+"709DF80000401E8DF8000017F8019B00AB4A4639463046\n" 
+"02F003F8002809D06078401E6070C0B2002801D1F7F7B0\n" 
+"F9012018E05FFA88F8424629460FF24850FFF788FF4046\n" 
+"A0F101080028E0D16078401E6070C0B2002801D1F7F799\n" 
+"F92846C046C0460020BDE8F2832DE9F04704460D461646\n" 
+"1F46DFF8DC84089888F80000F7F78CF9DFF8F09499F801\n" 
+"00401C89F801004FF0020A434632463946284601F0F5FF\n" 
+"00280BD099F80100401E89F80100C0B2002801D1F7F76B\n" 
+"F901201AE05FFA8AFA524621460FF2CC40FFF743FF5046\n" 
+"A0F1010A0028DED199F80100401E89F80100C0B2002801\n" 
+"D1F7F752F92046C046C0460020BDE8F0872DE9F8430546\n" 
+"0E46174698464FF00209F7F748F9DFF868446078401C60\n" 
+"7042463946304601F0CDFF002809D06078401E6070C0B2\n" 
+"002801D1F7F72EF9012015E05FFA89F94A4629460FF244\n" 
+"40FFF706FF4846A0F101090028E1D16078401E6070C0B2\n" 
+"002801D1F7F717F90020BDE8F2832DE9F04706460F4690\n" 
+"4699464FF0020AF7F710F9DFF8F8536878401C6870089C\n" 
+"234642464946384601F0B5FF002809D06878401E6870C0\n" 
+"B2002801D1F7F7F4F8012015E05FFA8AFA524631460FF2\n" 
+"DC30FFF7CCFE5046A0F1010A0028E0D16878401E6870C0\n" 
+"B2002801D1F7F7DDF80020BDE8F08708F021BDF8B50446\n" 
+"02270025DFF890630DE039464F1EC9B200290AD1002804\n" 
+"D120690121A9408843206102276D1C172D10DA56F82500\n" 
+"006E006880470128E8D121690122AA401143216156F825\n" 
+"1001220A77E3E72069032803D0022801D0012802D140F4\n" 
+"80502061F1BD01F0DFBE81B00022ADF80220ADF80020C0\n" 
+"79042808D0062809D007280AD009280BD00A280CD00EE0\n" 
+"4FF448700DE04FF4C8600AE040F6282007E04FF47A6004\n" 
+"E041F2883001E040F6B830ADF802200DE0BDF80020521C\n" 
+"ADF80020BDF800208242F6DBBDF80220521CADF80220BD\n" 
+"F802208A4203D20022ADF80020EEE701B07047417230B5\n" 
+"97B002F026F90446FFF7CAFD054600A85C21F9F716FD00\n" 
+"20ADF858008DF801000DF101000A21417000218170C170\n" 
+"697A00290DD0002C18D000218DF8001005218DF801100B\n" 
+"21417000A808F062FE0CE0002CF19403800783000AD001\n" 
+"218DF8001005218DF801100B21417000A808F054FE17B0\n" 
+"30BD01F0F9BD01210846FAE702210120F7E708F07FBF10\n" 
+"B50446FFF78BFD447510BD2DE9F04782B00C4615462F46\n" 
+"264680464FF47A714FF03C0C4FF4616918FB09F216FB0C\n" 
+"22BA1801FB0232DFF8D4E19EF900A01AFB09F99EF901A0\n" 
+"1AFB0C9C9EF902904CFA89FCBEF9039001FB0C919EF808\n" 
+"C0BCF1000F22D144EA00012943194302D001218EF80810\n" 
+"8EF80000B8F1000F04D59EF8000018308EF800008EF801\n" 
+"408EF80250AEF8033000933B4632469EF900100FF2D810\n" 
+"FFF7B1FDBDE8F38791420DD3A1EB020CACF2D17CDFF87C\n" 
+"91CC45DAD30FF2941002B0BDE8F0479EE5D3D2A2EB010C\n" 
+"ACF2D179DFF85CA1D145CBD363460FF2841002B0BDE8F0\n" 
+"478EE510B504002FD002F024F94549CA68002A00D0841A\n" 
+"B1F80320A218A1F8032012B2B2F57A7F06DBA2F57A72A1\n" 
+"F803208A78521C8A7091F902203C2A04DB3C3A8A704A78\n" 
+"521C4A7091F901203C2A04DB3C3A4A700A78521C0A7091\n" 
+"F90020182A01DB00220A70C86010BD2E490522F9F7F3BC\n" 
+"00000FB410B52DED028B2A4C104608F0D4FE294A2A4B08\n" 
+"F0E8FE206161619FED288B049808F0C9FE53EC182B08F0\n" 
+"DDFE20606160059808F0C0FE53EC182B08F0D4FEA060E1\n" 
+"609DF81C00207604F118009DF81D1041709DF81E108170\n" 
+"9DF81F10C1709DF820100171BDF8210000EE100AB8EE40\n" 
+"0A10EE100A08F089FF134A174B08F0B3FE08F0ABFFC4F8\n" 
+"1D00BDF82300A4F821009DF8250084F82300BDEC028B10\n" 
+"BC5DF814FB03492422F9F79CBC5F888900EC738800FC73\n" 
+"8800FCA9F1D24D62503F8DEDB5A0F7C6B03E3BDF4F8DD0\n" 
+"7288001C278800EC0388005F4C2605976EA23F49574520\n" 
+"256420256400000049524520256420256400000041542D\n" 
+"5365745453312025642025640041542D53657454533220\n" 
+"2564202564202564000041542D536574542025643A2564\n" 
+"3A25642E25640080B501F0F7FBDFF824180860012002BD\n" 
+"80B501F0AEFDDFF81818D1E90023801A02BDF8B50446A0\n" 
+"69E1684518B5F90000B5F90270B5F90460B4F85810411A\n" 
+"2980B4F85A10791A6980B4F85C10711AA980B5F90010C9\n" 
+"13B1EBE03F13D0B4F95810C913B1EBE03F0DD00FF2D870\n" 
+"FFF786FCB5F90000012802DBDFF8B80701E047F6FF7028\n" 
+"80B5F90210C913B1EBE73F13D0B4F95A10C913B1EBE73F\n" 
+"0DD00FF2B070FFF76CFCB5F90200012802DBDFF8840701\n" 
+"E047F6FF706880B5F90410C913B1EBE63F13D0B4F95C10\n" 
+"C913B1EBE63F0DD00FF28870F19403100B8300FFF752FC\n" 
+"B5F90400012802DBDFF8500701E047F6FF70A88094F908\n" 
+"00002804D1002000E0401C0328FCDBF1BD00000000FEB5\n" 
+"044600A800210A460B460EC0A069E1684518174694F908\n" 
+"60052E80F09A80012E02D12046FFF77AFF3046012802D9\n" 
+"C01E40F08A80002E01D14FF6FF77DFF8E8060068301890\n" 
+"F88400401E06285ED8DFE800F004101D2936424F00B5F9\n" 
+"0200009000A8B5F90010791A4160B5F90410816056E0B5\n" 
+"F90000381A009000A8B5F90210791A4160B5F904108160\n" 
+"49E0B5F90200381A009000A8B5F900104160B5F9041081\n" 
+"603DE0B5F90000381A009000A8B5F902104160B5F90410\n" 
+"791A816030E0B5F90200009000A8B5F900104160B5F904\n" 
+"10791A816024E0B5F90000009000A8B5F90210791A4160\n" 
+"B5F90410791A816017E0B5F90200381A009000A8B5F900\n" 
+"10791A4160B5F90410791A816009E0B5F90000009000A8\n" 
+"B5F902104160B5F904108160012E0AD1002106E050F821\n" 
+"2002F30F0240F82120491C0329F6DB0098288000A84168\n" 
+"69808068A880002E02D12046FFF7E5FE0120FEBD70B52D\n" 
+"ED028B82B08169C2688A1890F9081008460A2800F29C80\n" 
+"DFE800F0062B779A9A659A9A9A849200B2F90240B2F904\n" 
+"50DFF89C0500689FEDBD0AB2F9001000EE901AF8EEE00A\n" 
+"60EE800AC0ED000A00EE904AF8EEE00A60EE800AC0ED01\n" 
+"0A00EE905AF8EEE00A20EE800A001D80ED010A72E0B2F9\n" 
+"0240B2F90450DFF850050068061D9FEDAB8BB2F9000000\n" 
+"EE100AB8EEC00A10EE100A08F0B2FD53EC182B08F0DCFC\n" 
+"08F0D4FDB06000EE104AB8EEC00A10EE100A08F0A3FD53\n" 
+"EC182B08F0CDFC08F0C5FDF06000EE105AB8EEC00A10EE\n" 
+"100A08F094FD53EC182B08F0BEFC08F0B6FD306138E000\n" 
+"200090106800909DED000AB8EEC00ADFEDC70A20EE200A\n" 
+"DFF8CC04006880ED0C0A26E0DFF8C00400681188A0F85A\n" 
+"1000F25A00518841809188818019E0DFF8A804006800F2\n" 
+"5A001188C1805188018191884181D18881810BE0DFF88C\n" 
+"04006892F9001080F8681003E00FF2B840FFF7E3FA0120\n" 
+"02B0BDEC028B70BD70B50D46DFF8701451F82040002620\n" 
+"7F002801D1304670BD607A002803D0206E806880470646\n" 
+"2846216EC96988470546002E02D0206E40688047284670\n" 
+"BD0120704770B582B01C4600F11005002A0ED4AB7C0069\n" 
+"92FBF1F65E43864202DAAA63EA6304E090FBF3F04843A8\n" 
+"63E863009413460A46E96B0FF23C40FFF79FFA002C02D4\n" 
+"A00700D52C7473BD002903D4002181644161816170472D\n" 
+"E9F34F99B014461D460020F19403A00E8300ADF860008D\n" 
+"F809000DF109060A2070700020B070F0709DF96470172F\n" 
+"58D2B846DFF8B00350F828904FF0020A99F81C0000284D\n" 
+"D01A98C82802D1B4201A9003E0422801D13C201A909DF9\n" 
+"90B0019400951A9B5A4641460FF2D430FFF75DFABBF100\n" 
+"0F09D45FEACB7006D55B462A461A994846FFF792FF54E0\n" 
+"5B462A461A994846FFF78DFFA7F10C00062806D29DF864\n" 
+"101AA8D9F860209269904799F8090000281FD1214649B2\n" 
+"4846D9F864201268904700280FD0D9F860004068804700\n" 
+"2805D15146A1F1010AC9B20029F3D1002801D1002026E0\n" 
+"214649B24846D9F864205268904799F80900401C89F809\n" 
+"00224652B21A994846D9F864301B69984700F0E8F8B8F1\n" 
+"160F0CD1002C0AD100208DF808002E208DF809000A2070\n" 
+"7002A808F040FA01201BB0BDE8F08FFDF69C3A89AD84FA\n" 
+"0A74513F2DE9F04397B007460E46144619460020ADF858\n" 
+"008DF801000DF101050A2068700020A870E870172F08D2\n" 
+"9D4850F827804FF0020998F81C00002801D100204AE0C8\n" 
+"2E01D1B42602E0422E00D13C264046FFF72FFF98F80900\n" 
+"01281BD1214649B24046D8F864209268904700280BD0D8\n" 
+"F8600080688047002805D14846A0F10109C0B20028F3D1\n" 
+"214649B24046D8F86420D268904798F80900002802D040\n" 
+"1E88F80900224652B231464046D8F864305B69984700F0\n" 
+"73F8162F0CD1002C0AD101208DF800002E208DF801000A\n" 
+"20687000A808F0CCF9012017B0BDE8F0830AD7233C2DE9\n" 
+"F84304460F4615461A462646172E22D26B4850F8248098\n" 
+"F81C0000281BD0C82F01D1B42702E0422F00D13C279DF9\n" 
+"2030002B07D4D80705D53946404601B0BDE8F0439FE605\n" 
+"EB450008EB8009D9F838008068002801D500202DE03946\n" 
+"4046FFF793FED9F838008068874217D0012F15DB0FF2BC\n" 
+"10FFF745F92A4652B2D9F8380081684046D8F864305B69\n" 
+"98472A4652B239464046D8F864301B699847A6F10C0006\n" 
+"2805D23946204608F0E1FE012002E000F003F80120BDE8\n" 
+"F28370B56FF0004634463F48016804E08A68A24200DA14\n" 
+"4609688142F8D13B4D2878401C2870F6F734FB6878401C\n" 
+"6870B44200D10024304E3068C467D0F8802021468A4212\n" 
+"D0002901D0002A0BD1C0F880100FF23010FFF7F8F83068\n" 
+"D0F88000FFF7D0F802E00120FFF769F86878401E6870C0\n" 
+"B2002801D1F6F705FBF6F74AFC012070BD38B50546214C\n" 
+"2078401C2070F6F7FFFA6078401C607029460FF2FC00FF\n" 
+"F7D3F815480068C0F880501748016805E08A68B2FBF5F2\n" 
+"6A43CA6009688142F7D1F19403301283006078401E6070\n" 
+"C0B2002801D1F6F7DAFABDE83140F6F71DBC0B490A6808\n" 
+"E01369012B01DAD368136113691B1A136112688A42F4D1\n" 
+"70470000CC728800803088000080FFFFEC038800600488\n" 
+"001C27880058206973206F76657200000059206973206F\n" 
+"7665720000005A206973206F7665720000005543535428\n" 
+"2564294E53000062617463682072617465203D20256420\n" 
+"25642025642025640000000042617463684F7074202564\n" 
+"202564202564202564202564006368616E676520726174\n" 
+"653200000000675F707453682D3E6354696D6572203D20\n" 
+"2564006374696D6572203D202564004FF0FF31801E0128\n" 
+"17D9C01E042814D9801F052811D908380FD0801E04280C\n" 
+"D9401F08D0401E0F2807D9113807D0401E012802D904E0\n" 
+"072102E0012100E003210846704780B501460020C91E1B\n" 
+"D0C91E19D0C91E17D0C91E012914D90D39032911D9091F\n" 
+"08D0491E0DD0C91F03290AD9C91F012907D902BD1D210F\n" 
+"F21000FFF711F8012002BD012002BD000050443A204C4C\n" 
+"53202564000038B504464FF0FF3507F05AFF2E2C36D8DF\n" 
+"E804F03435323434323434323235341A32181834353532\n" 
+"353434341A3432343234341D2024282B2E323232323230\n" 
+"3534343200B4251AE04FF47A7517E0D0F8D45514E000F2\n" 
+"D450056B10E000F2D450056E0CE0D0F8645609E0D0F894\n" 
+"5606E00A2504E0052502E0142500E03C25284632BD38B5\n" 
+"DFF8C04A00F0FCFEE06208F04BFE07F015FF2063002512\n" 
+"E0DFF8AC1A8161DFF8AC1AC161DFF8A82A0262DFF8A82A\n" 
+"4262DFF8A42A8262C162C06A80476D1C2F2D80F20E8121\n" 
+"6B05EB4500000100224254401842704FF0FF3242600022\n" 
+"027242614272032D04D18C31DFF8702A0A63E3E7022D04\n" 
+"D1DFF8682AC1F88C20DCE7002DCAD0042D04D18C31DFF8\n" 
+"582A0A66D3E7052D04D1DFF8502AC1F81C21CCE7062D05\n" 
+"D101F58E71DFF8442A0A63C4E7072D05D101F58E71DFF8\n" 
+"382A0A66BCE7082D04D1DFF8302AC1F8AC21B5E7092D04\n" 
+"D1DFF8242AC1F8DC21AEE70A2D9CD00B2D9AD0012D98D0\n" 
+"0C2D04D1DFF8102AC1F86C22A1E70D2D05D101F51B71DF\n" 
+"F8002A0A6399E70E2D05D101F51B71DFF8F4290A6691E7\n" 
+"0F2D04D1DFF8EC29C1F8FC228AE7102D04D1DFF8E429C1\n" 
+"F82C2383E7122D3FF471AF142D3FF46EAF132D3FF46BAF\n" 
+"162D3FF468AF152D04D1DFF8C029C1F81C2470E7172D04\n" 
+"D1DFF8B829C1F87C2469E7182D04D1DFF8AC29C1F8AC24\n" 
+"62E71A2D05D101F2AC41DFF8A0290A665AE7192D05D101\n" 
+"F2AC41DFF894290A63F19403C015830052E71F2D04D1DF\n" 
+"F88C29C1F8FC254BE7202D05D101F2FC51DFF87C290A63\n" 
+"43E7212D05D101F2FC51DFF870290A663BE7222D04D1DF\n" 
+"F86829C1F88C2634E7232D04D1DFF86029C1F8BC262DE7\n" 
+"1B2D04D1DFF85429C1F83C2526E71C2D05D101F23C51DF\n" 
+"F848290A631EE71D2D05D101F23C51DFF83C290A6616E7\n" 
+"272D04D1DFF83429C1F87C270FE7292D04D1DFF82829C1\n" 
+"F8DC2708E72A2D04D1DFF82029C1F80C2801E72C2D04D1\n" 
+"DFF81429C1F86C28FAE62E2D04D1DFF8602AC1F8CC28F3\n" 
+"E62D2D7FF4E1AEDFF85C2AC1F89C28EBE6012032BD0CB4\n" 
+"2DE9F04794B006460F46012435461A2D49D02C2D47D030\n" 
+"2010FB05F8DFF840980B2F20D1D9F8300008EB000A9AF8\n" 
+"0100002818D03046FFF722FE012813DB3046FFF71DFE9A\n" 
+"F8011081420CDB304600F0B2F90446D9F8300040440021\n" 
+"41700FF6F810FEF75EFED9F8300018F80010002950D108\n" 
+"EB00014A78002A4BD1002208F80020104648701CA983B0\n" 
+"68465822F8F7F4FD0EBC304600F082F8022835D0032838\n" 
+"D1032436E00B2F16D1FFF7E8FD012812DB3046FFF7E3FD\n" 
+"05EB4501DFF8A027126B02EB01114978814205DB0FF694\n" 
+"10FEF727FE02205DE01A2D04D13846C0B208F0BDFD05E0\n" 
+"2C2D03D13846C0B20AF040F91CA983B068465822F8F7BE\n" 
+"FD0EBC304600F04CF8022801D1022042E0032800D10324\n" 
+"0A2F0CD1DFF84497D9F83010302010FB05F818F8010040\n" 
+"1C08F8010016E00B2F14D1DFF82497032D07D1D9F83000\n" 
+"90F89100002801D10BF0A5FE302010FB05F8D9F8300040\n" 
+"444178491C4170DFF8FC96D9F83010D9F82C20302010FB\n" 
+"05F8D2E91C67CDE90267D06E009008EB0100437818F801\n" 
+"2029460FF6E000FEF7C8FD204614B0BDE8F0075DF80CFB\n" 
+"0EB42DE9F04193B00546012400EB40010E01DFF8AC761A\n" 
+"280BD02C2809D0C0B2FFF7AAFD396B7118486000200872\n" 
+"486111E0386B315C00290DD130184078002809D12846C0\n" 
+"B2FFF797FD396B7118486000200872486119A984B06846\n" 
+"5822F8F73DFD0FBCD7F830C06644B669B047022801D102\n" 
+"2011E0032801D103240CE0D7F82C80D8E91C6720460021\n" 
+"2A460CF03AFC30433943C8E91C01204613B0BDE8F0015D\n" 
+"F810FB2DE9FF4704460D460126274607EB47004FEA0018\n" 
+"DFF80496D9F830001A2F59D02C2F57D008EB000A9AF801\n" 
+"00022814DB2046FFF703FD01280FDB2046FFF7FEFC9AF8\n" 
+"0110814208DB2046FFF7F7FC8AF801000FF2EC70FEF743\n" 
+"FDD9F8300018F80010002904D108EB00025278002A69D0\n" 
+"2A460A2A09D10029F194035019830003D0491E08F80010\n" 
+"17E0002108F8001013E00B2A11D108EB00014A78002A02\n" 
+"D0521E4A7001E000224A70032F05D190F89100002801D1\n" 
+"0BF0E1FDD9F8300018F80010002942D14044407800283E\n" 
+"D1204600F054F8032839D1032637E018F80010002904D1\n" 
+"08EB00025278002A2ED02A460A2A09D1002903D0491E08\n" 
+"F8001012E0002108F800100EE00B2A0CD108EB000A9AF8\n" 
+"0100002803D0401E8AF8010002E000208AF801001A2F04\n" 
+"D12846C0B208F079FC05E02C2F03D12846C0B209F0FCFF\n" 
+"204600F01BF8032800D10326D9F83000D9F82C10D1E91C\n" 
+"23CDE90223C96E009108EB00014B7818F8002039460FF2\n" 
+"E060FEF7BAFC304604B0BDE8F0872DE9F04107460126B8\n" 
+"4608EB48000501DFF89444206B2818C0698047032800D1\n" 
+"0326B8F12C0F07D1206B295C00290AD128184078002806\n" 
+"D1384640B200F07FF9032800D10326206B295C002917D1\n" 
+"28184178002913D14FF0FF314160002101724161D4F82C\n" 
+"80D8E91C4501203A460CF03DFB24EA000025EA0101C8E9\n" 
+"1C013046BDE8F08138B5044604EB44000001DFF8185429\n" 
+"6B002242544018114641702046FFF7AEFFE86AD0E91C23\n" 
+"21460FF23860FEF75CFC012032BD2DE9F041B6B004460E\n" 
+"46B6B201208DF86400DFF8DC531AA8E96A6C22F8F7F6FB\n" 
+"17951AA984B068466C22F8F7EFFB0FBC00F026FA00270B\n" 
+"E0032803D1189703208DF86400286B4044002101727F1C\n" 
+"7FB22F2F2ADAEA6AD2E91C013A460CF0FCFA00F0010011\n" 
+"F0000101D10028EED007EB47004FEA0018286B40444168\n" 
+"0029E5D4027A521C0272D2B2724389B28A42DDDB006A80\n" 
+"470228CFD1189702208DF86400DDE91801C4E9000103E0\n" 
+"DDE91801C4E9000136B0BDE8F08100210A3842F2077290\n" 
+"4200D20121084670472DE9F04383B00446002001900422\n" 
+"E11C01A802F006FF6178DFF80C63376B302515FB017040\n" 
+"68019A904204D10FF24850FEF7DBFB68E01046FFF7D9FF\n" 
+"002809D16178019B15FB017042680FF23450FEF7CCFB59\n" 
+"E0DFF8C4743868D0F8008025E090F908906078316B15FB\n" 
+"0010406920FA09F0C00717D54FF0FF3000900346012201\n" 
+"994846FFF71FF940B200280BD1617801980090306B15FB\n" 
+"010043684A460FF2F440FEF7A2FB4046D0F80080B842D7\n" 
+"D13868D0F800801FE090F90890486920FA09F0C00715D5\n" 
+"4FF0FF33012249684846FFF799F940B200280BD1617801\n" 
+"980090306B15FB010043684A460FF2C040FEF77CFB4046\n" 
+"D0F800806178326B15FB0121B842D9D101984860BDE8F7\n" 
+"832DE9F8438146F19403E01C830000242546834F21E005\n" 
+"EB45000601386B06EB0008002088F80900FA6AD2E91C01\n" 
+"2A460CF02BFA00F0010011F0000101D100280AD04846D8\n" 
+"F824108847002804D0386B3018012141720C466D1C2F2D\n" 
+"DBDB2046BDE8F2836F48C16AD1E91C23002B01D1002A0D\n" 
+"D0002107E002EB4203026B02EB031200235372491C49B2\n" 
+"0A462F2AF3DB704700B502466248C36AD3E91C010CF0F4\n" 
+"F900F0010011F0000101D1002801D0012000BD084600BD\n" 
+"2DE9F0478146012409EB49000501564E306B2818406900\n" 
+"2829D0DFF840733868D0F8008003E003244046D0F80080\n" 
+"B8421DD090F908A0306B28184169012202FA0AF2114021\n" 
+"FA0AF149B20129ECD14FF0FF33012241685046FFF7F7F8\n" 
+"0028E2D0524649460FF2A430FEF7E1FADCE72046BDE8F0\n" 
+"8710B598B004465A22002100A806F0DCFC0020ADF85800\n" 
+"8DF801000DF101000A21417000218170C1700846ADF858\n" 
+"00600729D50520FFF797FF002808D004208DF800000520\n" 
+"8DF8010000A807F0FAFA0220FFF789FF002808D004208D\n" 
+"F8000002208DF8010000A807F0ECFA0320FFF77BFF0028\n" 
+"08D004208DF8000003208DF8010000A807F0DEFAE00622\n" 
+"D50EF060FC0446E00711D50820FFF766FF00280CD00320\n" 
+"8DF8000008208DF8010000A807F0C9FA0FF2F020FEF781\n" 
+"FAA00703D50FF2F020FEF77BFA600703D50FF2F420FEF7\n" 
+"75FA18B010BD02460020092A00D0704780B5012902D10E\n" 
+"F0EFFD012002BD02492C22F8F70FBA000020748800B195\n" 
+"8300AD958300B9958300BD958300C19583003BCF830095\n" 
+"968400CD21830055948400B5AE8600D58C86004F928400\n" 
+"130A8400B14A840065A08600358F8600C1928600079B86\n" 
+"009D91860089A486004DB5860095AE830061A98600EBDC\n" 
+"84002B948600D3958600FF9A840063DB8400090F84003F\n" 
+"1684007F13840025AD8600599E86007D9086003BC58300\n" 
+"0FB41B980099016001994160029981600399C160049901\n" 
+"6105994161BDF85A100183BDF85C104183BDF85E108183\n" 
+"0C990162139941621499816204B0704700004178122904\n" 
+"D1401C017900200BF06FBB132904D1401C417901200BF0\n" 
+"68BB142904D1401C817902200BF061BB152903D1401C00\n" 
+"790BF080BB172965D1411CCA78032A08D01B2A12D01C2A\n" 
+"31D01D2A19D02C2A3DD0704790F85610012902D1401D0B\n" 
+"F082BF02294FD1401D0BF07DBF087A012802D188880EF0\n" 
+"93BF022844D1C8880EF08CBF4A7B012A02D188880FF0D2\n" 
+"B9022A02D1C8880FF0C1B9042A03D1B0F811000FF0C9B9\n" 
+"032A2ED1C889F19403702083000FF0D0B9C879012802D1\n" 
+"08790FF0B9BB022802D148790FF0BEBB05281ED188790F\n" 
+"F099BB8A7B012A02D1087A0AF0C4BA022A02D1008A0AF0\n" 
+"ABBA032A02D1408A0AF0B0BA042A03D1123040880AF0D2\n" 
+"BA052A03D1123080880AF0BEBA70470749086070470000\n" 
+"0000CDA186000348006870470000ABB08600C40D880054\n" 
+"748800414C204558000000414C2045582D415400000000\n" 
+"414C256420256420256420256420256C6C750000524C20\n" 
+"4558000000524C256420256420256420256420256C6C75\n" 
+"00005445524D20256420256C6C75000000004558204C4D\n" 
+"435231202564004558204C4D4352322025642025642025\n" 
+"640000004558204C4D4352332025642025642025642025\n" 
+"64000000004558204C4D43523420256420256420256420\n" 
+"256400000000534D524120256420256400005B494E564E\n" 
+"5D20534D4100005B494E564E5D205348414B4500000000\n" 
+"5B494E564E5D20535441424C4500000038B507F04DF804\n" 
+"46104D00F02BF828600FF064FE0FF067FE68600FF069FE\n" 
+"0C48C4F8D80004F1D8000A4941600A4981600A49C1600A\n" 
+"490161012032BD03494968896808470148406800680047\n" 
+"10828800B1958300AD958300B9958300BD958300C19583\n" 
+"0000487047E02F880030B4002200E0521C032A0DD202EB\n" 
+"42039B000FF210741D5D8542F4D11B195C688C42F0D198\n" 
+"6801E04FF0FF3030BC704780B5122806D1DFF8F8152020\n" 
+"BDE80440FDF712B80E280BD1012200210320FEF791FADF\n" 
+"F8DC151020BDE80440FDF704B801BD1CB501208DF80000\n" 
+"00208DF8010001208DF802000020019000A92020F7F7B7\n" 
+"FD00208DF8000001208DF8020000208DF80100019000A9\n" 
+"2220F7F7A9FD00208DF8000002208DF8010000208DF802\n" 
+"00DFF88045019400A91220F7F799FD00208DF800000720\n" 
+"8DF8010002208DF80200019400A90E20F7F78BFD0E20F7\n" 
+"F7B8FD01208DF8000000208DF801008DF80200019000A9\n" 
+"0D20F7F77BFD0020ADF800008DF80200019000A90B20F7\n" 
+"F771FD01210F20F7F794FD01211020F7F790FD02211A20\n" 
+"F7F78CFD04211B20F7F788FD02211820F7F784FD022119\n" 
+"20F7F780FD01208DF8000000208DF801008DF802000190\n" 
+"00A91B20F7F74CFD13BD10B5FFF750FF040004D5E4210F\n" 
+"F2EC4006F0DCF9FF2C05D001212046BDE81040F7F767BD\n" 
+"10BD0021DFF8B4040FF06EBE10B5DFF8A044FDF766FF00\n" 
+"280DD00020FDF76BFFFFF72BFFC06FFDF7C9FF21460620\n" 
+"BDE81040FCF75ABFDFF88404FCF726FE21460220BDE810\n" 
+"40FCF750BFF194030024830080B50022DFF87014DFF868\n" 
+"04FCF70CFE012002BD38B50446DFF8605405F10800FCF7\n" 
+"3DFE002C20D02878062C06D200280AD100F01CF8012028\n" 
+"7005E0002803D000F018F8002028706C6021460FF2A040\n" 
+"FDF7B2FF214605F1080003F093FD05F10800BDE83240FC\n" 
+"F7EBBD31BD70470220F2F7D0BD0220F2F7D0BD1220F7F7\n" 
+"FDBC1220F7F701BD2DE9FE4304460F469046994699F800\n" 
+"00461CB6B2304602F07EFA050001D1002021E085F80080\n" 
+"99F800203946681C02F09CFA9DF8080000F0800040F010\n" 
+"008DF808000020019000902B463246610802980FF0C9FE\n" 
+"0446284602F075FA002C01D1012000E00020BDE8FE8300\n" 
+"B585B08DF8082010228DF80C2001911978009102AB0122\n" 
+"410803980FF0AEFE002801D1012000E0002005B000BDE0\n" 
+"B50B469DF8091041F008018DF8091006218DF808109DF8\n" 
+"091041F003018DF8091001F0FB018DF809100021019100\n" 
+"910146029810F067F8002801D101200EBD00200EBD00B5\n" 
+"85B08DF80C209DF8092042F008028DF8092006228DF808\n" 
+"209DF8092042F003028DF8092002F0FB028DF809200191\n" 
+"009303AB01220146029810F042F8002801D1012000E000\n" 
+"2005B000BD80B506F037F8002104BD70B48C1E012C01DA\n" 
+"0C34401E3C216425B0FBF5F5C5EB90054FF4C876B0FBF6\n" 
+"F6751940F26F1674430C26B4FBF6F46419121940F26D14\n" 
+"04FB0020A34A101800EB400203EBC200039A01FB002004\n" 
+"9A01FB002070BC7047F0B599B005463C20B1FBF0F09A4E\n" 
+"3C2202FB101131601146B0FBF1F102FB110070601820B1\n" 
+"FBF0F404EB4400A1EBC000B060201D0721B0FBF1F1C1EB\n" 
+"C101401AB06140F2B27070614FF4C873642704E040F26D\n" 
+"11641A401C70617069394690FBF1F107FB1101002906D1\n" 
+"1A4690FBF2F203FB1202002A09D0421000EB92729210B0\n" 
+"EB820202D14FF4B77201E040F26D12A24213D2002907D1\n" 
+"194690FBF1F11A4602FB11010029D3D0411000EB917189\n" 
+"10B0EB8101CCD14FF4B771CBE7F46100A80FF22C216022\n" 
+"F7F71CFE0020306108E0002000A913FB001050F8220024\n" 
+"1A501C30617069394690FBF1F107FB1101002909D14FF4\n" 
+"C87290FBF2F24FF4C87303FB1202002A0DD0421000EB92\n" 
+"729210A0EB82029446BCF1010C6CEB0C0C4FEADC7C01E0\n" 
+"4FF0000C326930230DF1000E13FB0CEC5CF822C0644515\n" 
+"D3002909D14FF4C87190FBF1F14FF4C87C0CFB11010029\n" 
+"BED0411000EB91718910A0EB8100401E8041C00FB5E760\n" 
+"1CF0607069A0F2B270706100203062284631462422F7F7\n" 
+"C1FD19B0F1940390278300F0BD1CB50C46016801914168\n" 
+"00918368C2680169491C406900F26C70FFF704FF206000\n" 
+"2016BD10B58AB003780393437802938078019048780590\n" 
+"88780490C878642190FBF1F1642303FB110000F5FA6006\n" 
+"90146800A901A8FFF7D3FF009A264B1846B4FBF0F01946\n" 
+"01FB10400021E3FB02010FF0A5FF0AB010BD2DE970478B\n" 
+"B004460D4692460FF0A5FF06461A4A0023F5F7AAFD184A\n" 
+"A2FB0089A6EB0802CAF80020014600A8FFF7EAFE029820\n" 
+"70019860700098A070049868700398A8700598642190FB\n" 
+"F1F1642202FB1100E8700BB0BDE8708700000000509E88\n" 
+"0069228300818386009C618800C3238300946188007505\n" 
+"F5FFB061880040420F00443A5C4D43555C53454E534F52\n" 
+"5F6B616C6D6961615F5452454C54455F4252434D5F4E6F\n" 
+"746550435C4D43555C50726F6A6563745C5353505F5365\n" 
+"6E736F724875625C53485F4F454D5C42434D343737585C\n" 
+"7372635C4D43555F42434D343737582E63005365745254\n" 
+"43203D202564001F0000001C0000001F0000001E000000\n" 
+"1F0000001E0000001F0000001F0000001E0000001F0000\n" 
+"001E0000001F0000001F0000001D0000001F0000001E00\n" 
+"00001F0000001E0000001F0000001F0000001E0000001F\n" 
+"0000001E0000001F0000000100000001000000FF000000\n" 
+"0100000002000000FF00000000000000001000000D0000\n" 
+"00DFF8FC06007870472DE9F04198B0FFF74FFC0446DFF8\n" 
+"EC562E6842E096F9080007283DD00B283BDA062839D006\n" 
+"F10807B86C002803D5D4F880100818B8644FF0FF313046\n" 
+"FA6D926990478046B8F1010F04D197F84C00B96D096988\n" 
+"47B8F1020F0BD1797E38697A688018BA6D526990470028\n" 
+"02D03046FEF7A3F800213046FA6D92699047022801D101\n" 
+"20B87501213046FA6D92699047022802D13046FEF73CF9\n" 
+"3668AE42BAD1D4E91C01002901D100280CD00A208DF802\n" 
+"0002208DF80000D4F88000ADF8580000A806F0FAFC0120\n" 
+"18B0BDE8F08130B585B004460D46CA208DF800002888AD\n" 
+"F801000220ADF80300BDF80100001D01F092FFCDF80900\n" 
+"02220DF1030101F0B5FF02222946DDF80900801C01F0AE\n" 
+"FF2A882146DDF80900001D01F0A7FF0020288000A9DFF8\n" 
+"DC0501F0A6FF05B030BD42F23411081A322801DA012070\n" 
+"470020704780B5FDF701FC407B002804D0FDF7BBFFDFF8\n" 
+"B01E086001BD80B5FDF7B4FFDFF8A41E086001BDDFF89C\n" 
+"0E0068704710B582B000F10C03D96A89680091042200A9\n" 
+"5C7DDB68C0681818201801F06EFF13BD30B41488651C15\n" 
+"800525F19403202B830065541488651C1580635413885C\n" 
+"1C1480007A585430BC704732B515461C4621884A1C2280\n" 
+"37224A5521884A1C2280007A4855022200A92088401901\n" 
+"F049FF2088801C208031BD2DE9F041054616461F4605F1\n" 
+"0808069CA4B298F81A0004FB00F2D8F804000918388880\n" 
+"1901F031FF388898F81A10614311FA80F038803888FFF7\n" 
+"89FF002803D039463046FFF753FF95F9080016280AD1D8\n" 
+"F81000D8F80410415C0FF20C00BDE8F041FDF7F6BBBDE8\n" 
+"F0812323205368616B652025640030B400F110039B7C91\n" 
+"4203D1006990FBF3F00DE00C46154603D2281B90FBF3F0\n" 
+"06E00069001B90FBF3F095FBF3F1081880B230BC704770\n" 
+"B582B004460D461E4692B289B2FFF7DCFF0090069B3246\n" 
+"29462046FFF79AFF73BDF8B5044615461E462269002D00\n" 
+"D11546069F0097FFF7E3FF2069854206DA009733462A46\n" 
+"00212046FFF7D9FFF1BD00F110018A688B7CD2188A6000\n" 
+"69824201D1002088600020887370472DE9FC4104460D46\n" 
+"1646A1696069002815D500270A4692B289B22046FFF79F\n" 
+"FF804633462A4641462046FFF746FFA26900962B461146\n" 
+"2046FFF7BDFF2EE0814216DA01270A4692B2014689B220\n" 
+"46FFF786FF804633462A4641462046FFF72DFF00962B46\n" 
+"A26961692046FFF7A4FF15E002270A4692B2014689B220\n" 
+"46FFF76FFF804633462A4641462046FFF716FF00962B46\n" 
+"A26961692046FFF77CFFA0690190606900903B46424694\n" 
+"F908100FF20C00FDF743FBBDE8F38100005061636B203D\n" 
+"25642025642025642025642025640000000070B582B004\n" 
+"460D461646A06C012811DAA07F012811D133462A460121\n" 
+"2046FFF7E3FE0120009033462A46A1692046FFF7F2FE02\n" 
+"E02046FFF77AFF0123324629462046FFF7C0FEA0696061\n" 
+"A36CE26C94F908100FF20C00FDF707FBA06CE06473BD66\n" 
+"6C75736820256420256420256400002DE9F84304460D46\n" 
+"1646FFF731FA8146FDF77DFA804604F10807B87D002802\n" 
+"D02046FFF787FE386C0128C0F2888098F80E00002844D0\n" 
+"B87D002800F0C280786CD9F88010401A7864B87E3969FA\n" 
+"68531A834205D0002A2FD1BA68511A81422BD194F90820\n" 
+"397E0FF26010FDF7C5FA397E00291ED094F908200FF264\n" 
+"10FDF7BCFA3869B97E421892B2F96889B22046FFF7C5FE\n" 
+"33462A4601462046FFF76DFE00962B463869B97E4218F9\n" 
+"682046FFF7E2FE02E04FF0FF30F8602046BDE8F243F0E6\n" 
+"98F80E0000287CD1786CD9F88010401A786401282CDA38\n" 
+"6C7864386BD0F80C8094F908308268396C0FF21010FDF7\n" 
+"84FAF19403B02E8300B868B97E90FBF1F0396C91FBF8F1\n" 
+"814202DB4FF0FF30F860B87D002808D02046FFF7C7FE32\n" 
+"4629462046FFF7D0FE04E0324629462046FFF7CAFE3869\n" 
+"F86048E0B87D002845D02046BDE8F243B1E6B87D00283E\n" 
+"D094F9080098F80A10002919D0072801D016282FD13346\n" 
+"2A4601212046FFF70AFE0120009033462A4639692046FF\n" 
+"F719FE7A7894F908100FF29400FDF73BFA19E0092809D1\n" 
+"94F85E10012905D10FF28C00BDE8F443FDF72EBA33462A\n" 
+"4601212046FFF7E8FD0120009033462A4639692046FFF7\n" 
+"F7FD2046FFF772FE3869F860BDE8F18300007375737065\n" 
+"6E64206669666F2066756C6C2025642025640073757370\n" 
+"656E64206669666F2066756C6C20322025642025640000\n" 
+"006669666F2066756C6C33202564202564202564004150\n" 
+"2053757320256420256400000000233E6C75785F736174\n" 
+"20256400000000F8B504460D46234E376805E02A462146\n" 
+"3846FFF7DDFE3F68B742F7D1F1BD2DE9F04104460D46DF\n" 
+"F8546DF76907F10C0898F81510D8F80C00FA688018D8F8\n" 
+"54205269904700280AD0012088F81200787A002804D02A\n" 
+"4621463846FFF7B9FEB66906F10C07797DF868F2688018\n" 
+"7A6D52699047002809D00120B874707A002804D02A4621\n" 
+"463046FFF7A3FE0120BDE8F08181888900C40D8800388A\n" 
+"88000288D21C02800A80704780B50B889B1AADF80030BD\n" 
+"F80030002B09D01018012100F8031C022200A9801E01F0\n" 
+"9BFC01BD0888C01E088001BD2DE9F04FADF68C2D04460D\n" 
+"46FFF7AEF80746FDF7FAF8804610A840F64821F7F745F8\n" 
+"00208DF8020006A82821F7F73EF801A81421F7F73AF800\n" 
+"20ADF800000646D7E91C01002902D1002800F0368498F9\n" 
+"0900FEF7E0FD002800F02F8400A92846FFF7B2FFB0461C\n" 
+"E0D7E91C0142460BF013F800F0010011F0000101D10028\n" 
+"0ED008EB4800DFF8241C01EB001292F90900012804D10D\n" 
+"F1020110A8926A904708F10108B8F12F0FDFDB37461AE0\n" 
+"2888411C298099F8021001552888FFF799FC00280DD0BD\n" 
+"F8002029462046FFF782FF29462046FFF75DFC00A92846\n" 
+"FFF775FF7F1C7FB29DF80200874280F2DF832988481C28\n" 
+"8040F2491010FB07F010AA825C0A5529884A1C2A8010AA\n" 
+"00EB020898F8010008552888411C298008F1010999F801\n" 
+"10015599F80100032821D0092800F09F810C2800F07981\n" 
+"1A2800F09D821B2800F0AC811C2800F0CB821D2800F0B9\n" 
+"811E2800F0B582252800F0F482262800F02E83282800F0\n" 
+"09832C2800F038839EE798F80100032805D12888411C29\n" 
+"80F194034032830099F8021001552888411C298099F803\n" 
+"10015599F80300C0280FD108F22709B9F82E20D9F83010\n" 
+"2888001901F0C1FB2888B9F82E100818288080E7E0284A\n" 
+"D108F20508002035E058F820100A0222F0FF12090A01F0\n" 
+"FF11114348F820104FEA314148F8201008EB80014A6813\n" 
+"0223F0FF13120A02F0FF121A434A604FEA32424A608A68\n" 
+"130223F0FF13120A02F0FF121A438A604FEA32428A60CA\n" 
+"68130223F0FF13120A02F0FF121A43CA604FEA3242CA60\n" 
+"001D1428C7DB50210FF29460FDF75CF850224146288800\n" 
+"1901F072FB28885030288033E7711C00064ED401A808F1\n" 
+"040252783254C9B298F806200A54491CC9B200220A544A\n" 
+"1C08F20601D2B24B781354521CB8F80E30D2B21E0A1654\n" 
+"521CD2B21354521C08F20E03D2B29E781654521CD2B2DB\n" 
+"781354521CD2B298F812301354521CD2B298F813301354\n" 
+"521CD2B28B781354521CD2B2C9781154511CC9B298F80A\n" 
+"200A54491CC9B298F80B200A544E1CF6B2324601A92888\n" 
+"001901F021FB288850FA86F02880E1E6D8F8052006A813\n" 
+"0C3354C9B2130A0B54491CC9B20A54491CD8F80920C9B2\n" 
+"130C0B54491CC9B2130A0B54491CC9B20A54491CD8F80D\n" 
+"20C9B2130C0B54491CC9B2130A0B54491CC9B20A54491C\n" 
+"D8F81120C9B2130C0B54491CC9B2130A0B54491CC9B20A\n" 
+"54491CD8F82720C9B2130C0B54491CC9B2130A0B54491C\n" 
+"C9B20A54491C08F22709C9B299F804200A54491CC9B299\n" 
+"F805200A54491CB9F80620C9B2130A0B54491CC9B20A54\n" 
+"491CC9B299F808200A54491CD8F81520C9B2130C0B5449\n" 
+"1CC9B2130A0B54491CC9B20A54491CD8F81920C9B2130C\n" 
+"0B54491CC9B2130A0B54491CC9B20A54491CD8F81D20C9\n" 
+"B2130C0B54491CC9B2130A0B54491CC9B20A54491CD8F8\n" 
+"2120C9B2130C0B54491CC9B2130A0B54491CC9B20A544E\n" 
+"1CF6B2324606A92888001901F087FA288850FA86F02880\n" 
+"47E608F10301B1F90300C0F3072242EA0020A1F80300B1\n" 
+"F90700C0F3072242EA0020A1F80700B1F90500C0F30722\n" 
+"42EA0020A1F8050009222888001901F063FA2888093028\n" 
+"8024E62988084698F80120032A09D1022208F103010019\n" 
+"01F053FA2888801C288014E6491C298099F8021001550E\n" 
+"E62888411C298099F80210015598F8010005287FF404AE\n" 
+"2888411C298008F1040149780155FBE508F1030998F801\n" 
+"00012840F0C4802888411C298099F8041001554FF0000A\n" 
+"A1E0CAEB4A1000EB090BDBF81800010221F0FF11000A00\n" 
+"F0FF100843CBF818004FEA3040CBF8180004220BF11801\n" 
+"F19403D03583002888001901F00CFA2888001D2880DBF8\n" 
+"0800010221F0FF11001200F0FF100843CBF80800C0F30F\n" 
+"4141EA0040CBF8080004220BF108012888001901F0F1F9\n" 
+"2888001D2880DBF80C00010221F0FF11001200F0FF1008\n" 
+"43CBF80C00C0F30F4141EA0040CBF80C0004220BF10C01\n" 
+"2888001901F0D6F92888001D2880DBF81000010221F0FF\n" 
+"11001200F0FF100843CBF81000C0F30F4141EA0040CBF8\n" 
+"100004220BF110012888001901F0BBF92888001D2880DB\n" 
+"F81C00010221F0FF11000A00F0FF100843CBF81C004FEA\n" 
+"3040CBF81C0004220BF11C012888001901F0A2F9288800\n" 
+"1D2880BBF81600010A41EA0020ABF8160002220BF11601\n" 
+"2888001901F091F92888801C2880411C298080B2DBF820\n" 
+"1001550AF1010A5FFA8AFA99F804008245FFF659AFB8F8\n" 
+"4321D8F845112888001901F077F92888B8F84311081828\n" 
+"80B8F843110FF28C20FCF750FE30E505287FF42EAD2888\n" 
+"411C298099F8021001552888411C298099F80310015520\n" 
+"E508F1030198F80100032805D12888421C2A8098F80A20\n" 
+"0255D1F80100020222F0FF12000A00F0FF101043C1F801\n" 
+"004FEA3040C1F8010007222888001901F03BF92888C01D\n" 
+"2880FCE408F103010888020A42EA002008800222288800\n" 
+"1901F02BF92888801C2880ECE408F1030098F801100129\n" 
+"7FF4E6AC99F80210012918D129884A1C2A8000780855B8\n" 
+"F80420D8F806102888001901F00FF92888B8F804100818\n" 
+"2880B8F804100FF2D010FCF7E8FDC8E402297FF4C6AC29\n" 
+"884A1C2A8002780A5529884A1C2A80C0790855BAE42888\n" 
+"411C2980B9F8021001552888411C2980B9F90210091201\n" 
+"55B9F90220D8F805102888001901F0E0F82888B9F90210\n" 
+"081828809FE42888411C2980B9F8021001552888411C29\n" 
+"80B9F90210091201552888411C298008F1040149780155\n" 
+"B9F90220D8F806102888001901F0BEF82888B9F9021008\n" 
+"1828807DE408F103010888020A42EA0020088002222888\n" 
+"001901F0ACF82888801C28806DE408F103082988084698\n" 
+"F8002013072AD5491C298098F8001001552888411C2980\n" 
+"98F8071001552888411C298098F808100155D8F8090001\n" 
+"0221F0FF11000A00F0FF100843C8F809004FEA3040C8F8\n" 
+"0900042208F109012888001901F079F82888001D28803A\n" 
+"E4520724D5491C298098F8001001552888411C298098F8\n" 
+"01100155D8F80300010221F0FF11000A00F0FF100843C8\n" 
+"F803004FEA3040C8F80300042208F103012888001901F0\n" 
+"52F82888001D288013E498F80220D8F80D10001901F0F1\n" 
+"94036039830047F8288898F802104018288006E4BDF800\n" 
+"2029462046FFF78EFBFEF7DCF90DF68C2DBDE8F08F0000\n" 
+"20C3880024C3880050442053462053656E742564000000\n" 
+"004F4A483A20415442442073697A653A20256400004F4A\n" 
+"483A20415044522073697A653A20256400002DE9F04105\n" 
+"460E46FCF77DFC0746DFF89C432078401C2070F3F70EFF\n" 
+"6078401C607097F81880B8F1000F26D03088404480B2FF\n" 
+"F75BF8002803D031462846FFF725F83088411C31800321\n" 
+"41553088411C318000F80580424607F119013088401900\n" 
+"F0E2FF308840443080FF22002107F1190004F0C4FE0020\n" 
+"38766078401E6070C0B2002801D1F3F7D1FEBDE8F041F4\n" 
+"F714B838B504460D46FCF735FC817A002909D1417B0029\n" 
+"06D129884A1C2A8006220A550121417331BD38B504460D\n" 
+"46288800280CD02046FFF79BFF29462046FFF7E0FF2946\n" 
+"2046BDE83440FEF7D7BF31BD14B585B0049101A9002213\n" 
+"4614461CC10A21ADF8001004218DF804108DF805000A46\n" 
+"05A90DF1060000F08EFF042204A90DF10A0000F088FF00\n" 
+"A901A8FEF7B6FF06B010BD2DE9F041A14C6068002828D0\n" 
+"218888421FD000F04DFF054666682788A6EB07081FFA88\n" 
+"F84246381900F10801284600F069FF3A4604F1080108EB\n" 
+"050000F062FF3246294604F1080000F05CFF284600F047\n" 
+"FF626804F108010520FFF7AFFF002060602080BDE8F081\n" 
+"2DE9F04182B080460E461746FCF7B5FB0025D8F809100C\n" 
+"1D98F800201146012954D00F292AD035292CD0802963D0\n" 
+"81296BD0822969D0852967D0862965D0882963D08A2969\n" 
+"D08B2900F089808C2900F095808D2900F09D80DD2900F0\n" 
+"A780DF2900F0C380F02916D0F4291CD0F62922D0F92930\n" 
+"D0FF2900F0918043E0807D2070012040E0012010F0A3FC\n" 
+"284610F0A4FC0120207037E00422DFF8101D204600F0FD\n" 
+"FE01202FE0042200F11001204600F0F5FE012027E00322\n" 
+"21462846DFF8F03C9B681B6E1B6A984701201CE02046FE\n" 
+"F7F1FA012017E0B8F80120B8F80300C010C0EB0011D8F8\n" 
+"050000EB8111204600F0D5FE012007E0D8F80500207021\n" 
+"462846FDF7D2F82846BDE8F68128462070214602F07F00\n" 
+"FDF7C8F8F4E701202070DFF8900CD0F804802E4698F81C\n" 
+"00002801D12846E8E798F80900002804D1D8F860004068\n" 
+"804706462046D8F86010C9698847002ED7D0D8F8600080\n" 
+"688047D2E70120B8F80310C1F3C101091D884040F00200\n" 
+"207021460120FDF797F8C3E701782170C17861704179A1\n" 
+"708079E07001202071B9E7204610F0B8FD0546B3E7F194\n" 
+"03F03C830004F10802211D2046FEF787FD0120ACE798F8\n" 
+"0500DFF8FC1B51F8208098F80900002810D03A46314640\n" 
+"46FFF719F8DFF8E80B01210170DFF8E41B0820FBF7B8FA\n" 
+"0120207001E02846207001208DE798F80500DFF8C01B51\n" 
+"F82080D8F8100098F8221090FBF1F0401E0090042200A9\n" 
+"204600F046FE012078E700000000EC038800787888001C\n" 
+"27880048C088002DE9F041B2B00746FCF7A3FA0546FEF7\n" 
+"51FAD7F809100C1D3978002202924FF0FF32039216460A\n" 
+"46312A00F01781322A00F01E81332A00F02A81342A00F0\n" 
+"3181372A6CD0A12A00F05981A22A00F09981A42A00F0A4\n" 
+"81B12A00F06783B22A00F02885B82A00F0B681C12A00F0\n" 
+"DD81CD2A00F08380CE2A00F09980D02A37D0D12A2BD0D2\n" 
+"2A35D0D32A3CD0D42A3ED0D62A50D0D72A4ED0D82A54D0\n" 
+"D92A52D0DB2A00F01E81DC2A00F02281F12A52D0F22A00\n" 
+"F09580F52A00F0A980F72A00F0BC80FA2A00F04385FB2A\n" 
+"00F04385FD2A00F0A880FE2A00F04D85BCE000212846FC\n" 
+"F766FC0020A873FFF743FE0120B3E00120B1E001212846\n" 
+"FCF75AFC012010F0D4FD0120A8E00020A8720120A4E001\n" 
+"20A872002068730120A873E87A01209BE0002221461046\n" 
+"DFF8603A1B681B6E1B6A9847012090E0D62901D1012000\n" 
+"E00020E872012088E0D92901D1012000E0002028730120\n" 
+"80E000210CE00A180B5D82F88430022905D10A5D80F887\n" 
+"200A5D80F88820491C0329F0DB01206DE0002512E0DFF8\n" 
+"080A476807EB4506022204EB450106F1580000F06FFDB6\n" 
+"F95810DFF8F809FCF74DFA6D1C032DEADB012054E00025\n" 
+"12E0DFF8D409076807EB4506022204EB450106F1580000\n" 
+"F056FDB6F95810DFF8C809FCF734FA6D1C032DEADB0120\n" 
+"3BE0297C090601D4012036E02178A0F88A106178A0F88C\n" 
+"1002212046DFF88C29D269126E92699047002825D00120\n" 
+"24E0032221460120DFF874399B681B6E1B6A9847012019\n" 
+"E0122221460220DFF85C399B681B6E1B6A984701200EE0\n" 
+"DFF84C098769386E80688047002805D00122214605203B\n" 
+"6E1B6A9847002032B0BDE8F08110F0B0FA012801D10120\n" 
+"F6E7204610F0CEF9F1E710F0A6FA012801D10120ECE720\n" 
+"4610F04BFA20780028E5D010F077FAE2E710F097FA0128\n" 
+"01D10120DDE7207810F074FAD8E710F08DFA012801D101\n" 
+"20D3E7DFF8EC08FCF7C3F9002010F076FA4FF480510020\n" 
+"FCF7ADFB012010F0F5F8012010F06FFA207810F077FA10\n" 
+"F05FF90120BAE7D7F80510DFF8B808FCF7A8F9B2E70020\n" 
+"C0460028AED0C046C046ABE794F900500422611CF19403\n" 
+"8040830002A800F0B5FCB7F80100062806DB0422611D03\n" 
+"A800F0ACFC94F90960DFF8640850F82570FEF7C4F8D0E9\n" 
+"1C23C2F34018FEF7BEF8D0E91C23C2F380208044FEF7B7\n" 
+"F8D0E91C23C2F38000404497F9081007290BD1797A0029\n" 
+"08D0002806D10022DFF83C08FCF768F9012072E7009603\n" 
+"9B002202992846FCF7CDFE207068E794F900500422611C\n" 
+"02A800F072FC00231A4602992846FCF75EFF5BE794F900\n" 
+"500422611C02A800F064FCB7F80100062806DB0422611D\n" 
+"03A800F05BFC94F909600096039B002202992846FCF7B4\n" 
+"FF20703FE720780146032908D01A2914D0252912D02829\n" 
+"10D02C2912D015E060780DF111025070012805D1A0788D\n" 
+"F81300204605F0FBF8012025E7204605F0F6F8F9E72046\n" 
+"05F0F2F8F5E794F9011040B2FDF799FEC0B216E7207801\n" 
+"460E3908D0091F03291ED9091F3CD0491E00F096805BE1\n" 
+"0E208DF8100060780DF111025070A1788DF81310E2780D\n" 
+"F113035A700023ADF8153052B249B240B2FCF7E9FA05F0\n" 
+"C3F842E18DF81000122803D10DF1110162784A70132802\n" 
+"D161788DF81310142803D10DF1130162784A70152803D1\n" 
+"0DF111006178417062782178DFF8FC06FCF7C5F822E160\n" 
+"78A178090401EB0060E17800EB012021794018CDF81200\n" 
+"6179A279120402EB0161E27901EB0221227A8918CDF816\n" 
+"10627AA37A1B0403EB0262E37A02EB0322237BD2180DF1\n" 
+"16067260637B8DF81E30A37B8DF81F300DF11F03E57B5D\n" 
+"70257C9D70657CDD70A57CE67C16EB05252DB29D80267D\n" 
+"05EB0625667DAD19DD80A57D1D72002803D1002901D100\n" 
+"2A09D00DF1120184B068461622F6F712F80FBCFCF71DFB\n" 
+"0DF1120184B068461622F6F708F80FBC05F088F8C6E060\n" 
+"788DF811001D283ED10DF11606A1787171A17801290DD1\n" 
+"E178227912EB0121ADF8121089B20A460146DFF81406FC\n" 
+"F74FF8ACE002290BD1E078217911EB0021ADF8141089B2\n" 
+"DFF8FC05FCF741F89EE003290AD1E078217911EB0021F1\n" 
+"8089B2DFF8E405FCF734F891E0042940F08F80E0782179\n" 
+"11EB0021ADF81E1089B2DFF8CC05FCF725F882E0032826\n" 
+"D1A1780DF162056970DFF8B805FCF71AF86878012815D1\n" 
+"0020142872DA04EB8001CA780B791B0403EB02624B7902\n" 
+"EB03228979511804AA02EB8002C2F80210401CEAE70228\n" 
+"5DD1E0788DF8620059E01C2825D1A0788DF81500A07801\n" 
+"2808D1E1780DF111025170DFF86005FBF7EBFF48E00228\n" 
+"07D1E1788DF81310DFF85005FBF7E1FF3EE003283CD005\n" 
+"283AD1E1780DF113035970DFF83805FBF7D4FFF1940310\n" 
+"44830031E02C282FD10DF11600A1788171A078012803D1\n" 
+"E0788DF8160024E0022806D1E078217911EB0020ADF81D\n" 
+"001BE0032806D1E078217911EB0020ADF81F0012E00428\n" 
+"07D1E078217911EB00200DF11F01488008E0052806D1E0\n" 
+"78217911EB00200DF11F01888006208DF8680020788DF8\n" 
+"69000DF16B0004A95522F5F731FF0DF169000B21417000\n" 
+"20ADF8C0001AA804F0CFFFC0B295E520782F2805DBDFF8\n" 
+"9804FBF782FF00208CE540B2FCF74DFF012840F0818120\n" 
+"78014603292BD0062968D009292ED00C2948D00D2954D0\n" 
+"192900F093801A296AD01B2900F0A3801C2900F0E0801D\n" 
+"2900F0B6801E2900F0E880252900F00181262900F0F080\n" 
+"272900F00281282900F027812C2900F029812D2900F03F\n" 
+"814BE10322611C0DF1120000F060FA49E10722611C0DF1\n" 
+"120000F059FABDF81200010A41EA0020ADF81200BDF814\n" 
+"00010A41EA0020ADF81400BDF81600010A41EA0020ADF8\n" 
+"16002DE10322611C0DF1120000F03DFABDF81300010A41\n" 
+"EA0020ADF813001FE10322611C0DF1120000F02FFABDF8\n" 
+"1300010A41EA0020ADF8130011E10122611C0DF1120000\n" 
+"F021FA0DF111004178E548FBF7FFFE04E10B22611C0DF1\n" 
+"120000F014FADDF81300010221F0FF11000A00F0FF1008\n" 
+"43CDF813004FEA3040CDF813000DF116067088010A41EA\n" 
+"00207080002396F9062096F9051096F90400FCF7DBF8DE\n" 
+"E00622611C0DF1120000F0EEF9BDF81200010A41EA0020\n" 
+"ADF81200BDF81600010A41EA0020ADF81600C9E0042261\n" 
+"1C0DF1120000F0D9F9BDF81200010A41EA0020ADF81200\n" 
+"BDF81400010A41EA0020ADF814000FF2F820FBF7ABFEB0\n" 
+"E00922611C0DF1120000F0C0F9BDF81200010A41EA0020\n" 
+"ADF81200BDF81400010A41EA0020ADF81400BDF8160001\n" 
+"0A41EA0020ADF816000DF11606002396F9042096F90310\n" 
+"96F90200FCF786F889E00DF1110061784170A0788DF813\n" 
+"00A27861780FF29820FBF776FE7BE00322611C0DF11200\n" 
+"00F08BF9BDF81300010A41EA0020ADF813006DE0052261\n" 
+"1C0DF1120000F07DF9BDF81300010A41EA0020ADF81300\n" 
+"5FE00922611C0DF1120000F06FF958E00A22611C0DF112\n" 
+"0000F068F9BDF91200C0F3072141EA0020ADF81200BDF9\n" 
+"1400C0F3072141EA0020ADF81400BDF91600C0F3072141\n" 
+"EA0020ADF816000DF11606B6F90200C0F3072141EA0020\n" 
+"708030E00DF11100617841702BE00822611C0DF1120000\n" 
+"F03BF9BDF81400010A41EA0020ADF814000DF116060023\n" 
+"96F9032096F9021096F90100FCF70FF812E0F19403A047\n" 
+"83000222611C0DF1120000F022F9BDF81200010A41EA00\n" 
+"20ADF8120004E08DF8100060788DF81100207801460529\n" 
+"08D1604801210170687A002810D10846FFF7F9BB18290B\n" 
+"D18DF8100060788DF811000DF11100A1784170E0788DF8\n" 
+"130000208DF8680020788DF869000DF16B0004A95522F5\n" 
+"F76EFD0DF169000B2141700020ADF8C0001AA804F00CFE\n" 
+"C0B2FFF7D2BB20782F2806DB0FF23810FBF7BEFD0020FF\n" 
+"F7C8BB052805D14248002101700120FFF7C0BB1A281CD1\n" 
+"0822611C0DF1120000F0C7F8DDF81300010221F0FF1100\n" 
+"0A00F0FF100843CDF813004FEA3040CDF813000DF11606\n" 
+"7088010A41EA0020708005E02C2803D10DF11100617841\n" 
+"7001208DF8680020788DF869000DF16B0004A95522F5F7\n" 
+"1EFD0DF169000B2141701AA804F0BFFDC0B2FFF785BB01\n" 
+"20FFF782BB2078002802D0052805D006E00FF2B400C046\n" 
+"C04601E0FFF702F90120FFF772BB04F10802211D2046FD\n" 
+"F75EFF0120FFF769BBC8238800EC03880080888900509E\n" 
+"8800585886006458860070588600805886008C588600A4\n" 
+"588600B4588600C4588600D0588600DC588600E8588600\n" 
+"FC58860010598600245986003859860054598600818889\n" 
+"004C542053532041444400000041504452204144442025\n" 
+"6420256400004C6962726172792072616E676520697320\n" 
+"6F7665722C2052656D6F766500000041505F5245515545\n" 
+"5354000030B5134D0446287881B020B9281DFAF7C5F801\n" 
+"202870281DFAF7DAF8204610F05BFF0446281DFAF7F4F8\n" 
+"204601B030BD30B50446064D81B0281DFAF7C9F8204611\n" 
+"F0A4F8281D01B0BDE83040FAF7E1B848E7880010B50446\n" 
+"F5F77CFC204610BD30B504460F480D460178491C81B001\n" 
+"70F2F7F8FEA068E168884209D13821204602F01CFCF2F7\n" 
+"EEFEA068E1688842F5D02946204611F008FB01B0BDE830\n" 
+"40F3F722B800BF1C27880030B581B004460D46F2F7D8FE\n" 
+"A1680A4831B9407808B9F2F7CBFE012001B030BD017849\n" 
+"1C01702046294611F00EFBF3F706F8002001B030BD1C27\n" 
+"880000B500BF130096469446103928BFA0E80C50FAD85F\n" 
+"EA417C28BF0CC048BF40F8042BC90728BF20F8022B48BF\n" 
+"00F8012B00BD000010B582B00446A06940F00403A36123\n" 
+"6803F004032360A061C803C00B2062606800900098C007\n" 
+"FAD5012060603AB1204600F009FF2046BDE8164000F00F\n" 
+"BF13BD10B582B004466069002101616069616A01646069\n" 
+"216D81626069616DC1626069816941F004028261026802\n" 
+"F004020260816100210162416800910099F19403304B83\n" 
+"00C907FAD50121416060694FF4001141616069216A0163\n" 
+"6069DFF8041A8161606940F2DF31016094F918004109DF\n" 
+"F8F429012300F01F0003FA00F042F82100606900F0C3FE\n" 
+"606900F0CBFE607EC0F38000B0B1DFF8800AA16B09B1DF\n" 
+"F87C0A6169C0438861607EC0F3C100617E4909890041EA\n" 
+"4060617EC1F3800140EA410012E06069DFF8681A816160\n" 
+"7EC0F3C100617E4909890041EA4060617EC1F3800140EA\n" 
+"410040F00100617EC1F3C1010229A8BF40F08070616908\n" 
+"610320207494F918004109DFF8AC2A012300F01F0003FA\n" 
+"00F042F8210013BD38B504460D46206818B1204601F03B\n" 
+"F807E0207C042804D1A06C10B1204611F060FAD4F8B800\n" 
+"18B101464020FAF735FB680713D5D4F8A000401CC4F8A0\n" 
+"00206A61698A6942F004038B610B6803F004030B608A61\n" 
+"04220A6080B20863E80507D5D4F8A400401CC4F8A40060\n" 
+"6900F042FEA80507D5D4F8A800401CC4F8A800606900F0\n" 
+"43FEE80704D5D4F8AC00401CC4F8AC00A06CE8B960694F\n" 
+"F4417101608169DFF89C291143816194F918004109DFF8\n" 
+"9C28012300F01F0003FA00F042F82100D4F8B80028B101\n" 
+"460220BDE83440FAF7E4BA31BD000010B582B0052825D8\n" 
+"DFE800F00315181B1E21DFF8A0090068C0EB0011DFF898\n" 
+"0910EB011428D140F27F11DFF89009BDE81C40F0F73DB8\n" 
+"DFF88809ECE7DFF88809E9E7DFF88809E6E7DFF88409E3\n" 
+"E7DFF88409E0E76920F3F708FA0028E3D04FF4BC700090\n" 
+"DFF87039DFF85029DFF8E0196920F3F70AFAD6E7606900\n" 
+"6861698A6920EA0201C4F88810D4F898305B1CC4F89830\n" 
+"636942F000429A61626910606269126811F0180F0BD0D4\n" 
+"F89C20521CC4F89C20C0064CBF01200220A0740220E063\n" 
+"607EC0F380000028204602D001F03FF801E0FFF72AFF60\n" 
+"698069616940004008886113BD38B50024DFF8F05815F8\n" 
+"6C0C28BB284611F07CFB012810D1C4EB0410DFF8B41801\n" 
+"EB001001210174DFF8D0080068401CDFF8C81808602046\n" 
+"32BD6920F3F7A3F958B140F2DF100090DFF8B438DFF888\n" 
+"28DFF8C8196920F3F7A6F9641CF035062CD2DB4FF0FF30\n" 
+"32BD38B5C0EB0011DFF8642802EB0114062802DB6FF002\n" 
+"0032BD217C11B96FF0030032BD617E01F0030100F046F9\n" 
+"054600202074DFF860080068401EDFF85818086004F17C\n" 
+"0001F0A4F8284632BD0020DFF84C1811F8102B12B1401C\n" 
+"0628F9DB0628A8BF4FF0FF3070472DE9F04F83B0044625\n" 
+"6894F804B06779A0798DF8000094F80780D4F80890D4F8\n" 
+"0CA060690290A0690190002F18BF012FF19403C04E8300\n" 
+"40F0F380B8F1040F80F2EF80012F03D1B9F1011F80F0E9\n" 
+"8019F0030F40F0E580D145C0F0E280062D80F2DF80C5EB\n" 
+"0510DFF8A01701EB0016402106F13C00F5F737F92C2106\n" 
+"F18800F5F732F94FEA0B10DFF8B017405C38BB4FEA0B10\n" 
+"0122425401EB0B104560083011F0D0FA01281BD1707402\n" 
+"2030740BF0FB0040EA870000F01F009DF8001040EA4110\n" 
+"00F0E7004FEAC80101F0180108437076B9F1011F2CBF4F\n" 
+"F48030484602E06FF00500B5E0F061C6F820A00298B062\n" 
+"0198F062606AB063BBF1050F00F29180DFE80BF0030E19\n" 
+"242F3A0020F1F72AFDDFF89407706136203076DFF8EC06\n" 
+"35E00020F1F71FFDDFF88407706137203076DFF8E0062A\n" 
+"E00120F1F714FDDFF87007706138203076DFF8D4061FE0\n" 
+"0120F1F709FDDFF89007706139203076DFF8C00614E002\n" 
+"20F1F7FEFCDFF87C0770613A203076DFF8B00609E00220\n" 
+"F1F7F3FCDFF86C0770613B203076DFF89C0605609DF800\n" 
+"00042845D8DFE800F00334373E4100012F14BFDFF8B007\n" 
+"DFF8B00770622069C6F8B400044614F0030F0FD06920F3\n" 
+"F77EF858B140F2FD200090DFF89437DFF84026DFF8D016\n" 
+"6920F3F781F8DFF8840720403065A9F101004FF6FC7108\n" 
+"407065002030663FBBB9F1011F15D34FF0FF3027E0DFF8\n" 
+"D807D1E7DFF8D4077062A06AC6F8BC00CBE7DFF8CC07C7\n" 
+"E7DFF8C807F4E76FF0020014E030607060B060F0600420\n" 
+"30743046FFF719FD306840B1304600F0E0FD04E0042030\n" 
+"743046FFF70EFD002003B0BDE8F08F38B50C460025C0EB\n" 
+"0011DFF8A82502EB0111062CB8BF06281ADA2201DFF8C4\n" 
+"35D25C012A02BF03EB0412526882420FD12001C55403EB\n" 
+"04104FF0FF3242604D74DFF8A00500EB0410083000F045\n" 
+"FF01E06FF00205052C0CD8DFE804F00303050507070020\n" 
+"02E0012000E00220F1F779FC01E06FF00205284632BDC0\n" 
+"EB0011DFF8340500EB0110017C03291CBF017C042902D0\n" 
+"6FF003007047416900220A6190F918104A09DFF89C374F\n" 
+"F0010C01F01F010CFA01F143F822104169DFF8B4238A61\n" 
+"416940F2DF320A6090F918004109DFF8A42300F01F000C\n" 
+"FA00F042F8210000207047DFF8640700210160DFF86007\n" 
+"4FF480010160DFF85807DFF874130160DFF8500540F2DF\n" 
+"310160DFF848074FF480010160DFF8440700210160DFF8\n" 
+"30074FF400010160DFF83407DFF844130160DFF8240540\n" 
+"F2DF310160DFF818074FF400010160DFF81C0700210160\n" 
+"DFF800074FF080710160DFF80C07DFF814130160DFF8F8\n" 
+"0440F2DF310160DFF8E8064FF08071F194035052830001\n" 
+"60DFF8F40600210160DFF8D0064FF000710160DFF8E406\n" 
+"B9490160DFF8FC0440F2DF310160DFF8BC064FF0007101\n" 
+"60DFF8CC0600210160DFF8A0064FF080610160DFF8C006\n" 
+"AE490160DFF8D40440F2DF310160DFF88C064FF0806101\n" 
+"60DFF8A80600210160DFF874064FF000610160DFF89806\n" 
+"A2490160DFF8A80440F2DF310160DFF860064FF0006101\n" 
+"6070472DE9F84F05464FF0000A68690069C10703D46969\n" 
+"40F0010008616869066A476A380C00F00100310C01F001\n" 
+"01484029D0B8B2B1B2441A00F09880AC67A86C844288BF\n" 
+"0446A246AC652246296DB0B2D5F8B430C018F4F7DDFF28\n" 
+"6D20182865A86C001BA864A0192866286F401C2867E869\n" 
+"296E89B288425CD2009733462A6E40F2874152E0E869B1\n" 
+"B2A0EB010B1FFA87F818EB0B0469D0AC67A86C844288BF\n" 
+"0446A246AC65A34588BFA3465A46296DB0B2D5F8B430C0\n" 
+"18F4F7ACFF286D58442865A86CA0EB0B00A8640BEB0609\n" 
+"1FFA89F0E96989B2884205D14FF00009F00358BF4FF480\n" 
+"39B4EB0B0010D0804588BF80464246296DD5F8B400F4F7\n" 
+"8BFF286D40442865A86CA0EB0800A864C144C5F8609028\n" 
+"6F401C2867E869296E89B2884208D2009733462A6E4FF4\n" 
+"9A61DFF88C02EFF79CFD686902210160816921F0020181\n" 
+"61296E6869826942F004038361036803F0040303608261\n" 
+"C903C90B0162416800910099C907FAD5012141605046BD\n" 
+"E8F28F80B5DFF80C050078401CDFF804150870DFF80405\n" 
+"0078401CDFF8FC14087000200FE080B5DFF8EC04007840\n" 
+"1CDFF8E4140870DFF8E0040078401CDFF8D81408700120\n" 
+"FFF724FCDFF8C8040078401EDFF8C0140870DFF8C00400\n" 
+"78012805D1DFF8B404406808B1F2F79AF9DFF8A8040078\n" 
+"401EDFF8A014087001BD80B5DFF894040078401CDFF88C\n" 
+"140870DFF888040078401CDFF8801408700220D2E780B5\n" 
+"DFF870040078401CDFF868140870DFF868040078401CDF\n" 
+"F8601408700320C1E780B5DFF850040078401CDFF84814\n" 
+"0870DFF844040078401CDFF83C1408700420B0E780B5DF\n" 
+"F82C040078401CDFF824140870DFF824040078401CDFF8\n" 
+"1C14087005209FE7DF03008080E200E070B586B0C0EB00\n" 
+"124C4800EB0214207C049003281CBF207C042814D0257C\n" 
+"E66B6B20F2F7E4FD68B1606C0390A06C02900196009504\n" 
+"9BDFF8DC23DFF8D4136B20F2F7E5FD36E029B9D4F8BC00\n" 
+"88B110F0A9FF0EE0DFF8B4038068C4F8B80011F1010F03\n" 
+"D04A2010F0A5FF02E04A20F9F7DFFE61694FF441720A60\n" 
+"8A691B4B1A438A6194F918104A09F19403E0558300DFF8\n" 
+"8C33012401F01F0104FA01F143F8221030B1800754BF6F\n" 
+"F00300002006B070BD07E0180000801C0000806FF00100\n" 
+"06B070BD6FF0040006B070BDE2FCFF7FC0EB0011DFF84C\n" 
+"0300EB011041690A69520852000A614069016941F00101\n" 
+"01617047000004030080C0EB0011DFF8242302EB011113\n" 
+"E0C0EB0012DFF8183303EB02125369D3F810C04FEA5C0C\n" 
+"4FEA4C0CC3F810C05269136943F0010313614A69526802\n" 
+"F0070202F00602042AE3D17047007A8900187A8900C46F\n" 
+"8600047A890000E100E0087A89000C7A8900107A890014\n" 
+"7A89006C6F8600947A8900FC798900D86F8600B87F8900\n" 
+"10B50446C4EB0410A84901EB001090F918004109914A01\n" 
+"2300F01F0003FA00F042F821002046FFF797FF2046FFF7\n" 
+"A8FFC4EB04109D4901EB0010406900210162C4EB041099\n" 
+"4901EB001090F918004109974A012300F01F0003FA00F0\n" 
+"42F8210010BD00007C6F860000600B4000620B4000700B\n" 
+"400A46D0F8B81000291CBF1046F9F7AABD70470A46D0F8\n" 
+"B81000291CBF1046F9F7A1BD704780498968C0F8B81070\n" 
+"47000000720B4000800B4000820B4080B5C0EB00117D4A\n" 
+"02EB011149690A69D20717D50A6A4B6A9A4211D102E04F\n" 
+"F480720A604A6CD201F9D402E04FF400720A608A6CD201\n" 
+"F9D40A6A496A8A4201D0012002BDF5F734F8002002BDC0\n" 
+"EB00116A4800EB01104069406800F00400704700000000\n" 
+"7C6F860000C00A4000D00A40E46F8600FCFFFF0010B5C0\n" 
+"EB00115F4A02EB011461690969C4F8C41061694969C4F8\n" 
+"C81061698969C4F8CC106169096AC4F8D0106169496AC4\n" 
+"F8D4106169896AC4F8D8106169C96AC4F8DC106169096B\n" 
+"C4F8E0106169096CC4F8E4106169496CC4F8E810616989\n" 
+"6CC4F8EC10FFF790FF411E8941C90FC4F8C01010BD0830\n" 
+"0C4000400B4000500B4000400C4010B5C0EB00113E4800\n" 
+"EB011460690069C00735D4D4F8C00090B3606900210161\n" 
+"6069D4F8C81041616069D4F8CC10816160690021016260\n" 
+"69D4F8D81081626069D4F8DC10C1626069D4F8E0100163\n" 
+"6069D4F8E4100164606900F015F8606900F01DF8606940\n" 
+"F2DF3101606069012141606069D4F8C41001610020C4F8\n" 
+"C00010BD4FF0FF3010BD02E04FF480710160416CC901F9\n" 
+"D41C4941647047000002E04FF400710160816CC901F9D4\n" 
+"18498164704780E100E010600B4084E100E018600B4084\n" 
+"E200E010620B4018620B4010700B4018700B4010720B40\n" 
+"18720B4010800B4018800B4010820B4018820B40868889\n" 
+"001C278800F06F860064708600F194037059830080E200\n" 
+"E0187A890000E100E0DE0300012100000130B490F91820\n" 
+"5309DFF89845012502F01F0205FA02F244F82320426889\n" 
+"180268914224BFB1FBF2F302FB1311416016E030B490F9\n" 
+"18205309DFF86845012502F01F0205FA02F244F8232082\n" 
+"6889180268914224BFB1FBF2F302FB1311816090F91800\n" 
+"4109DFF8402500F01F0005FA00F042F8210030BC70472D\n" 
+"E9F84304460D4691464FF0000860682168491E884204BF\n" 
+"A06800281FBF6068401CA168884242D06068814201D388\n" 
+"422CD121B92168091A4E1E002702E02268161A4F1EB919\n" 
+"894588BF89464E4588BF4E46B04632462946E368C018F4\n" 
+"F74AFC31462046FFF790FF7119B9EB060018BF002F1CD0\n" 
+"874288BF0746B8443A466068E368C018F4F736FC39460D\n" 
+"E0091A491E0DD0894588BF8946C8464A462946E368C018\n" 
+"F4F727FC49462046FFF76DFF4046BDE8F2832DE9F84304\n" 
+"468946904600266068A168884239D00546084626D22168\n" 
+"0F1AE919884588BF8846474588BF47463E463A46E16841\n" 
+"184846F4F703FC39462046FFF761FF07EB0900B8EB0701\n" 
+"18BF002D1BD08D4288BF0D46AE192A46A168E368C918F4\n" 
+"F7EEFB29460CE0291A0DD0884588BF884646464246E168\n" 
+"41184846F4F7E0FB41462046FFF73EFF3046BDE8F28338\n" 
+"B5DFF8EC03DFF8EC130160DFF8EC03006820F44050DFF8\n" 
+"E0130860086840F440500860DFF8CC0300210160DFF8C8\n" 
+"130160DFF8C403006820F44040DFF8BC130860086840F4\n" 
+"40400860DFF8A40300210160DFF8A0130160DFF8A00300\n" 
+"6820F44030DFF894130860086840F440300860DFF88003\n" 
+"00210160FFF704FB4FF4B461DFF87C03F4F7D5FA6021DF\n" 
+"F87403F4F7D0FA0024DFF86C53002028704FF0FF306860\n" 
+"012105F1080000F0E1F9641C1035062CF1D30024DFF844\n" 
+"5300202874012105F17C0000F0D3F9641CF035062CF4D3\n" 
+"002032BD70B5C0EB0013C84800EB0314D4F88C00401CC4\n" 
+"F88C00D4F890001018C4F89000207C032804BF607C0128\n" 
+"02D06FF0010070BD0420207494F918004309B64D012600\n" 
+"F01F0006FA00F045F823000020E063E064216421656264\n" 
+"A26494F918004109AE4A00F01F0006FA00F042F8210020\n" 
+"46FFF72CFB0321217470BD2DE9F047054600246869066A\n" 
+"406A010C01F00101320C02F00102514015D1801B75D0E8\n" 
+"650246B0B2D5F8B41041182846FFF79EFE0446D5F89410\n" 
+"4118C5F89410801928660122014640E0E969B2B2A1EB02\n" 
+"0887B217EB080959D0C5F85C904246B0B2D5F8B4104118\n" 
+"2846FFF781FE0446D5F89410F19403005D83004118C5F8\n" 
+"941010FA86F1EA69914206D14FF0000AF10306D44FF480\n" 
+"3A03E006F4803242EA010AA9EB0001404510D1002918BF\n" 
+"002F0CD03A46D5F8B4102846FFF75DFE0419D5F8941041\n" 
+"18C5F894108244C5F860A0012251466869FEF7ABFE95F9\n" 
+"18004109774A012300F01F0003FA00F042F821008CB140\n" 
+"212846FFF7E8FC286B20B122460021686B2B6B9847A86A\n" 
+"20B122460021E86AAB6A98472046BDE8F0872DE9F04182\n" 
+"B0884615461E46C0EB0011624A02EB0117396871B3D7F8\n" 
+"8C00401CC7F88C002A4641463846FFF771FE0446A0442D\n" 
+"1BD7F890002018C7F890000EB3AC421FD23846FFF7BBFC\n" 
+"16F1010F04D03146E02010F08AFB02E0E020F9F7C4FA2A\n" 
+"4641463846FFF753FE0419D7F890104018C7F8900005E0\n" 
+"00912A46414610F085FA04462046BDE8F68138B504460D\n" 
+"4660690069C10703D4616940F0010008616069406A616E\n" 
+"6066020C02F001020B0C03F001035A4008BF401A04D0E2\n" 
+"6989B2511A11FA80F0E16C4118E164D4F894104118C4F8\n" 
+"9410616C081A6064680708D5D4F8A000401CC4F8A000A0\n" 
+"6B08B1A06B8047E80507D5D4F8A400401CC4F8A4006069\n" 
+"FFF72AFDA80507D5D4F8A800401CC4F8A8006069FFF72B\n" 
+"FDA80732D5D4F8B000401CC4F8B000606F401C60670120\n" 
+"E06303202074606902210160816941F00201816194F918\n" 
+"004109164A012300F01F0003FA00F042F8210001212046\n" 
+"FFF71DFC206B20B1E26C0021606B236B9847A06A38B1E2\n" 
+"6C0021E06AA36A01B0BDE83040184731BD000080E100E0\n" 
+"00E100E0FC000B407347BCBCE8000B40187A8900B87F89\n" 
+"0080E200E0826942F004038361036803F0040303608261\n" 
+"0422026089B20163704710B5F1F74BFC0548416A026A40\n" 
+"788C1A08B9F1F73DFC204610BD00BF1C27880030B581B0\n" 
+"04460D46F1F738FC0548E560407820B901B0BDE83040F1\n" 
+"F729BC01B030BD00BF1C278800002200230CC008384160\n" 
+"704730B51A4D04462878401C81B02870F1F71BFC606840\n" 
+"1C6060012804BF204601F029F9687808B9F1F709FC01B0\n" 
+"BDE83040F1F74BBD10B50446F1F706FC606840B9202120\n" 
+"4601F02CF9F1F7FEFB60680028F6D06068401E60600448\n" 
+"4078002804BFBDE81040F1F7EABB10BD00001C27880070\n" 
+"B50A4E04463078401C0D463070F1F7E3FB6560707808B9\n" 
+"F1F7D8FB15B1204601F0F0F8F1F719FD002070BD1C2788\n" 
+"00F0B5114E81B00546306A00240F1800BFF1F7CAFB6868\n" 
+"48B1401E68600124707870B9F1F7BBFB204601B0F0BD3A\n" 
+"462021284610F05FFAB068F1940390608300C068381A01\n" 
+"28E7DA204601B0F0BD00BF1C27880010B509490A78521C\n" 
+"0A700024027A002A1EBF426889688A4202D1F8F755FD01\n" 
+"24F1F7DDFC204610BD1C2788000160426000E000BF0021\n" 
+"8160C1607047C1688068814201D10120704700207047C1\n" 
+"688268891A44BF426851184068401E814201D101207047\n" 
+"00207047C2680368D154C168491C4268914208BF0021C1\n" 
+"608268914206D18168491C4268914208BF002181607047\n" 
+"81680268895C8268521C43689A4208BF00228260084670\n" 
+"47000002480178491C0170F1F793BC1C27880030B581B0\n" 
+"0446F1F74BFB0A4D6878401C687008212046F9F77DFE68\n" 
+"78401E6870C0B220B901B0BDE83040F1F733BB01B030BD\n" 
+"00BF1C27880030B581B00546F1F72FFB0F4C6078401C60\n" 
+"70287938B94821284601F051F86879022805D102E06879\n" 
+"012801D0002028716078401E6070C0B220B901B0BDE830\n" 
+"40F1F70CBB01B030BD1C27880030B50E4D04462878401C\n" 
+"81B02870F1F705FB6878401C6870204610F0D3F9204610\n" 
+"F0FAF96878401E6870C0B208B9F1F7EFFA01B0BDE83040\n" 
+"F1F731BC1C278800026811430160704700BF0021016041\n" 
+"608160C160016141618161C161016241628162704738B5\n" 
+"04461546216000206060C4F81808FF2084F81C080020C4\n" 
+"F8200884F82408FF2084F82508002084F82608A4F82808\n" 
+"41F64A000021015504F5C0504B3010F0E1F904F5C0504C\n" 
+"30FFF7CCFF04F5C0507830FFF7C7FF41F6A40000210155\n" 
+"41F6A500FF21015541F6A8000021015141F6AC00015141\n" 
+"F6B000015141F6B400015541F6B500015541F6B8000151\n" 
+"41F6BC00015104F5C6500560204600F02CF8204632BD38\n" 
+"B5044614E041F6A8000559286A41F6A801085141F6B000\n" 
+"0059298A401A41F6B0010851686810F0BBF9284610F0B8\n" 
+"F941F6A80000590028E5D141F6B000005930B17522DFF8\n" 
+"F01A20680368DB699847204632BD034641F6A400C05C41\n" 
+"F6A501C95C401AC0B2401E05D07B22DFF8381C186800F0\n" 
+"1EBC5860C3F81808C3F82008FF2083F81C08002083F824\n" 
+"08FF2083F82508002083F82608A3F8280841F64A000021\n" 
+"C15441F6A500FF21C15441F6A4000021C15441F6B400C1\n" 
+"5470471CB5044620680168C968884741F6B801085141F6\n" 
+"BC000059401C41F6BC0108510020ADF8040008598DF805\n" 
+"0000200090022301AA4FF44071204600F027F813BD10B5\n" 
+"82B00446B2F5006FC8BFAE2204DC41F6B500005D38B1AF\n" 
+"22DFF88C1B20680368DB6902B00EE0009013460A460021\n" 
+"204600F00BF841F65C00F19403206483000059401C41F6\n" 
+"5C01085113BDBDE8104018472DE9F44F82B00446884699\n" 
+"46B9F5006F07DDB822DFF8481B20680368DB6998479CE3\n" 
+"4FEA19208DF8010041F64A0010F804A00AF1010101559D\n" 
+"F8010008B148F04008B8F1FF0FC8BF48F0800804F5C050\n" 
+"4B3010F000F941F67800005941F64C010959884218BF48\n" 
+"F0200841F67C00005941F650010959884218BF48F01008\n" 
+"B02084F82A08002084F82B088DF803A001230DF1030204\n" 
+"F62C01204600F0F7F8861C5FFA89F104F5C0504B3010F0\n" 
+"BAF88DF8029001230DF10202301900F62A01204600F0E4\n" 
+"F885195FFA88F104F5C0504B3010F0A7F88DF800800123\n" 
+"00AA281900F62A01204600F0D2F847190025B8F1000F1E\n" 
+"D00120A84010EA080616D0012E4CD194F81CB8594604F5\n" 
+"C0504B3010F089F88DF800B0012300AA381900F62A0120\n" 
+"4600F0B4F8C71928EA06086D1C102DDDD34A46029904F5\n" 
+"C0504B3010F079F84B46029A381900F62A01204600F09F\n" 
+"F8C51904F5C0504B300078C046010941EA00108DF80000\n" 
+"012300AA281900F62A01204600F08CF828440119B02281\n" 
+"F82A28401C0119012281F82A28421C04F62A0120680368\n" 
+"1B6998475046E1E2022E0BD19DF8301004F5C0504B3010\n" 
+"F03BF89DF830008DF80000AEE7042E08BF94F825B8A1D0\n" 
+"082E08BF94F825B89CD0102E10D141F65000005941F67C\n" 
+"010959A0EB010B41F67C0041F65001095901515FFA8BF1\n" 
+"8AE7202E14D141F64C00005941F678010959A0EB010BBB\n" 
+"F1FF0F88BF4FF0FF0B0BEB010041F6780108515FFA8BF1\n" 
+"73E7402E0BD19DF8011004F5C0504B300FF0F9FF9DF801\n" 
+"008DF800006CE7802E08BF4FEA182B3FF45FAFB6F5807F\n" 
+"09D1002104F5C0504B300FF0E5FF00208DF8000059E7B6\n" 
+"F5007F09D1002104F5C0504B300FF0D8FF00208DF80000\n" 
+"4CE740F22512DFF8DC1820680368DB69984751E7002003\n" 
+"B9704710B41478B02C03D14454401C03240CE0112C04D1\n" 
+"B0244454401C042405E0132C03D1B0244454401C052444\n" 
+"54401C521C5B1EE6D110BC704782B040F29512DFF88C18\n" 
+"00680368DB6902B0184769E0F8B5044620680168C96888\n" 
+"4706464FF47A7541F6A800075941F6B500005DB8B141F6\n" 
+"B8000059301AB0F57A7F0DD341F6BC0000590B2804D320\n" 
+"6801684969884741E02046FFF726FE3DE0C0F57A753AE0\n" 
+"17B94FF0FF3536E0F868301AB0F57A7F01D2397A39B3B8\n" 
+"780A2804D1206801684969884724E041F674000059B978\n" 
+"88423CBF41F674000151B878401CB870FE60387800903B\n" 
+"8A7A6802212046FFF7F19403B067830040FE7870002038\n" 
+"7241F66C000059401C41F66C01085104E0C0F57A70A842\n" 
+"D8BF05463F6A002FC8D12946206802689268BDE8F84010\n" 
+"47F8B504460D461646002710E0B0280ED10120606041F6\n" 
+"4C000059D4F82018491E081841F64C0108510120C4F820\n" 
+"08BFB2B74200F08680785D7F1CD4F82018491CC4F82018\n" 
+"112818BF1328F0D061680029DCD0022914D002D3032921\n" 
+"D0E7E728B9022060600020C4F81808E0E7B02802D00020\n" 
+"6060DBE741F64C000059801CD0E7B02808BF0320F4D0D4\n" 
+"F8181840F60E029142EDD24A1CC4F8182809190872C6E7\n" 
+"012808D1204600F04DF80028E0D00020C4F82008DCE703\n" 
+"280DD1D4F8180840F60E018842D4D2411CC4F818180019\n" 
+"B02101720220CDE704280DD1D4F8180840F60E018842C4\n" 
+"D2411CC4F818180019112101720220BDE705280DD1D4F8\n" 
+"180840F60E018842B4D2411CC4F8181800191321017202\n" 
+"20ADE780B9022060600020C4F8180841F64C000059D4F8\n" 
+"2018891E081841F64C010851022077E7B02898D1012097\n" 
+"E7F1BD2DE9F04F83B0044601A80FF08AFED4F818180429\n" 
+"C0F026818A1E04F109010FF08BFE010941EA0010D4F818\n" 
+"180919C979C0B2884240F0168104F1080A1AF8010B8DF8\n" 
+"01001AF8010B1AF8011BD4F81828161F002200238DF800\n" 
+"3093469046964691461546F1B1B6B2002E00F0FB800127\n" 
+"AF400F401FFA87FCBCF1000F0BD021EA0C011AF8017B76\n" 
+"1EBCF1010F39D184F824784FF0010E6D1C102DE3D389B2\n" 
+"002940F0E080B6B2B04240F0DC8094F81C08401CC0B29D\n" 
+"F80110814211D0002B02BF41F6B501095D00290AD141F6\n" 
+"500109599DF80130181AC0B2401841F6500108519DF801\n" 
+"0084F81C08BEF1000F01D0002E4ED004F5C3500068401C\n" 
+"04F5C35108604DE0BCF1020F03D18DF800700122C2E7BC\n" 
+"F1040F08BF4FF0010BBCD0BCF1080F08BF4FF00108B6D0\n" 
+"BCF1100F0AD141F6540C5CF804C05CFA87FC41F6540747\n" 
+"F804C0A8E7BCF1200F08D141F6580C5CF804C05CFA87FC\n" 
+"41F65807F0E7BCF1400F08BF40EA072096D0BCF1800F08\n" 
+"BF41EA072190D0BCF5807F08BF4FF001098AD0BCF5007F\n" 
+"08BF012385D04CEA010185E741F664000059401C41F664\n" 
+"01085122B9751EAD41E843C50F38E001259DF8000094F8\n" 
+"251888420BD101A80078C04694F82618884202BFB4F828\n" 
+"08864205271CD09DF8000094F82518491CC9B2884213D1\n" 
+"0527A4F828689DF8000084F8250801A80078C04684F826\n" 
+"0841F670000059401C41F67001085101E0092700250020\n" 
+"0090002302463946F19403406B83002046FFF776FCBBF1\n" 
+"000F06D040F2B332B34920680368DB699847B8F1000F06\n" 
+"D040F20942AE4920680368DB69984765B1B9F1000F3246\n" 
+"514603D0204600F012F803E0206803689B699847012000\n" 
+"E0002003B0BDE8F08FDFF8F81300680368DB6918470000\n" 
+"2DE9F04F93B0044612B940F21142A3E011F8010B521E05\n" 
+"2800F2CC80DFE800F0030E4B5498A6501E80B210B140F2\n" 
+"1C4292E00978204600F0C0F8BBE092B204A800F052FA00\n" 
+"F05CFA804604A800F058FA814604A800F054FA824604A8\n" 
+"00F050FA054604A800F04CFA064604A800F048FA074604\n" 
+"A800F044FA834604A8007EC04618B904A800F01DFA40B1\n" 
+"40F22C427B4920680368DB69984704A889E0CDF80CB002\n" 
+"970196009553464A464146204600F0E7F804A87CE092B2\n" 
+"12B140F233424BE0204600F010F975E092B200A800F00C\n" 
+"FA07A8FFF7D9FA00A800F034FA079000A800F030FA0890\n" 
+"00A800F02CFA099000A800F028FA0A9000A800F024FA0B\n" 
+"9000A800F020FA0C9000A800F01CFA0D9000A800F018FA\n" 
+"0E9000A800F014FA0F9000A800F010FA109000A800F00C\n" 
+"FA119000A8007EC04620B900A800F0C3F9002836D040F2\n" 
+"49424D4920680368DB6998472EE092B23AB14FF48A6248\n" 
+"4920680368DB69984727E0204600F043F923E092B200A8\n" 
+"00F0BAF900F0D1F900A800F0CEF900A800F0CBF900A800\n" 
+"F0C8F900A800F0C5F900A8007EC04618B900A800F092F9\n" 
+"30B140F25F42354920680368DB69984700A8C046C04613\n" 
+"B0BDE8F08F30B5ADF62C0D04460D46072208A901A800F0\n" 
+"F3F9294600F0FDF994F81C1801A800F0F8F994F8241801\n" 
+"A800F0F3F994F8251801A800F0EEF941F64A00015D01A8\n" 
+"00F0E8F941F6A400015D01A800F0E2F941F6A500015D01\n" 
+"A800F0DCF901A8007EC04638B140F28642724920680368\n" 
+"DB69984725E001A800F042F9054601A88068C046014601\n" 
+"208DF82800ADB2B5F5006F07D340F27142664920680368\n" 
+"DB6998470EE02A460DF12900F3F773FA002000906B1C9B\n" 
+"B20AAA4FF480712046FFF70AFB0CE14C6D860010B50446\n" 
+"41F6B500005D58B341F6BC000059814226D141F64A0091\n" 
+"1C015541F6A4010298401C0855085D401E41F6A5010855\n" 
+"039884F81C080498401E84F82508002084F82608A4F828\n" 
+"0841F6B500002101552046FFF74BFC20680168096ABDE8\n" 
+"1040084710BD30B5ADF64C0D04462C220DF5026101A800\n" 
+"F05DF941F64C01095900F086F941F65000015901A800F0\n" 
+"80F941F65400015901A800F07AF941F65800015901A800\n" 
+"F074F941F65C00F19403D06E8300015901A800F06EF904\n" 
+"F5C350016801A800F068F941F66400015901A800F062F9\n" 
+"41F66800015901A800F05CF941F66C00015901A800F056\n" 
+"F941F67000015901A800F050F941F67400015901A800F0\n" 
+"4AF901A8007EC04638B140F2B942184920680368DB6998\n" 
+"4725E001A800F08FF8054601A88068C046014603208DF8\n" 
+"2000ADB2B5F5006F07D340F271420D4920680368DB6998\n" 
+"470EE02A460DF12100F3F7C0F9002000906B1C9BB208AA\n" 
+"4FF480712046FFF757FA01A8C046C0460DF64C0D30BD4C\n" 
+"6D860030B5ADF62C0D04460A2208A901A800F0D9F84FF4\n" 
+"006100F0EFF84FF4006101A800F0EAF84FF47A7101A800\n" 
+"F0E5F80A2101A800F0E1F8962101A800F0DDF801A8007E\n" 
+"C04638B140F2CE420E4920680368DB69984727E001A800\n" 
+"F036F8054601A88068C046014605208DF82C00ADB2B5F5\n" 
+"006F09D340F27142024920680368DB69984710E04C6D86\n" 
+"002A460DF12D00F3F765F9002000906B1C9BB20BAA4FF4\n" 
+"80712046FFF7FCF901A8C046C0460DF62C0D30BD000000\n" 
+"BF154B0360002343608160C260436103767047416901B1\n" 
+"10E040687047416901B10BE0C1684068081A7047002141\n" 
+"60416101767047012101767047012101760020704710B5\n" 
+"0446FFF7DAFF014869E000000000C46C86007C6C860041\n" 
+"6921B9C1684268521C914200D2E7E7416842608068085C\n" 
+"7047416921B9C1684268921C914200D2DAE741684A1C42\n" 
+"608268895C4268531C43608068105C41EA002070474169\n" 
+"21B9C1684268121D914200D2C5E741684A1C4260826889\n" 
+"5C4268531C43608368D25C41EA02214268531C43608368\n" 
+"D25C41EA02414268531C43608068105C41EA0060704742\n" 
+"688368D21843692BB9C368D0F804C08C44634502D20121\n" 
+"017602E04368C918416010467047000000002DE9104004\n" 
+"46FFF773FF014802E000BF0C6D86002060204610BD4269\n" 
+"22B9C26843685B1C9A4200D27DE7426843608068115470\n" 
+"47426922B9C26843689B1C9A4200D270E74268531C4360\n" 
+"8368D1544268531C43608068090A11547047426922B9C2\n" 
+"6843681B1D9A4200D25CE74268531C43608368D1544268\n" 
+"531C436083684FEA112C02F803C04268531C436083684F\n" 
+"EA114C02F803C04268531C43608068090E1154704738B5\n" 
+"04461546606920B9E0686268AA18904202D20120207631\n" 
+"BD2A466068A368C018F3F767F860682818606031BD0000\n" 
+"10B5044602E0C068F0F74BFCF0F7E2FA20680028F7D104\n" 
+"484078002804BFBDE81040F0F7D1BA10BD1C27880070B5\n" 
+"0D4E054684B0F1940360728300B06802950C4601950390\n" 
+"F0F7C9FA2868009000A82860009808B100A9416000A9B0\n" 
+"6881600474F0F7EAFC04B070BD00BF1C278800A9480068\n" 
+"A74909680909C0F3011040EA01107047A5487047A54800\n" 
+"687047A4484068704770B504460D461646F0F79EFAA048\n" 
+"4078401C9F4948702068B04306EA0501084320609B4840\n" 
+"78401E994948704878002804BFBDE87040F0F781BA70BD\n" 
+"F8B51446B0F5002F84BFA0F50002B2F5402F2DD9012C0C\n" 
+"D0022C14D10022491C022311F8015945EA02225B1EF9D1\n" 
+"028028E00022012311F8015945EA02225B1EF9D102701E\n" 
+"E0042C1CDB621004EB927292100023CD1C042615F80179\n" 
+"47EA0323761EF9D140F8043B091D521E0AD0F0E7A0F500\n" 
+"02B2F5402F03D82246F2F7BEFF00E000242046F2BD38B5\n" 
+"034608461446B3F5002F84BFA3F50001B1F5402F1FD901\n" 
+"2C08D0022C0DD1198800F8011B090A521EFAD117E01978\n" 
+"00F8011B0021521EFAD110E0042C0ED3A1081A68042500\n" 
+"F8012B120A6D1EFAD11B1D491E03D0F4E71946F2F78BFF\n" 
+"204632BD2DE9F04104460D19E01C4FEA9008AF080026A5\n" 
+"4209D3A4F50000B0F5402F9CBFA5F50000B0F5402F0BD9\n" 
+"0B46224640F209114E48EDF74FFD03E014F8010B56FA80\n" 
+"F6B4EB880FF8D3B4EB870F05D254F8040B8619B4EB870F\n" 
+"F9D3AC423CBF14F8010B56FA80F6F8D33046BDE8F08138\n" 
+"B504460D462819A04209D3A4F50001B1F5402F9CBFA0F5\n" 
+"0000B0F5402F06D92B4622464FF495713548EDF71DFD29\n" 
+"462046BDE834400FF0CDB8EDF772BA10B5044621460020\n" 
+"EDF74DFAF0F7B3F92B484078401C29494870EDF736FAED\n" 
+"F7F8F9EDF7F8F9EDF7F8F92046EDF7F1FB23484078401E\n" 
+"214948704878002804BFBDE81040F0F791B910BD38B528\n" 
+"B1EDF767FA0446EDF767FA04E0EDF767FA0446EDF768FA\n" 
+"05464FF47A70EDF742FAF0F782F912484078401C114948\n" 
+"70EDF7C9F9EDF7C9F9EDF7C9F9EDF707FA29462046EDF7\n" 
+"C8FB0A484078401E084948704878002804BFBDE83140F0\n" 
+"F75FB931BDF00F0B4000020E405A530300547689001C27\n" 
+"8800246E860010B50446084611461A46029BA04710BD00\n" 
+"281CBF1520EFF741BA9948006810F0030F07D197480068\n" 
+"10F0030F04BF1520EFF75FBA7047F8B504460E4617461D\n" 
+"46022CB8BF102F02DB4FF0FF30F2BD0120FFF7DEFFC4EB\n" 
+"C4008B4901EB80004661077606990160380240EA860040\n" 
+"EAC530002C14BF83498249086014BF3D203C20012100F0\n" 
+"1F0001FA00F0804908600020F2BD38B5022802DB4FF0FF\n" 
+"3032BDC0EBF19403F0758300C002794B03EB8202002814\n" 
+"BF754B744B1B68774C2340002814BF3D243C2439BB20B1\n" 
+"3D2023F480316E4B03E03C2023F480316B4B1960012100\n" 
+"F01F0001FA00F06C490860107C00F00300012814BF6FF0\n" 
+"070454686248006810F0030F02BF6148006810F0030F1C\n" 
+"D11520EFF7F2F918E0012504F01F0405FA04F45F4D2C60\n" 
+"43F48054002814BF574D554D2C6000245460547641F480\n" 
+"311943002814BF514850480160204632BD4FF048725143\n" 
+"B1FBF0F0704738B50400C4EBC4004B4901EB800503D04E\n" 
+"4800684E4902E04E4800684E490968296195F9191011B9\n" 
+"A860E86009E0A968884238BFA86004D3E968814238BF01\n" 
+"46E960687E401C687695F91900042827D1E868A9680818\n" 
+"40086860E868A968401A642148436968B0FBF1F0032815\n" 
+"DA00212046FFF765FF2868002844D0287C00F003000128\n" 
+"14BF6FF0070100216A6820462B6801B0BDE83040184700\n" 
+"2068606876002C14BF23482148006820F4803014BF2049\n" 
+"1E49086014BF1E481C48006820F4706014BF1B49194908\n" 
+"6014BF19481748006840F4805014BF16491449086014BF\n" 
+"14481248006820F4805014BF11490F49086014BF0F480D\n" 
+"48006840F4803014BF0C490A49086031BD80B50020FFF7\n" 
+"78FF0A484FF08051016001BD80B50120FFF76FFF05484F\n" 
+"F00051016001BD000098000B40A4000B400C88890084E2\n" 
+"00E0FCEFFFFF84E100E004E100E09C000B40A0000B4090\n" 
+"000B4094000B4000281CBF012802280CD0072819D00828\n" 
+"0DD00C280DD013280DD018280DD021280DD011E000230B\n" 
+"601070002070470320F8E70420F6E70520F4E70620F2E7\n" 
+"0720F0E704200123EEE74FF0FF307047000010B504460A\n" 
+"480078401C09490870084600214170EFF7C8FF06480470\n" 
+"2246CF210548EDF7D7FA034800780028FBD110BD1C2788\n" 
+"0083888900586B86002DE9F04FA1B0824602AE00201746\n" 
+"1D46029170620DF144080AE017F8011B0298D047029000\n" 
+"2800F0DA82706A401C7062387808B9706AD4E22528EED1\n" 
+"0020F06030617061B061F061306201E040F0010017F801\n" 
+"1F2029F9D023290DD02B2904D02D2906D030290AD00CE0\n" 
+"40F0020080B2EEE740F00400FAE740F00800F7E740F010\n" 
+"00F4E72A290DD129680A1D2A600968F162002904D54942\n" 
+"40F00400F16280B27F1C13E00021F1620BE0F16A6FF000\n" 
+"43994205D001EB810302EB43013039F1627F1C3A78A2F1\n" 
+"30010A29EED339782E2903D04FF0FF31B1621EE017F801\n" 
+"1F2A2906D129680A1D2A607F1C0968B16213E00021B162\n" 
+"0BE0B16AF19403807983006FF00043994205D001EB8103\n" 
+"02EB43013039B1627F1C3A78A2F130010A29EED330860F\n" 
+"F6604039780EF074FE08B117F8010B8DF83A009DF83A00\n" 
+"682802BF39786829622005D06C2804BF38786C2803D171\n" 
+"208DF83A007F1C11A8B0603978B1F1250029D01C3800F0\n" 
+"C080001F022840F2BC80133800F0E480093800F0B68080\n" 
+"1E00F07781401E00F02081401E022840F2AC80001F00F0\n" 
+"1981401F7BD0401E00F0CF80401E22D0C01E0BD0801E00\n" 
+"F0C880C01E00F0C58064E1F068411CF160252169E12868\n" 
+"011D29600068B26A7060002A02D5F7F77DFC07E000210E\n" 
+"F027FE00281ABF7168401AB06A306156E12868011D2960\n" 
+"00210068CDE900014FF03C0E11A87060DDE9000111B908\n" 
+"B9B26ACAB10206120FA0EB02123032AEF10103D2B29E46\n" 
+"3A2AA8BF2732000903F8082040EA0170090908BF002804\n" 
+"D0726811AB73449A42E5D311A971447160CEF13C00B16A\n" 
+"3061884207DA081AB0614FF6EF71308E084030861AE100\n" 
+"2940F1188196F8301001F01401102940F01181F16AF268\n" 
+"891AB269891AA1EB000EBEF1010FC0F20681C6F818E002\n" 
+"E19DF83A00622818D0682806D06A280BD06C2819D07128\n" 
+"07D016E02868011D29600068716A0180EEE02A68101D28\n" 
+"601268706AC117C2E90001E5E02868011D29600068716A\n" 
+"0170DEE02868011D29600068716A0160D7E02868C01D20\n" 
+"F00700286000F108022A60D0E90023CDE90023002B04D5\n" 
+"F068421CF2602D220DE0308E820704D5F068421CF2602B\n" 
+"2205E0C00705D5F068421CF260202200F80820F06811AA\n" 
+"8018706000A800F0E3F9ACE09DF83A006C2808BF2A6811\n" 
+"D0712808BF2A6802D02A686A280AD1D21D22F007022A60\n" 
+"144604F108022A60D4E9002303E0131D2B6000231268CD\n" 
+"E90023682808BF92B207D0622808BFD2B203D0742818BF\n" 
+"7A2802D10023CDE9002396F8300000075FD5DDE9002300\n" 
+"2B08BF002A59D041F02000782855D1F068302200F80820\n" 
+"401C421CF26000F808104BE09DF83A0062280CD0682810\n" 
+"D06A281AD06C2823D0712816D074281FD07A280CD01CE0\n" 
+"2868021D2A6090F900201AE02868021D2A60B0F9002014\n" 
+"E02868021D2A60002302680FE02868C01D20F007002860\n" 
+"00F108022A60D0E9002304E02868021D2A600268D317CD\n" 
+"E90023002B04DAF068421CF2602D220DE0308E820704D5\n" 
+"F068421CF2602B2205E0C00705D5F068421CF260202200\n" 
+"F80820F06811AA8018706000A800F0C0F813E0F068411C\n" 
+"F16029680A1D2A60096809E0F068421CF260252200F808\n" 
+"2021B1F19403107D8300F068421CF26000F80810F06AF1\n" 
+"68401AB169401A3169401AF169401A7169401A316AA0EB\n" 
+"010996F830007F1C400710D420208DF84000002409E001\n" 
+"2310AA00A9504600F040FC002840F08580641C4C45F3DB\n" 
+"F4680DF1440B0AE01BF8011B0298D0470290002876D070\n" 
+"6A401C7062641E002CF2D130208DF840004FF0000BB469\n" 
+"09E0012310AA00A9504600F01CFC002861D10BF1010BA3\n" 
+"45F3DB3469D6F804B00AE01BF8011B0298D04702900028\n" 
+"52D0706A401C7062641E002CF2D130208DF840004FF000\n" 
+"0BF46909E0012310AA00A9504600F0F8FB00283DD10BF1\n" 
+"010BA345F3DB30697168746900EB010B09E01BF8011B02\n" 
+"98D047029068B3706A401C7062641E002CF3D130208DF8\n" 
+"40004FF0000B346A08E0012310AA00A9504600F0D3FBC8\n" 
+"B90BF1010BA345F4DB96F8300040077FF53AAD20208DF8\n" 
+"4000002400E0641C4C45BFF631AD012310AA00A9504600\n" 
+"F0BAFB0028F3D04FF0FF3021B0BDE8F08F2DE9FA470646\n" 
+"82B035690A466F2A08BF082705D041F02000782814BF0A\n" 
+"271027D6E900013C2480468946642A18BF692A05D10029\n" 
+"03DAD8F1000869EB4909B9F1000F08BFB8F1000F0CD130\n" 
+"6B50B9082F3BD196F83800000737D530203B2485F83B00\n" 
+"32E0CDE90089FB17404649463A46F0F74AFAB846A8FB00\n" 
+"23DDE90089A8EB02023032A4F1010AD2B254463A2A03DB\n" 
+"9DF80830513B9A180AF8052080465FEA010908BFB8F100\n" 
+"0F03D0F06861198842D8D3082F09D196F83800000705D5\n" 
+"605D302802D0641E30206055C4F13C00B0616119F16031\n" 
+"6B884207DA081A30624FF6EF71308F0840308710E00029\n" 
+"0ED596F8381001F01401102908D1716B7269891A326A89\n" 
+"1A081A0128A8BF306204B0BDE8F08700002DE9F24F0446\n" 
+"8EB0D4E90001CDE9020104AE9DF8380040F02000009061\n" 
+"280AD0206B002848BF062004D404BF0098672801D10120\n" 
+"20636168C1F30A5040F2FF7290421CD1080304BF206800\n" 
+"2809D10320A0619DF8380061381A2836D30FF2346108E0\n" 
+"0320A0619DF8380061381A2829D30FF21861E0680322F2\n" 
+"F778F9B5E1012816DA20460EF07CFB012811DB00270020\n" 
+"0099612920D1E168302201F8012B4A1CE2609DF8382061\n" 
+"2A0CBF782258220FE0626840F2FE3161F31E52471A6260\n" 
+"4FF0FF30E5E70FF2C051D4E70FF2C451D1E70A70616989\n" 
+"1C616110B9002500277BE10098612840F09680206B0028\n" 
+"4CBF2125451CDDE902012DB26E1CD4E90089002200230E\n" 
+"F05FFB3ABF89F00040CDE90280CDE902893F1F8DF81020\n" 
+"0DF1F19403A0808300110801E000F20708012E32DBDDE9\n" 
+"0201002200230EF060FB2BD21C2102A80EF073FBDDE902\n" 
+"010EF0F9FBF61F8146012E09DB01F0F7FA02460B46DDE9\n" 
+"02010EF019FCCDE9020108F20700072105E009F00F0200\n" 
+"F8012D4FEA2919B9F1010F01DB491EF4D5491E5CBF0022\n" 
+"00F8012DF9D5C8E70DF11100A8EB00010DF11106A942B8\n" 
+"BF0D462DB228002FD4884206DA04A9411849780829A8BF\n" 
+"0F2100DA002104AA821800E06D1E12F80139401E8B42F9\n" 
+"D00F2904D104A941184A78521C4A70002802D504AE6D1C\n" 
+"3F1D2DB2681E0DD481190A783032D2B23A2A03DB9DF838\n" 
+"303A3B9A1801F80129401EF2D5206B002840F1E580681E\n" 
+"2063E1E0DDE90201002200230EF0D2FA3CBF81F00041CD\n" 
+"E902013FB247F2975078434849DFF820B190FBF1F73FB2\n" 
+"C7F107069246012E19DBDDE90289F00707D552465B4640\n" 
+"46494601F08AFA8046894676105046594652465B4601F0\n" 
+"81FA82468B46002EEAD1CDE9028921E076429046DFF8D8\n" 
+"9012E0F00707D552465B464046494601F06DFA80468946\n" 
+"76105046594652465B4601F064FA82468B46002EEAD1DD\n" 
+"E9020142464B460EF02AFCCDE90201009866280CBF07F1\n" 
+"0A000620216B4518142DA8BF132530208DF810000DF111\n" 
+"06DFF87C90012D3DDBDDE902010EF03AFB06F108010422\n" 
+"0A23B0FBF3F303EB8306A0EB4600303001F8010D0A20B3\n" 
+"FBF0F000EB8006A3EB4603303301F8013D521EE9D1083D\n" 
+"01F10806012DDBDBDDE902010EF018FB01F00EFA02460B\n" 
+"46DDE902010EF026FB00224B4601F012FACDE90201CAE7\n" 
+"00BFA0860100000024400000F03F84D797410DF1110030\n" 
+"1A0DF1110602E0401E7F1E761C31783029F9D000996629\n" 
+"02D13FB2791C03E065290CBF01210021226B8D182DB2A8\n" 
+"42B8BF05462DB229001AD4814204DA885D3528A8BF3920\n" 
+"00DA30208A19521E00E06D1E12F80139491E8342F9D039\n" 
+"2802D1885D401C8855002902D5761E6D1C7F1C3FB29DF8\n" 
+"381000972BB23246204600F003F80FB0BDE8F08F2DE9F0\n" 
+"43054685B01E46D5F8308089461746012E02DA01260FF2\n" 
+"8C2749F02000BDF93040662808BF641C17D0672840F081\n" 
+"8014F1040FC0F28380444580F2808095F83800641C0007\n" 
+"02D44645B8BFB04624B2B8EB040848BF4FF00008E868A9\n" 
+"6924B2012C25DA30234A1C0B54B8F1010F03DA95F83810\n" 
+"090702D52E211154521CAA6118EB040FB8BFC8F1000424\n" 
+"B26142A0446962B045B8BF464636B2EE613246AB693946\n" 
+"1818F1F769FFA8EB0600A862C0E00818A64218DA324639\n" 
+"46F1940330848300F1F75EFFA9697118A961A01B6862B8\n" 
+"F1010F03DA95F83800000705D5E8682E220A54E869401C\n" 
+"E861C5F82880A4E022463946F1F745FFA8692018361BB8\n" 
+"F1010F03DA95F83810090703D5E9682E224254401C36B2\n" 
+"A861B045B8BF4646EB6836B23246E119C018F1F72BFFA8\n" 
+"693018A861A8EB060068627FE0B9F1610F16D14FF07009\n" 
+"18E0464504DA95F83810090758BFB046B8F1010848BF4F\n" 
+"F00008B9F1670F14BF4FF045094FF0650904E0B9F1410F\n" 
+"08BF4FF05009A969E86817F8013B0B544A1CB8F1010F05\n" 
+"DA95F83810090758BFAA6117D52E211154531CAB61B8F1\n" 
+"010F10DB761E36B2B045B8BF464636B2324639461818F1\n" 
+"F7E4FEA8693018A861A8EB06006862A869E96847182000\n" 
+"07F8019B03D42B2007F8010B03E02D2107F8011B644200\n" 
+"260DF1080808E00A2200A80EF0BCFB019808F8010B761C\n" 
+"009C21B20129F3DA022E06DA49F02000652804BF302007\n" 
+"F8010B4EB9302007F8010B07E0761E02A8305C303007F8\n" 
+"010B012EF7DAA869E9684018381AE86195F8380000F014\n" 
+"0010280DD16869A9690818696A0818E9690818A96A0818\n" 
+"696B8842BCBF081A286205B0BDE8F083F8B504460D4616\n" 
+"461F46002004E0E86A401CE8627F1E002047B116F8011B\n" 
+"A868A047A8600028F2D14FF0FF30F2BD686A6C747A4C00\n" 
+"006E616E004E414E00696E6600494E46003000EDF7F3BB\n" 
+"EDF7EABB000062F30F2262F31F42401810F0030308D0C9\n" 
+"1A1FD3DB0748BF00F8012D28BF20F8022D130030B41446\n" 
+"1546103928BF20E93C00FAD8490728BF20E90C0048BF40\n" 
+"F8042D890028BF20F8022D48BF00F8012D30BC7047C918\n" 
+"18BF00F8012DCB0728BF00F8012D70470000F0B5204C05\n" 
+"462078401C81B0207005B9A5681D4E77682FB179682846\n" 
+"88473F68002FF9D1316808001CBF2846884728460EF012\n" 
+"FBEFF79CF8A86810B12846EFF7F5F92846EFF7BBFA6078\n" 
+"08B9EFF78AF82069854204BFE0682061A068854207D1EF\n" 
+"F786F8A068002101602046EFF763F8607808B9EFF776F8\n" 
+"01B0BDE8F040EFF7B8B900001C278800D47589000CB480\n" 
+"B502AA0828A8BF072040F08000EFF72AFD01BC5DF80CFB\n" 
+"80B5EFF78BFD0120EFF763FDEFF7FDFC40F07F00EFF7F3\n" 
+"FCEFF7F4FC40F48030BDE80240EFF7E8BCECF715BBECF7\n" 
+"5DBB000070B5114D04462878401C2870EFF744F8A86841\n" 
+"69214205D18461082101742846EFF71DF8EFF738F8A868\n" 
+"416904EA0106A14341612878401E2870687808B9EFF725\n" 
+"F8304670BD00BF1C27880010B50024F7F78CFD002800D0\n" 
+"F19403C08783000124204610BD10B5040010000A000100\n" 
+"2000FFF729FF200010BD0000506002604160086070470A\n" 
+"68F8E748600160704701684068F9E7F8B50600DFF80C59\n" 
+"02D505F15C00F2BD05F15C040020696F00E0096805F174\n" 
+"02914204D00C46A2689642F6D10120002832D1E86FD0F8\n" 
+"80701820FCF7B4F80446A660002F05D0B74203D2B6FBF7\n" 
+"F0784300E03046E060002F02D0B74200D23E4626610020\n" 
+"2075DFF8AC683078401C3070EEF7CBFF7078401C707005\n" 
+"F174012046FFF7B6FF7078401E7070C0B2002801D1EEF7\n" 
+"B5FFEFF7FAF82046F2BD38B5044694F9140000281BD1DF\n" 
+"F86C582878401C2870EEF7AAFF6878401C68702046FFF7\n" 
+"9CFF2046FCF787F86878401E6870C0B2002801D1EEF793\n" 
+"FFBDE83140EFF7D6B831BDF8B5044608466FF00045FFF7\n" 
+"88FF064694F9050094F90410814214D1C01C8000FCF750\n" 
+"F8074694F90500012807DB820021683846FCF770F82068\n" 
+"FCF75BF827606079C01C607194F90400411C2171216841\n" 
+"F82060DFF8E007864202D0307D401C3075002008E02168\n" 
+"51F820108A68954201DB1546A160401C94F904108842F2\n" 
+"DBF1BDF8B504466FF00046DFF8A42702F15C0502F15C00\n" 
+"4FF0FF33002704E0664501DB664675467F1C94F904C067\n" 
+"450DDAD4F800C05CF827E0DEF808C0002BEED58C45ECD1\n" 
+"70463B465BB2ECE7002B11D4BCF1010F0EDB06E0216801\n" 
+"EB8306766841F823605B1C94F904104E1EB342F3DB491E\n" 
+"217102F15C01884204D0017D491E0175FFF75AFFA560F1\n" 
+"BD10B4C26A836B406C9C68002C02D56FF0004300E01B69\n" 
+"8468002C02D56FF0004000E00069984200DD1846D26851\n" 
+"43884201DB012000E0002010BC704738B5DFF8E416CA6F\n" 
+"D36E012490F90850AC402343D36601F6D811FFF7D5FE01\n" 
+"2032BD10B5DFF8C416C96FCA6E012390F90840A3409A43\n" 
+"CA66FFF7CBFE012010BD01207047F8B5044615461E4604\n" 
+"F12400FFF733FF06EB460004EB8007294607F13000FFF7\n" 
+"2AFF97F9340000903346627A94F908100FF28060F7F78F\n" 
+"FCF1BDF8B5044615461E4604F12400FFF757FF06EB4600\n" 
+"04EB8007294607F13000FFF74EFF97F934000090334662\n" 
+"7A94F908100FF25460F7F772FCF1BDC16A8A68012A09DB\n" 
+"0969012906DA006D002801D50020704702207047002070\n" 
+"4701EB410200EB8201896B8A68012A09DB0969012906DA\n" 
+"006D002801D5002070470220704700207047002900D5D8\n" 
+"E7E7E7012900DA012113460A4697E7012900DA01211346\n" 
+"0A46AEE7DFF8C805C06A417A481E8041C00F70471346F1\n" 
+"9403508B83004FF0FF32114684E713464FF0FF3211469C\n" 
+"E780B5DFF8A0050068417A002902D1006E406880470120\n" 
+"02BD80B5FFF760FFDFF884050068417A002902D1006E80\n" 
+"688047012002BDB1F57A7F01DC4FF47A7113460A464FF4\n" 
+"FA715BE7B1F57A7F01DC4FF47A7113460A464FF4FA716E\n" 
+"E710B50446002922D5E06A816801291CDB0069012819DA\n" 
+"02212046FFF703FF002813D194F9540010F1010F04D100\n" 
+"2084F85400012010BD002807D1012060774FF0FF3084F8\n" 
+"5400022010BD002010BDBDE8104071E74FF0FF3280F854\n" 
+"2000E7DFF8E824D26FD2F88020A03252420265F7E60029\n" 
+"0AD5C06A8168012904DB0069012801DA02207047002070\n" 
+"4755E7B52900DAB42113460A463C2104E7B52900DAB421\n" 
+"13460A463C211AE710B50446002927D5E06A8168012921\n" 
+"DB006901281EDA03212046FFF7AFFE002818D194F95400\n" 
+"014611F1010F04D1002084F85400012010BD002803D101\n" 
+"2084F8540010BD012905D14FF0FF3084F85400022010BD\n" 
+"002010BDBDE8104018E74FF0FF3280F85420DFF83824D2\n" 
+"6FD2F88020B432524202659FE61CB50020ADF804000446\n" 
+"0120009001ABD022EE210520F7F7EBFB002802D09DF804\n" 
+"400BE00120009001AB0F22BA210520F7F7DEFB002801D0\n" 
+"9DF80440204616BDDFF8E823D26FD2F880204632524202\n" 
+"6576E613464FF0FF32114693E613464FF0FF321146ABE6\n" 
+"80B5FFF76AFEF7F7C0FA00210175012002BD80B5FFF772\n" 
+"FEF7F7B7FA00210175012002BD2DE9F0410C46E64D55F8\n" 
+"2060307206F154070FF2D8313961162800F24681DFE810\n" 
+"F017002B003C0064005000780089009900C800A800B800\n" 
+"D800E800F600030110011E012B01380138013801380138\n" 
+"01E86F052180F8841006F10800062141760A21817605F6\n" 
+"E011416040F2DC5181600FF29430386118E1E86F843005\n" 
+"21417006F10800062141760A21817605F6BC7141604FF4\n" 
+"9671816007E1E86F84300321817006F108000C21417610\n" 
+"21817605F58051FC314160102181600FF2A0303861F3E0\n" 
+"E86F84300321017106F10800072141760B21817605F580\n" 
+"51F03141600B2181600FF278303861DFE0E86F84300321\n" 
+"C17006F10800062141760A21817605F588510C3141600A\n" 
+"2181600FF250303861CBE006F10800062141760A218176\n" 
+"05F58851183141604FF4FA7181600FF248303861BAE006\n" 
+"F10800142141761821817605F598510C31416018218160\n" 
+"0FF298303861AAE006F10800022141760621817605F59A\n" 
+"514160062181600FF2443038619BE006F108000A21F194\n" 
+"03E08E830041760E21817605F59851303141600E218160\n" 
+"0FF2083038618BE006F10800012141760521817605F598\n" 
+"5148314160052181600FF2203038617BE006F108000521\n" 
+"41760921817605F5985124314160092181600FF2742038\n" 
+"616BE006F10800062141760A21817605F5985150314160\n" 
+"0A2181600FF2382038615BE006F1080001214176052181\n" 
+"7605F598515C31416040F2866181604DE006F108000121\n" 
+"41760521817605F5C851EC3141600521816040E006F108\n" 
+"000C2141761021817605F5C851F43141601021816033E0\n" 
+"06F10800112141761521817605F5D051091D416040F2BE\n" 
+"51816025E006F10800112141761521817605F5F851C431\n" 
+"41601521816018E006F10800042141760821817605F5C8\n" 
+"51E4314160082181600BE006F108000121417605218176\n" 
+"05F58051E83141600521816006F1080000210175417581\n" 
+"750176C1600161417006F128080846C8F828004FF0FF30\n" 
+"86F854007880062206F15800FFF7C1FB002010E000EB40\n" 
+"0106EB8101002281F8342034314A7005F15C024A6006EB\n" 
+"800100228A64401C0228ECDB002086F8280088F8010005\n" 
+"F15C00C8F80400FC60BDE8F08110B51F4CF9F7D1F8E067\n" 
+"002006E0682111FB0041803144F82010401C1728F6DB4F\n" 
+"F0FF306066A0660020E06607F0A3FB0EF00AF80FF07BF9\n" 
+"0AF013FBFFF70CFE552802D10FF0CCFD0AE0FFF705FEBD\n" 
+"2802D10FF084FF03E00FF25400F7F769F90AF008FE0BF0\n" 
+"9DF800F054FF0FF0F2FF10F001F80FF0E9FFBDE8104010\n" 
+"F000B80000EC0388001C27880048048800414420256420\n" 
+"25642025642025640000524D2025642025642025642025\n" 
+"6400004261726F6D657465722064726976657220696E69\n" 
+"74206572726F722E000000005F8A83001F8A83005F8A83\n" 
+"00418A8300278B8300338B83001F8B83003F8B83001F8A\n" 
+"83003F8B8300418A8300278B8300338B83001F8B830063\n" 
+"8B83001F8A83005F8A83007B8B83004F8B8300598B8300\n" 
+"1F8B83005F8A8300138C83005F8A8300418A8300978B83\n" 
+"00AB8B8300BF8B83005F8A83001D8C83005F8A8300418A\n" 
+"8300278B8300338B83002F8C83005F8A8300C58C83005F\n" 
+"8A8300418A83004B8C8300598C8300678C83005F8A8300\n" 
+"1F8D83005F8A8300418A8300278B8300338B83001F8B83\n" 
+"005F8A8300458D83005F8A8300578D8300318D83003B8D\n" 
+"83001F8B83005F8A83001F8A83005F8A8300418A830027\n" 
+"8B8300338B83001F8B83005F8A83001F8A83005F8A8300\n" 
+"418A8300318D83003B8D83001F8B830073487047F19403\n" 
+"70928300F8B50C461646012500282BD106EB46006E4901\n" 
+"EB00177869E040C00708D523467A6931460FF22C30F7F7\n" 
+"8EF80220F2BD4FF0FF30009003462A4679682046F7F7F1\n" 
+"FD00280CD023467A6931460FF21430F7F77AF878692946\n" 
+"A140084378612CE00220F2BD012828D106EB4600574901\n" 
+"EB00177869E040C00708D423467A6931460FF2F020F7F7\n" 
+"60F8032516E04FF0FF332A4679682046F7F765FE002807\n" 
+"D023467A6931460FF2DC20F7F74EF800E0032578690121\n" 
+"A140884378612846F2BDF8F7DCBD02B598B00021ADF858\n" 
+"108DF801100DF101010A224A7000228A70CA7005218DF8\n" 
+"00108DF80100042218A90DF10300FBF746FB0020ADF858\n" 
+"0000A800F068F819B000BD04F094B938B5447885780078\n" 
+"032822D01A2802D02C282AD031BD012C0CD1012001F0B8\n" 
+"FE012322461A210FF2642001B0BDE83040F7F706B8022C\n" 
+"21D1022001F0A9FE022322461A210FF2582001B0BDE830\n" 
+"40F6F7F7BF012C12D1284604F083F929460FF25420BDE8\n" 
+"3440F6F7EBBF012C06D129460FF24C20BDE83440F6F7E2\n" 
+"BF31BD0FB480B5002805D10846002802D11046002804D0\n" 
+"07F0BEFDC046C04601E007F0A2FD01BC5DF814FB00222F\n" 
+"2809D200EB4003044800EB03104069C840C00700D50122\n" 
+"104670477878880030B595B00446012594F90000062800\n" 
+"F2A480DFE800F0042648647A9A9E00E11C82B068465522\n" 
+"F0F743FF0CBC94F9021094F90100F8F70EF9022809D160\n" 
+"78F8F727FB002561780FF2B810F6F795FF8AE0032840F0\n" 
+"888061780FF2AC10F6F78CFF81E060781A280BD1E01CF8\n" 
+"F710FEA37AD4F8062061790FF29810F6F77DFF04E02C28\n" 
+"02D1E01CF8F702FE94F9021094F90100F8F701FA032865\n" 
+"D161780FF28810F6F76AFF5FE0B4F8581000A8F8F70AFB\n" 
+"9DF9040002280AD1009800B2F8F7E8FA002500990FF268\n" 
+"10F6F756FF4BE0032849D100990FF26010F6F74EFF43E0\n" 
+"0FF0E5FE022809D16078F8F7D2FA002561780FF24C10F6\n" 
+"F740FF35E0032833D161780FF24410F6F738FF2DE06078\n" 
+"05280CD128460FF0B2FF02280DD0032823D161780FF234\n" 
+"10F6F728FF1DE002281BD110F0A9F80228F1D16078F8F7\n" 
+"AAFA002561780FF20C10F6F718FF0DE02046F8F71FFB09\n" 
+"E02046F8F716FD05E061780FF20010F6F70AFF00252846\n" 
+"15B030BD012070470FB4022004B0704701207047002070\n" 
+"4770470000534D4143202564202564202564000000534D\n" 
+"4120256420256420256400000000534D52432025642025\n" 
+"64202564000000534D52202564202564202564F1940300\n" 
+"968300000000004154205249204E6F72202D2564202564\n" 
+"20256400415420524920426174202D2564202564202564\n" 
+"0050442055542D256400000000534C4D2025640000414C\n" 
+"4F4620256400414C4346202564004F4A4820454C203078\n" 
+"257820307825782030782578000000524C434620256400\n" 
+"504C4F4620256400504C43462025640050414F46202564\n" 
+"00504143462025640050504F4620256400505043462025\n" 
+"64004558204C4D454C20256400007047032807D1012902\n" 
+"D10E20F0F7E6BB0E20F0F7EDBB7047010040F10980F446\n" 
+"404200F005F851F000416047010000BF09D0B0FA80F188\n" 
+"40C91CC1F58461090501EBD02140057047B0B581EA030C\n" 
+"0CF0004C40F2FF7515EA11541DBF15EA1357AC42AF4239\n" 
+"E0E41923EA455343F48013C90241F0004141EA505EC702\n" 
+"1100A7FB020200284FF00000EEFB01204FF00001E3FB07\n" 
+"2118BF42F00102401800214941E3FB0E01A4F580640F03\n" 
+"02D252004041494154F101046CDD470872F1004250F100\n" 
+"0051EB0451A1F580115CBF41EA0C01B0BD4CEA05510020\n" 
+"B0BD05EA1357AC4214BFAF4241E050EA410E1CBF52EA43\n" 
+"0E02E061460020B0BD24423C441BD15FEA070EF6D00903\n" 
+"02BF01460020AEF1140EB1FA81F7AEEB070401FA07FE0C\n" 
+"37C7F1200100FA07F7C8404EEA000E23EA455343F48013\n" 
+"A2E733F00043B3FA83F704BFB2FA82FE77440B3FE41BB7\n" 
+"F1200E2FBF02FA0EF3BB40C7F1200E22FA0EFE38BF43EA\n" 
+"0E03BA40641C82E750EA410E14BF52EA430E6FF000014F\n" 
+"F4001717EB430F8ABF194617EB410FB5E74CEA05510020\n" 
+"B0BDD4F10104B4F120070FDAC4F12007520828BF42F001\n" 
+"0210FA07F501FA07F7E1BF2A43E0403843E1400FE0352C\n" 
+"98DCC7F1200452EA400220FA07F218BF42F0010231FA07\n" 
+"F0A1400A43002172F1004250F1000051EB0C01B0BD0000\n" 
+"5FF0FF0C1CEAD05114BF614506E0C110400721F0E04101\n" 
+"F16051704779B900F0004100020AD0B0FA80FC00FA0CF0\n" 
+"01F16051A1EB0C5101EBD0214005704741020CBF40F4E0\n" 
+"016FF000010020704700004FEAF17CBCF1E04C2CBFBCF5\n" 
+"001F11E05FEA4C0C34BFBCF17F5F2EE05FEA9C0C4FEA0C\n" 
+"1C4FEA3C0CC10071F100414CEB50707047C90241EA5051\n" 
+"C00218BF41F0010141F000414FEA6C50C0F10900212810\n" 
+"D240EACC7CCCF1200C11FA0CF070F10040CCF1200C21FA\n" 
+"0CF00CF0004C40EB0C0070474FEACC707047490011F500\n" 
+"1F04D84FEACC10FF30C0057047C817704710B50024F6F7\n" 
+"A7FC007CC00700D50124204610BD00B597B0F194039099\n" 
+"830000A85C21F0F7ECFB0020ADF858000DF101000A2141\n" 
+"7000218170C17008468DF800001F208DF8010000A8FFF7\n" 
+"41FD012017B000BD00B597B000A85C21F0F7D0FB0020AD\n" 
+"F858000DF101000A21417000218170C17001208DF80000\n" 
+"1F208DF8010000A8FFF725FD012017B000BD00B597B000\n" 
+"A85C21F0F7B4FB0020ADF858000DF101000A2141700021\n" 
+"8170C17001208DF800001F208DF8010000A8FFF709FD01\n" 
+"2017B000BD0120704710B50024F6F747FC007CC00700D5\n" 
+"0124204610BD00B597B000A85C21F0F78CFB0020ADF858\n" 
+"000DF101000A21417000218170C17008468DF800002020\n" 
+"8DF8010000A8FFF7E1FC012017B000BD00B597B000A85C\n" 
+"21F0F770FB0020ADF858000DF101000A21417000218170\n" 
+"C17001208DF8000020208DF8010000A8FFF7C5FC012017\n" 
+"B000BD00B597B000A85C21F0F754FB0020ADF858000DF1\n" 
+"01000A21417000218170C17001208DF8000020208DF801\n" 
+"0000A8FFF7A9FC012017B000BD0120704710B50024F6F7\n" 
+"E7FB007C800700D50124204610BD00B597B000A85C21F0\n" 
+"F72CFB0020ADF858000DF101000A21417000218170C170\n" 
+"08468DF8000021208DF8010000A8FFF781FC012017B000\n" 
+"BD00B597B000A85C21F0F710FB0020ADF858000DF10100\n" 
+"0A21417000218170C17001208DF8000021208DF8010000\n" 
+"A8FFF765FC012017B000BD00B597B000A85C21F0F7F4FA\n" 
+"0020ADF858000DF101000A21417000218170C17001208D\n" 
+"F8000021208DF8010000A8FFF749FC012017B000BD0120\n" 
+"704710B50024F6F787FB007C00F00300032800D1012420\n" 
+"4610BD00B597B000A85C21F0F7CAFADFF83C03017841F0\n" 
+"020101700020ADF858000DF101000A22427001228270C1\n" 
+"7000208DF8000022208DF8010000A8FFF719FC012017B0\n" 
+"00BD00B597B000A85C21F0F7A8FADFF8F812087810F0FD\n" 
+"00087014D10020ADF858000DF101000A21417001218170\n" 
+"0021C17001208DF8000022208DF8010000A8FFF7F5FB02\n" 
+"E040B20FF07DFF012017B000BD012070470120704710B5\n" 
+"0024F6F72DFB007C00F00700072800D10124204610BD00\n" 
+"B597B000A85C21F0F770FAA249087840F0010008700328\n" 
+"05D140B20FF05AFF0FF070FF12E00021ADF858100DF101\n" 
+"010A224A7000228A70C87010468DF8000022208DF80100\n" 
+"00A8FFF7B8FB012017B000BD00B597B000A85C21F0F747\n" 
+"FA8E49087810F0FE00087013D10020ADF858000DF10100\n" 
+"0A21417000218170C17001208DF8000022208DF8010000\n" 
+"A8FFF796FB04E040B20FF01EFF0FF039FFF19403209D83\n" 
+"00012017B000BD012070470120704710B50024F6F7CCFA\n" 
+"007CC00700D50124204610BD00B597B000A85C21F0F711\n" 
+"FA0020ADF858000DF101000A21417000218170C1700846\n" 
+"8DF8000023208DF8010000A8FFF766FB012017B000BD00\n" 
+"B597B000A85C21F0F7F5F90020ADF858000DF101000A21\n" 
+"417000218170C17001208DF8000023208DF8010000A8FF\n" 
+"F74AFB012017B000BD00B597B000A85C21F0F7D9F90020\n" 
+"ADF858000DF101000A21417000218170C17001208DF800\n" 
+"0023208DF8010000A8FFF72EFB012017B000BD01207047\n" 
+"000070B598B004460E46FFF738FA054600200090042221\n" 
+"4600A8FAF7F2FD01A85C21F0F7AEF9009A31460FF2C010\n" 
+"F6F7CCFA30460C3809284DD8DFE800F0051118253C0C4C\n" 
+"4C4C471420C5F8D4052070012018B070BD1420C5F89406\n" 
+"2070F7E705F2D4503C21016308462070F0E705F2D45021\n" 
+"783C2904D13C21217021780166E6E700990166E3E72948\n" 
+"0078C10712D50021ADF85C100DF105010A224A7000228A\n" 
+"70C87001208DF8040022208DF8050001A8FFF7CEFA0099\n" 
+"304640B200F011F8009020600098C5F86406C1E71420C5\n" 
+"F894032070BCE70FF22410F6F776FA0020B7E710B4134A\n" 
+"D36B126C104C2478002C1AD00F2802D010280BD015E050\n" 
+"7A002812D0906B806800280ED488420DDD08460BE0587A\n" 
+"002807D0986B8068002803D4884202DD084600E0084610\n" 
+"BC70475E888900EC03880012B597B001460C3909292ED8\n" 
+"DFE801F005212325251F2D2D2D2B1F240020ADF858008D\n" 
+"F801000A208DF8020005208DF800008DF80140042217A9\n" 
+"0DF10300FAF745FD00A8FFF76AFA012018B010BD2324E4\n" 
+"E72024E2E72124E0E722241799FFF7A5FF1790DAE71324\n" 
+"D8E70FF26400F6F711FA0020E9E780B50FF25C010C20FE\n" 
+"F7E1FE0FF278011120FEF7DCFE0FF290010D20FEF7D7FE\n" 
+"0FF2AC010E20FEF7D2FE0FF2C4010F20FEF7CDFE0FF2E0\n" 
+"011020BDE80440FEF7C6BE4D52322044523D25642C2564\n" 
+"000000004D523220534446004D52322052434600799983\n" 
+"008D998300C5998300FD99830000000000359A8300F19D\n" 
+"830000000000000000002F9D8300439D83007B9D8300B3\n" 
+"9D830000000000EB9D8300F19D83000000000000000000\n" 
+"399A83004D9A8300859A8300BD9A830000000000F59A83\n" 
+"00F19D83000000000000000000F99A83000D9B8300459B\n" 
+"83007D9B830000000000B59B8300F19D83000000000000\n" 
+"000000B99B8300D19B8300159C8300659C830000000000\n" 
+"699C8300F19D83000000000000000000F19403B0A08300\n" 
+"6D9C8300859C8300D79C8300279D8300000000002B9D83\n" 
+"00F19D8300000000000000000000BF10B4414800210180\n" 
+"0846404C0DE001EB810100EB80031B19C91800230B7152\n" 
+"1C52B211460129F2DB401C142801DA0022F6E710BC7047\n" 
+"00EB80003449405E704700EB800032494018B0F9020070\n" 
+"4710B54FF0FF3401460C2903D01C2903D1002405E00124\n" 
+"03E00FF2AC00F6F73AF9204610BD38B504460125FFF7E9\n" 
+"FF20460C2804D01C2805D100F038F808E0FFF7B8FF05E0\n" 
+"21460FF29000F6F723F90025284632BD80B501460FF28C\n" 
+"00F6F71AF94FF0FF3002BDF3B581B0144C25882E46701C\n" 
+"152801DB0020FEBD00270DE007EB870106EB86000E4A80\n" 
+"18081801AA89180522F0F79BF87F1C7FB2012FEFDB681C\n" 
+"20800120FEBD0548008870470548002141800121017008\n" 
+"467047000044888900E4BF880098038800455820504452\n" 
+"4D4D20433120256400004558205044524D4D2043332025\n" 
+"6400004558205044524D4D204332202564000010B5DFF8\n" 
+"B04C40F2A52200212046FEF7CCFAFF202070E07284F862\n" 
+"02DFF8D80C0021417010BDF8B501240B2825D10B46012B\n" 
+"0ED1DFF87C3CD31893F954522E46DFF8747CD75DBE4210\n" 
+"DA6D1C83F8545231E0022B2FD1DFF85C3CD31893F95452\n" 
+"012D03DB6D1E83F8545224E0DFF8443CD318002483F854\n" 
+"421DE00A281BD10B46012B08D1DFF82C3CD31803F51573\n" 
+"5D796D1C5D710FE0022B0DD1DFF8183CD31803F5157393\n" 
+"F90550012D02DB6D1E5D7101E000245C71002C05D11346\n" 
+"02460FF20C00F6F76BF82046F2BD000041542D25643A25\n" 
+"6420256400DFF8D81B81F85E0270470FB42DE9F043ADB0\n" 
+"0124DFF8085CE868DFF8C06B90F8E014002958D190F8E1\n" 
+"04002854D10FF23820F6F747F8B4208DF8020046208DF8\n" 
+"030020468DF8040000208DF8580003208DF859000DF15B\n" 
+"0000A95522EFF7CEFF0A208DF85A0016A8FFF770F80028\n" 
+"01D10220F4E000A8F6F7CAFA9DF80000B0779DF90100F0\n" 
+"779DF9021086F82010BDF90320A6F821209DF900304FF4\n" 
+"6167C0EB001C4FEA8C0017FB030040FA81F04FF47A7101\n" 
+"FB0020C6F80200C6F80D000020A861E8702870A8706870\n" 
+"28712422014606F52A70FEF7FDF99DF8D270B846A146B8\n" 
+"F1010F1DD1DDF8D300402805D0D6F817100843C6F81700\n" 
+"0BE0204607E0D6F8171009FA00F21143C6F81710401C06\n" 
+"28F5DBF07E9DF9D71009FA01F10843F07651E008EB0600\n" 
+"90F9541200294BD190F95902002847D1B8F1020F2DD100\n" 
+"A8F6F766FA9DF900004FF461619DF9F1940340A4830001\n" 
+"20C2EB02139A0011FB00209DF9021040FA81F04FF47A71\n" 
+"BDF9032001FB0020C6F89802C6F8940206F12B0006F11E\n" 
+"010522EFF73DFF4FF49660B083DFF8D00CC6F88C020020\n" 
+"6861286116E0B8F1030F13D1DDF8D300C6F82300BDF8D8\n" 
+"004FF47A714843C6F827000020C6F8A00286F86C0286F8\n" 
+"6D0286F8A40209FA07F0B17D0143B1753178002910D0B8\n" 
+"F1010F08D109FA01F1DDF8D320914202D1002186F86112\n" 
+"96F86912084386F869023A46214696F85E02FFF7A5FE00\n" 
+"2800D10224E86896F95C120A9196F95B12099196F95A12\n" 
+"089196F95912079196F95712069196F95612059196F955\n" 
+"12049196F95412039190F8E114029190F8E0040190B08B\n" 
+"0090F37ED6F81720B17D0FF22000F5F734FF20462DB0BD\n" 
+"E8F0035DF814FB41542D52455631343132313200000000\n" 
+"41542D414C2025642025642025642025642C4154202564\n" 
+"2025642025642564256425642025642564256425640000\n" 
+"0000F0B5A3B0F7F79CFD06460124002E00F08180DFF820\n" 
+"5905F51577B2780221B87AFFF741FE002800D10324B078\n" 
+"01282AD1D6F8030005F21702402810D0D5F817108143C5\n" 
+"F817101079012396F90770BB40984310710FF25410F5F7\n" 
+"E0FE03E00020C5F817001071D5F81700002827D1A87D01\n" 
+"2196F9022091408843A8750FF23810F5F7CCFE1BE04019\n" 
+"90F95402002816D1B078401990F95902002810D1B07803\n" 
+"2806D10020C5F82300C5F82700F8643883A87D012196F9\n" 
+"022091408843A875A87D002814D10FF2FC00F5F7A8FEFF\n" 
+"F7D8FD01208DF82C0003208DF82D000A208DF82E000BA8\n" 
+"FEF7DEFE00282AD126E0DFF88808C06890F89010002922\n" 
+"D1002180F8E01480F8E114FFF7BBFD0FF2C800F5F785FE\n" 
+"16E00FF2D000F5F780FEFFF7B0FD20468DF82C0003208D\n" 
+"F82D000A208DF82E000BA8FEF7B6FE002801D1032032E0\n" 
+"0324DFF83408C068DFF8E85705F5157797F908100A9197\n" 
+"F90710099197F90610089197F90510079197F903100691\n" 
+"97F90210059197F90110049195F95412039190F8E11402\n" 
+"9190F8E0040190A88B009005F117000379D5F81720A97D\n" 
+"0FF25400F5F73CFE204623B0F0BD000041542D524D2025\n" 
+"640000000041542D524D2D494E5400000041542D414C4C\n" 
+"52454D4F56454400000041542D464F5243454452454D4F\n" 
+"5645440000000041542D524C204E756C6C000041542D52\n" 
+"4C2025642025642025642025642C415420256420256420\n" 
+"2564256425642564202564256425642564000000002DE9\n" 
+"F04F8BB04FF0000800A8F6F799F8F19403D0A7830004A8\n" 
+"0FF020FC4746384603900590DFF8F0469DF80000A0719D\n" 
+"F80100E0719DF802002072BDF80300A4F80900A0794FF4\n" 
+"6161E279C2EB02139A0011FB0020217A40184FF47A71B4\n" 
+"F8092001FB0020C4F80200BDF8100002900190BDF81290\n" 
+"00F06DFDD4F80D10D4F8020000F0ECFB0600DFF8D05601\n" 
+"D0C92E0AD3E868D0F8942031460FF2A440F5F7AFFDE868\n" 
+"D0F89460A07D400719D528693018286147F23051884212\n" 
+"D36969411869610FF28C40D4F88C228A4204D3F5F797FD\n" 
+"3846286104E0F5F792FD38466861286194F80BA0029882\n" 
+"4500F0928084F80190029820703846C4F89002A07D4007\n" 
+"7AD5D4F89412D4F8020000F0A8FB8346D4F89C0244F620\n" 
+"67BB4513D25844C4F89C0204EB8A00D0F874125944C0F8\n" 
+"7412E07A0019217B90F86E228A4212D280F86E120FE083\n" 
+"444046C4F89C021822014604F51D70FDF75BFF06224146\n" 
+"04F26E20FDF755FFD4F89C22BA4202D22879012834D140\n" 
+"46D4F87812D4F87432994200D3012002210BE004EB8303\n" 
+"D3F8743204EB8707D7F87472BB4200D20846491C0346C9\n" 
+"B20F46062FEEDB8DF82000181990F86E028DF8210008A9\n" 
+"08A800F0EFFB1822414604F51D70FDF722FF0622414604\n" 
+"F26E20FDF71CFF4046C4F89C0294F85F02002809D05A46\n" 
+"04F10B0104F10B0000F0D5FB404684F85F02D4F80200C4\n" 
+"F89402404684F8610284F8669201273846039029E0D4F8\n" 
+"90023018C4F8900294F866125FFA89F9494506D084F801\n" 
+"9084F86692012739460391217B6278914213D121788A45\n" 
+"10D144F62067B8420BD3A07D400706D594F85F02002802\n" 
+"D1012084F85F02C4F89072474694F8691200290AD0002F\n" 
+"08D10127C80701D5384603900FF2DC20F5F7BEFCA07D40\n" 
+"0712D5D4F80290D4F89812484600F0E3FAD4F88C128842\n" 
+"02D22879002804D0012738460590C4F89892002F00F0D9\n" 
+"80474611E00FF2AC20F5F79FFC404684F86502A4F86A02\n" 
+"04F12B00A11D0522EFF730FC404628717F1C032F80F2C2\n" 
+"80A07D3841C007F7D594F8690240FA07F1C90701D40028\n" 
+"EFD1002F03D0022F21D00CD3E9E7A868407A0028E5D103\n" 
+"980028E2D04146012000F021FADDE7D4F817000299C840\n" 
+"C007D7D560780028D4D094F861020028D0D1012084F861\n" 
+"02014600F00DFAC9E70598002802D128790028C3D0D4F8\n" 
+"0290D4F89412484600F07EFAD4F89C1201EB000B44F620\n" 
+"60834502D22879002806D05A4604F10B01204600F00CFB\n" 
+"09E0A9EB0B0106A800F079FAA01D06A90522EFF7CFFBB4\n" 
+"F86A020938FEF7B4FDDFF8702CF1940360AB8300DFF870\n" 
+"3CFEF7C6FD0BF0A8FE81461FFA89F994F86522914506D0\n" 
+"49460FF6BC40F5F71AFC84F8659294F8651284F8381001\n" 
+"2084F86002C2460FF6B040F5F70CFC4FF009091BE00AF1\n" 
+"010A09EB040000F130018A78CB781B0203EB02420B79D2\n" 
+"1800924B7890F830205FFA8AFA51460FF68840F5F7F1FB\n" 
+"09F105091FFA89F9B4F86A2210468145DEDBE96891F8E1\n" 
+"1400293FF443AF94F956120129FFF63EAF94F865120029\n" 
+"3FF435AF002A3FF432AF04F130010120F8F748FF404628\n" 
+"6168612CE7A07D00075AD5D4F82300410001990BD50129\n" 
+"04D180070CD54FF0010809E04FF001081E20019004E0C8\n" 
+"40C00701D54FF00108B8F1010F3AD194F86C02002894F8\n" 
+"6D02019929D1884223D0084694F8A412884205D0C4F8A0\n" 
+"62019884F8A40204E0D4F8A0023018C4F8A002D4F8A002\n" 
+"D4F82710884222D30321012000F03DF90020C4F8A00201\n" 
+"2084F86C02019884F86D0214E00020C4F8A00210E08842\n" 
+"0ED0002084F8A40284F86C02C4F8A00206E0002084F86D\n" 
+"0284F8A402C4F8A00204F10B0021460B22EFF704FB0020\n" 
+"84F8690201200BB0BDE8F08F000041542D43757253543A\n" 
+"2564202564000041542D437572543A2564000041542D43\n" 
+"4845434B2025640041542D4558202564202564002DE9FE\n" 
+"4306460F4691464FF0000801A841460A4606C0DFF89C4A\n" 
+"04F5187594F86002002807D0084684F8600268810FF614\n" 
+"30F5F72BFB6889002827D104F22B0094F82B104FF46162\n" 
+"4378C3EB031C4FEA8C0312FB0131807808184FF47A71E2\n" 
+"8D01FB002004F22E0101228A70CA701A220A7104224A71\n" 
+"020E8A71020CCA71020A0A7248726879887209206881B9\n" 
+"F1000F03D0B9F1020F2ED051D230788DF804000DF10409\n" 
+"707889F80100380C89F80200380A8DF8070089F8047005\n" 
+"2201A9688900193030F9F7FEFD6889411D69813078A870\n" 
+"7078E8706879401C68714FF00108009799F801309DF804\n" 
+"2089B20FF66820F5F7CCFA23E06889001900F22D0190F8\n" 
+"2D204B781B0203EB0242897851187A18110C80F82D1068\n" 
+"890019110A80F82E106889001980F82F20698908190092\n" 
+"90F82C3090F82B200FF63820F5F7A7FAD4F80200686300\n" 
+"20E8634046BDE8FE83DFF8640990F86012002904D00021\n" 
+"80F86012012070470020704710B51F4CFEF7E8F9E060F5\n" 
+"F716FAA060E068DFF83C19C0F8F81400F2F840DFF83419\n" 
+"4160DFF8301981600FF21901C1600FF28D010161012010\n" 
+"BD00007C748800C002880000200E49C96891F8E1140029\n" 
+"15D00146DFF8F43800E0491CF19403F0AE8300C9B20A46\n" 
+"052A05DAD21892F95422012AF5DB0120002801D1002070\n" 
+"47184690F96702704758748800DFF8C42802F51573D874\n" 
+"002813D00846042805DA801890F9540201280DDB03E092\n" 
+"F95402012808DB187C012202FA01F10843187470470020\n" 
+"187470477CB5002340F249120C7812FB0404012525700C\n" 
+"7812FB04041A25A570DFF86C4894F864520B26354214D0\n" 
+"0B7812FB030301255D7094F86432DD0603D503F0EF0384\n" 
+"F864320B7812FB030394F86452DD70012313E0ED0611D5\n" 
+"0B7812FB030303255D700B7812FB030301259D720B7812\n" 
+"FB0303DD70002384F868322B46002B12D00B7812FB0303\n" 
+"D4F802505D600B7812FB030325781D720B7812FB030062\n" 
+"7842720878401C087000210846FFF78BFF94F868020128\n" 
+"04D104210120BDE87C4081E773BD10B40022884201D342\n" 
+"1A08E00B1ADFF8CC47A34203D3DFF8C8271018421A1046\n" 
+"10BC70472DE9F0412DED028B82B007460E463046FEF745\n" 
+"FB41EC180B53EC182BDFF8A407DFF8A417FEF749FB0BF0\n" 
+"2BFC8DF800004FF4616853EC182BDFF89007DFF89017FE\n" 
+"F73BFB04460D469DF8000018FB00F0FEF71BFB02460B46\n" 
+"204629460BF03DFC41EC180B53EC182B4FF01130DFF864\n" 
+"17FEF723FB0BF005FC04468DF801403C25E4B215FB04F0\n" 
+"FEF700FB02460B4651EC180B0BF022FC0BF0F4FB8DF802\n" 
+"009DF8001011FB08F114FB051151FA80F04FF47A7101FB\n" 
+"1060ADF80300384600A90522EFF7F9F802B0BDEC028BBD\n" 
+"E8F081DFF8D41681F86802887D0522104215D091F86802\n" 
+"012802D104210120F8E6022809D1DFF8C4060122027191\n" 
+"F868120FF27C70F5F73DB9002081F868027047DFF89816\n" 
+"0B22EFF7D0B8804F12003CB40B461146DFF8842602F262\n" 
+"24E478002C04D0D57A92F86222AA4203D0002202B030BC\n" 
+"D8E5002C06D0AA4204D10222184602B030BCCFE533BC70\n" 
+"4738B52DED0E8BB0EE408AF0EE608AB0EE419AF0EE619A\n" 
+"51EC180B53EC182B0BF0B1FB41EC1D0B9FED4FAB53EC1D\n" 
+"2B51EC1A0BFEF797FA41EC1E0B9FED4CBB9FED4DCB53EC\n" 
+"182B0020DFF83416FEF78AFA04460D4653EC1E2BDFF8E4\n" 
+"05DFF82416FEF780FA22462B460FF0CEFB04460D4653EC\n" 
+"1E2B51EC1C0BFEF774FA02460B4651EC1D0B0BF07EFB53\n" 
+"EC1B2BFEF76AFADFF8F425DFF8F435FEF764FA22462B46\n" 
+"0FF0B2FB41EC180B51EC190B53EC192B0BF068FB41EC1D\n" 
+"0B53EC1D2B51EC1A0BFEF750FA41EC1A0B53EC192B4FF0\n" 
+"3330DFF8BC15FEF746FA04460D4653EC1A2BDFF8B005DF\n" 
+"F8B015FEF73CFA22462B46F1940380B283000FF08AFB04\n" 
+"460D4653EC1A2B51EC1C0BFEF730FA02460B4651EC1D0B\n" 
+"0BF03AFB53EC1B2BFEF726FADFF82425DFF87C35FEF720\n" 
+"FA22462B460FF06EFB41EC190B53EC182B51EC180BFEF7\n" 
+"14FA04460D4653EC192B51EC190BFEF70CFA22462B460F\n" 
+"F05AFB41EC100BBDEC0E8BBDE831400FF0C6BB00000000\n" 
+"00004E40000000000020AC40111111111111913F2DE9F8\n" 
+"432DED0A8BAAB09FEDD7AA00249FEDD59A00A8F5F7EEFA\n" 
+"0AA8F5F742FB07A8FFF70AFF0DF140084FF47A703C214F\n" 
+"F4616298F8013098F8025011FB05F512FB035398F80350\n" 
+"5B1900FB03F59DF9003013FB02F29DF9013013FB01219D\n" 
+"F9022041FA82F1BDF9032000FB012613A80EF041FEDFF8\n" 
+"6C749DED220AB5EE400AF1EE10FA04DD0320F8702046B8\n" 
+"7001E02046F8700DF14500016809EE901A98F80B00DFF8\n" 
+"309499F8CB12012940F02C81012840F02981B869A84200\n" 
+"F008810CAA1068516841EC100B09F52C721068516841EC\n" 
+"110B0AAA1068516841EC1B0B09F52A721068516841EC1C\n" 
+"0B51EC100B53EC112B0BF089FA41EC110BB0EE418AF0EE\n" 
+"618A51EC1B0B53EC1C2B0BF07DFA41EC100BB0EE481AF0\n" 
+"EE681AFFF7B3FEB0EE408AF0EE608AB9692846FFF7EEFD\n" 
+"804651EC180B224613460BF098F918D24046FEF744F9DF\n" 
+"F8B023DFF8B033FEF74CF9DFF8D023DFF8D033FEF746F9\n" 
+"02460B4651EC180B0BF010FBFEF738FA0AEE100A9DED21\n" 
+"0AD7ED080A70EE60AAF5EE40AAF1EE10FA01D5DFED78AA\n" 
+"42F2107080457CD353EC182B2046DFF89013FEF724F941\n" 
+"EC180B1AEE900AFEF7F0F941EC1B0B53EC182BC348C449\n" 
+"FEF716F902460B4651EC1B0B0BF03AF925D29FEDBA0AB4\n" 
+"EE40AAF1EE10FA09DB9FEDB70AF4EE409AF1EE10FA02DB\n" 
+"0A20387014E0B3EE080AB4EE40AAF1EE10FA03DB387840\n" 
+"1D387009E0B3EE020AB4EE40AAF1EE10FA02DB3878C01C\n" 
+"387097F9000006908DED04BB8DED028B19EE900AFEF7B0\n" 
+"F9CDE900011AEE100AFEF7AAF902460B460FF27C30F4F7\n" 
+"34FF9DF84000312880F2DC80B3EE080AB4EE409AF1EE10\n" 
+"FA40F1D4809FED970AF4EE409AF1EE10FA5EDB212880F2\n" 
+"DC809FED910AF4EE409AF1EE10FA52DB97F9000005284C\n" 
+"DB0A24CEE000EE108AB8EE400A09F2C520DFED890A0168\n" 
+"01EE101AF4EE419AF1EE10FA016801EE101A06DB39EEC1\n" 
+"1A81EE000A20EE209AC1E731EE691A81EE000A20EE209A\n" 
+"BAE7F9693046FFF71AFDB0F57A7F20D397F9000000281C\n" 
+"D09DED220AB5EE400AF1EE10FA15D0FE61FF208DF84000\n" 
+"DFED1B9A0DF145002146F1940310B6830001609DE70128\n" 
+"08D109F52A700AA92422EEF776FEBD61FE6192E77878C2\n" 
+"E0032481E002247FE0F3EE020AF4EE609AF1EE10FA08DB\n" 
+"F4EE409AF1EE10FA03D5212871DA02246FE09FED600AF4\n" 
+"EE409AF1EE10FA09DB9DF81C10012901D0042962D10224\n" 
+"60E000000000DFED580AF4EE609AF1EE10FA27DBF4EE40\n" 
+"9AF1EE10FA22D59DF81C10012903D19DF81D20022A01D0\n" 
+"042903D1212846DA012444E09DED220AB5EE400AF1EE10\n" 
+"FA3DDDF5EE409AF1EE10FA38DD7878002802D16FF00104\n" 
+"32E06FF002042FE09DED220AB5EE400AF1EE10FA0BDD78\n" 
+"78002802D16FF0020422E0F87803281FDB6FF002041CE0\n" 
+"B878401CB870C0B23C2816DB6FF001040020B87011E09D\n" 
+"ED220AB5EE400AF1EE10FA0ADD7878002802D16FF00204\n" 
+"04E0F878032801DB6FF0020438782018387040B2002801\n" 
+"D50020387097F900000A2804DB0A2038700120787003E0\n" 
+"002801D10020787097F9000097F90510814216D0049019\n" 
+"EE100AFEF791F8CDE902012298FEF78CF8CDE9000119EE\n" 
+"900AFEF786F802460B4679780FF24C10F4F70FFE09F52A\n" 
+"700AA92422EEF7B5FDBD61FE6121983862387878717878\n" 
+"2AB0BDEC0A8BBDE8F28300000000104200004042010010\n" 
+"4200007A449A9999999999C93F010040416766E6407C74\n" 
+"8800FFA283009DA58300C1A7830058748800A1780F0500\n" 
+"5C2605B9791F962FA4923EFCA9F1D24D62503F1111913F\n" 
+"00C05B409999FD3F5839B4C876BE9F3F33335640AE47E1\n" 
+"7A14AEF73F9999993FDFBC9A785634323F00408F404154\n" 
+"2D4346205742432025642025640041542D54433A256400\n" 
+"00000041542D4E6F256420543A256420413A256420443A\n" 
+"2564000041542D436C6561724261746368446174610000\n" 
+"0041542D424154322053503A2564202564202564202564\n" 
+"000041542D424154342053503A25642025642025642025\n" 
+"64000041542052492D3120536574256420256400000000\n" 
+"41542D5031202566202566202566202566202564000000\n" 
+"0041542D50322825642920473A256620503A256620443A\n" 
+"25662056656869636C652D25640080B50FF03BF94FF4FA\n" 
+"720021DFF8940DBDE80840FCF755BF70B50B4611460124\n" 
+"0B2831D1012B19D1DFF8782D8A1892F92A301D46DFF870\n" 
+"6D8E5DB54203DA581C82F82A0044E0002382F82A301C46\n" 
+"0A4601460FF28000F4F72DFD39E0022B37D1DFF8400D0A\n" 
+"1892F92A30012B03DB581E82F82A002CE0002082F82A00\n" 
+"04460FF26400F4F717FD23E00A2821D1012B08D1DFF810\n" 
+"0D0A1802F22A021079F19403A0B98300401C107116E002\n" 
+"2B14D1DFF8FC2C8A1802F22A0292F90430012B02DB581E\n" 
+"107108E0002313711C460A4601460FF22800F4F7F2FC20\n" 
+"4670BD534C4D2D414C20455220256420256400534C4D20\n" 
+"524C2D455220256400000000534C4D2D524C2045582025\n" 
+"6420256400DFF89C1C81F8360070470FB4F0B5AFB000A8\n" 
+"F4F772FF18A85C21EEF7A5FB0124DFF8846CB068DFF878\n" 
+"5C90F84018002963D190F8410800285FD10FF09DF87068\n" 
+"407A411E8941C90FA976A87E85F82200B4208DF80A0046\n" 
+"208DF80B0020468DF80C0000208DF8600003208DF86100\n" 
+"0DF1630002A95522EEF737FC0A208DF8620018A8FDF7D9\n" 
+"FC002801D10220A1E002A80EF0B3FA029885F8210095F8\n" 
+"210085F82900BDF8520085F8200095F8200085F828009D\n" 
+"F900004FF461619DF90120C2EB02139A0011FB00209DF9\n" 
+"021040FA81F04FF47A71BDF9032001FB0020E86168622C\n" 
+"2200210846FDF7BFFB022805D10FF2EC00F4F75DFC0220\n" 
+"6BE09DF8D2603746781990F92A1000294CD190F92E0000\n" 
+"2848D1002E1AD10FF00AFA0FF012FA0020A88785F83E00\n" 
+"C5F84700E869C5F84300C5F83F00002085F84B0085F84C\n" 
+"00BDF8D4004FF47A7148430FF0E6F9032F24D19DF8D600\n" 
+"002803D14FF6E850A88200E0A8829DF8D300E874BDF8D4\n" 
+"004FF47A714843C5F81600072085F8ED01002085F8EE01\n" 
+"85F8EF0185F8F00185F8F101C5F8E501C5F8E101C5F8E9\n" 
+"01022F02D10020C5F8DD0128782146B140084328703246\n" 
+"214695F83600FFF7ADFE002808D13B46224695F836100F\n" 
+"F22400F4F7F1FB022420462FB0F0BC5DF814FB0000534C\n" 
+"4D204641494C2041434300000000534C4D205245474920\n" 
+"4641494C2025642F25642F2564000070B598B000A85C21\n" 
+"EEF7ACFAF6F760FA05460124002D6DD0DFF8806AAA7802\n" 
+"2196F83600FFF774FE002800D10324A878801990F92A00\n" 
+"00282AD1A878801990F92E00002824D1A878032814D100\n" 
+"20F074C6F81600B082C6F8E101C6F8E501C6F8E90186F8\n" 
+"ED0186F8EE0186F8EF0186F8F00186F8F101A878022802\n" 
+"D10020C6F8DD013078012195F902209140884330703078\n" 
+"00281BD10FF2A000F4F787FBFFF72BFE2C2200210120FD\n" 
+"F7DCFA03283CD001208DF8000003208DF801000A208DF8\n" 
+"020000A8FDF7B6FB002831D12DE0DFF8D409806890F890\n" 
+"10002929D1002180F8401880F84118FFF707FE0FF25800\n" 
+"F4F75DFB1DE00FF25C00F4F758FBFFF7FCFD2C22002120\n" 
+"46FDF7ADFA03280DD020468DF8000003208DF801000A20\n" 
+"8DF8020000A8FDF7F1940330BD830087FB002801D10320\n" 
+"01E00324204618B070BD0000534C4D2D414C4C20524D00\n" 
+"00534C4D2D464F5243452044524D000000534C4D2D524C\n" 
+"204E756C6C000FB410B4079800EB40018800C11DDFF8FC\n" 
+"0A89B20A189DF8083082F84D30491CDDF8092089B20B18\n" 
+"140A83F84D40491C89B20B1883F84D20491CDDF80D2089\n" 
+"B20B18140C83F84D40491C89B20B18140A83F84D40491C\n" 
+"89B20B1883F84D20491CDDF8112089B20B18140A83F84D\n" 
+"40491C89B20B1883F84D20491CDDF8152089B20B18140E\n" 
+"83F84D40491C89B20B18140C83F84D40491C89B20B1814\n" 
+"0A83F84D40491C89B20B1883F84D20491C80F83D1010BC\n" 
+"04B0704700002DE9F04FB5B04FF0000B16A8F4F767FDDF\n" 
+"F87048616A19A800F043FE1EA80EF0DEF8584618900646\n" 
+"1BA831460A460B460EC0894600A8FDF768FA00981B901B\n" 
+"A80199416002998160DFF84058D5F804A09AF80900411E\n" 
+"8941C90FA1769DF95800C0B24FF461619DF95920D2B2C2\n" 
+"EB02139A0011FB00209DF95A1050FA81F04FF47A71BDF9\n" 
+"5B2092B201FB0020E0610746616A00F0CFFC8046B8F100\n" 
+"0F02D0B8F1C90F02D3A868D0F844889AF80B0015901EA9\n" 
+"81B068465822EEF718FA08BC3A4641461BA80EF0EAFE82\n" 
+"460EF0AFFFE0761E9984F821102FA90191C98884F82010\n" 
+"84F839809DF95910ADF802109DF865708F4215D09DF959\n" 
+"100A2291FBF2F202EB8203B1EB43010BD1052807D194F8\n" 
+"4C00401C84F84C00C0B20EF06BFE01201890AAF1010ABA\n" 
+"F1100F00F27B80DFE80AF0095C145C793B5C55736C7379\n" 
+"79732E797300E069C4F83F00C4F8430032461146E07E00\n" 
+"F081FC64E094F84C000028324607D00421022000F077FC\n" 
+"304684F84C0057E00121032000F06FFC32461146E07E00\n" 
+"F06AFC03200EF0C3FF4AE094F84C0000281CD032460321\n" 
+"E07E00F05DFC304684F84C003DE06868407A002802D101\n" 
+"2084F8320094F84C00002808D032460221E07E00F049FC\n" 
+"304684F84C0029E032461146E07E00F040FC23E0686840\n" 
+"7A002802D1012084F832003246012194F8230000F032FC\n" 
+"32461146E07E00F02DFC94F823000EF085FF0CE0686840\n" 
+"7A002802D1012084F83200189AD2B20121E07E00F01BFC\n" 
+"20780521084200F0918094F83E0013280ADB0FF63430F4\n" 
+"F7ACF93046C4F84700012084F8320081E06968497A0029\n" 
+"314631D184F8371094F8221000290DD13046C4F8470001\n" 
+"2084F83200D4F8DD0100281BD0012084F8340017E0D4F8\n" 
+"4710DFF8A82A914211D300280FD0A86800F504614A7890\n" 
+"F840180FF6D820F19403C0C08300F4F77AF93046C4F847\n" 
+"00012084F83200D4F847004044C4F847004AE0C4F84710\n" 
+"BDF902108F4244D09DF959100F290AD194F837200F2A06\n" 
+"D0012184F838100F2184F8371018E023290AD194F83720\n" 
+"232A06D0012184F83810232184F837100BE0372909D194\n" 
+"F83710372905D0012184F83810372184F8371000281AD0\n" 
+"94F83810012916D1A86800F50462537890F840280FF658\n" 
+"20F4F730F9304684F83800012084F83200D4F8DD010028\n" 
+"02D0012084F8340094F800A01AF004008DF800004AD094\n" 
+"F82000002831D094F82800002828D1B7EE000ADDED2F0A\n" 
+"80EE200A10EE100AFDF77AFB3246DFF8AC39FDF7A3FA0A\n" 
+"F09BFB94F8291094F821208A4202D3511A484308E0FDF7\n" 
+"88FA3246DFF88C39FDF791FA0AF089FBD4F8DD114018C4\n" 
+"F8DD0104E0D4F8DD014044C4F8DD019DF80000002810D0\n" 
+"6868407A00280CD10198C088002808D09DF866009DF95A\n" 
+"10884202D0012084F834005FEA0A7040F1F7809DF95800\n" 
+"C0EB001188009DF9591040FA81F6E07EE17C052906D101\n" 
+"2801D0022806D14FF0010B03E0884201D14FF0010BBBF1\n" 
+"010F40F0AF80012084F8F10194F8EE01A18A88427CD294\n" 
+"F8F301D4F81610D4F8E1218A4208D200282CD1D4F8E521\n" 
+"8A4228D32A88964225D1002809D1D4F8E501884205D328\n" 
+"88864202D1012084F8F30101200EF042FE012001F0E0FE\n" 
+"E07E84F8ED01D4F8E501C4F8E901022084F8EF01012084\n" 
+"F8F0014846C4F8E101012084F8350060E0A07E01285DD1\n" 
+"94F82200002803D0BDF9020087420DD0022084F8EF01D4\n" 
+"F8E501C4F8E901484684F8F001012084F8350015E094F8\n" 
+"2300012811D002280FD0012084F8EF01484684F8F301D4\n" 
+"F8E501C4F8E901484684F8F001012084F8350094F8ED01\n" 
+"07282DD1484684F8ED0184F8F301012084F8EF01D4F8E5\n" 
+"01C4F8E901484684F8F001012084F835001AE04846C4F8\n" 
+"E101A07E012814D194F82200002803D0BDF9020087420C\n" 
+"D0022084F8EF01D4F8E501C4F8E901484684F8F0010120\n" 
+"84F835000198C088002836D1D4F8E5014044C4F8E501D4\n" 
+"F8E1014044C4F8E1012BE048460EF0B8FD484601F056FE\n" 
+"A07E012819D194F8F101012815D16B882A8831460FF2EC\n" 
+"70F3F7EEFF4846C4F8E901032084F8EF01484684F8F001\n" 
+"012084F83500484684F8F1014846C4F8E101C4F8E50184\n" 
+"F8EE0184F8ED014846024607E021780141C90702D40119\n" 
+"81F83220401C0428F5DB94F83400012807D10221012000\n" 
+"F0C2F8484684F8340072E094F8320001280BD194F83E00\n" 
+"002803D01146F1940350C48300012000F0B2F8484684F8\n" 
+"320062E094F8350001285ED1288840F2DC51884218D06A\n" 
+"888A4215D0014682420BD28E4204D3B6F5B46F01D24FF0\n" 
+"0109B2420BD34FF0010908E08E4206D3B24204D34FF001\n" 
+"0901E04FF00109B9F1010F1FD10321012000F083F894F8\n" 
+"F00101280FD1D4F8162031460FF21470F3F777FF012084\n" 
+"F8F20194F8EE01401C84F8EE0120E094F8EF0103281CD1\n" 
+"002084F8F20118E094F8F201012814D194F8EF01032805\n" 
+"D002280ED194F8F00100280AD10321012000F055F894F8\n" 
+"EF01032802D1002084F8F201002084F8350004F1220004\n" 
+"F11A010822EDF7DFFE012035B0BDE8F08F10B55C4C40F2\n" 
+"DC5020806080FCF791FEA060F3F7BFFE6060A068DFF804\n" 
+"16C0F8581800F65800DFF8FC154160DFF8FC1581600FF2\n" 
+"0D01C1600FF241110161012010BD00204C49896891F841\n" 
+"18002912D00146BA4B00E0491CC9B20A46042A05DAD218\n" 
+"92F92A20012AF5DB0120002801D10020704700E07047B1\n" 
+"4890F93A007047AF4A02F22A031874002812D092F92A00\n" 
+"012807DA93F90300012803DA93F90200012808DB587C01\n" 
+"2202FA01F108435874704700205874704780B500210846\n" 
+"FFF7DFFF012002BD10B5044621460FF2E050F3F7D5FE28\n" 
+"48048010BD10B5044621460FF2D850F3F7CBFE23484480\n" 
+"10BD10B5044621460FF2D050F3F7C1FE9048002C03D14F\n" 
+"F6E851818210BD848210BD10B5044621460FF2BC50F3F7\n" 
+"B1FE88484FF47A716143C0F8161010BD10B5044621460F\n" 
+"F2AC50F3F7A3FE4FF47A706043BDE810400EF050BC7D4B\n" 
+"83F84D0003F24D00012343708170110EC170110C017111\n" 
+"0A417182717047DFF8C40470470000FC85880094038800\n" 
+"F08588002DE9F04105460E46002140F24917307817FB00\n" 
+"5001220270307817FB00502C228270684C04F11C0898F8\n" 
+"1F00C20707D5D4F83F2094F83C10FFF7C8FF012122E042\n" 
+"071DD5307817FB005001224270307817FB005098F81F20\n" 
+"C270307817FB005002220271307817FB0050D4F8DD21C0\n" 
+"F806203078401C30700846C4F8DD0102E0000700D50121\n" 
+"002900F08980307817FB00500121417098F81F00C10765\n" 
+"D504F13C08307817FB005098F801104171307817FB0055\n" 
+"FFF79AFF28613078401C307004F23F05E07E052838D100\n" 
+"2020E000EB400292000F3292B2131993F84D301B06521C\n" 
+"92B2161996F84D6003EB0643521C92B2161996F84D6003\n" 
+"EB0623521C92B2121992F84D2053FA82F251186960401C\n" 
+"696898F80220C0B29042D8D3DFF89803814203D3DFF894\n" 
+"0340186860F19403E0C78300687B002808D1297B68680E\n" 
+"F07FFB03E0297BE0690EF07AFB0EF09DFBE07E052803D1\n" 
+"6868C4F83F0003E0E069C4F83F006860002084F83C0088\n" 
+"F8020019E0010717D5317817FB0151C87004F2DD103178\n" 
+"17FB0151827C8A72317817FB0151C27CCA72317817FB01\n" 
+"51C068C8603078401C3070BDE8F041CCE610B400228842\n" 
+"01D3421A06E00B1AC34CA34202D3BF4A1018421A104610\n" 
+"BC7047FC8588002DE9F04796B081468A469046BB4C2078\n" 
+"C00740F117810025494600A80EF0E0FA9DF800008DF830\n" 
+"00DDF80900CDF83900DDF80500CDF83500DDF80D00CDF8\n" 
+"3D00DDF80100CDF83100B8F1010F0DD12846CDF83D00CD\n" 
+"F83500CDF83900CDF831004946E0690EF004FBB2E05646\n" 
+"012E0DD194F83E00002803D094F83C00002801D10125A5\n" 
+"E0401E84F83C00A1E0022E34D12E4694F84C00864280F2\n" 
+"9A80711DC9B211A80EF09DFA8DF81090DDF84D00CDF819\n" 
+"00DDF84900CDF81500DDF85100CDF81D00DDF84500CDF8\n" 
+"110094F83C00029003A984B068461822EDF7DCFC0FBCFF\n" 
+"F707FA94F83E00401C84F83E0094F83C00401C84F83C00\n" 
+"761CCBE7032E01D0042E66D12F462EE0791DC9B200A80E\n" 
+"F068FA03208DF81800DDF80900CDF82100DDF80500CDF8\n" 
+"1D00DDF80D00CDF82500DDF80100CDF8190094F83C0002\n" 
+"9005A984B068461822EDF7A6FC0FBCFFF7D1F994F83E00\n" 
+"401C84F83E0094F83C00401C84F83C007F1C94F84C0087\n" 
+"42CCDB042E2CD1032100A80EF034FA03208DF81800DDF8\n" 
+"0900CDF82100DDF80500CDF81D00DDF80D00CDF82500DD\n" 
+"F80100CDF8190094F83C00029005A984B068461822EDF7\n" 
+"72FC0FBCFFF79DF994F83E00401C84F83E0094F83C0040\n" 
+"1C84F83C0003200EF074FA94F83C0002900BA984B06846\n" 
+"1822EDF759FC0FBCFFF784F99DF8300084F84B00B8F101\n" 
+"0F08D194F83E00401C84F83E0048460EF059FA18E0BAF1\n" 
+"000F06D05646022E03D0042E01D0032E05D194F83E0040\n" 
+"1C84F83E0008E0012E06D1012D04D194F83E00401C84F8\n" 
+"3E0094F83C00401C84F83C0016B0BDE8F0872DE9FC4105\n" 
+"460C462046FCF702FE0022294B09F0DCFF09F0EEFE8DF8\n" 
+"00009DF80000254901FB10484046FCF7F2FD0022234B09\n" 
+"F0CCFF09F0DEFE06468DF801604EF66027F6B207FB1680\n" 
+"FCF7E2FD1C4A1D4BFCF7ECFD09F0CEFE8DF802009DF800\n" 
+"104EF6806202FB114107FB1611C0B24FF47A7202FB1010\n" 
+"ADF80300284600A90522EDF7D2FBBDE8F681814F120000\n" 
+"408F4000001C4013BA83000DBC830025BE830049868800\n" 
+"005C2605F1940370CB830000A4D9FAA1780F05FC858800\n" 
+"40774B4180EE3600004CED40FCA9F1D24D62503F534C4D\n" 
+"2046420000534C4D204F4E20434E542025642F25640000\n" 
+"0000534C4D204F464620434E542025642F25642F256400\n" 
+"000000534C4D2049412042522025642F25642F25640000\n" 
+"534C4D2049412055502025642F256400534C4D2031502F\n" 
+"2564000000534C4D2032502F2564000000534C4D203350\n" 
+"2F2564000000534C4D2034502F2564000000534C4D2035\n" 
+"502F25640000000FB410B5032200210846FCF71FFB0228\n" 
+"01D1022020E00FF24800F3F7BBFBDFF8484C0020E073E0\n" 
+"82E0629DF80C209DF80B109DF80A000DF04EFA58220021\n" 
+"DFF8500DFBF7AEFD00202064A07420746083E061606420\n" 
+"75012010BC5DF814FB000050443A205374617274506564\n" 
+"6F2D30383232000080B5032200210120FCF7E6FA032801\n" 
+"D1032002BD012002BD70B52DED028B8EB002A8FCF738FB\n" 
+"DFF8CC5B286A697A427A914205D0407A10F05BFE286A40\n" 
+"7A6872286A297A027B914205D0007B10F04DFE286A007B\n" 
+"287205210320FCF794FB002814D1DFF8240C0A90002068\n" 
+"83A883E88B401CE88380B240F2EF2188424ADB0FF2E800\n" 
+"F3F74DFB0020E88343E09DED0A8A95F90A00022836D195\n" 
+"ED110AB4EE408AF1EE10FA03D1688B401C688301E00020\n" 
+"68839FEDA50AB4EE408AF1EE10FA06D49FEDA20AB4EE40\n" 
+"8AF1EE10FA03DBA88B401CA88301E00020A883AE8B6C8B\n" 
+"972C01DA972E12DB18EE100AFCF789FDCDE90001324621\n" 
+"460FF28000F3F711FB00206883A88302E000206883A883\n" 
+"0020E88385ED118A686AD0F894400DF021F9A87295F90A\n" 
+"00022806D13C2C04D114210320FCF7B3FA07E0012805D1\n" 
+"142C03D13C210320FCF7AAFA204680B2DDED0A1A02A991\n" 
+"EC030A0CF0B5FFA86A2018A86201200EB0BDEC028B70BD\n" 
+"5044204261726F44697361626C6564005044204241524F\n" 
+"2025642025642025660000000010B5DFF8644A94F90000\n" 
+"00283AD494F90C0094F90110814228D1A17B0818207340\n" 
+"B23D2801DB3C38207394F90C100FF27000F3F7AFFA0020\n" 
+"A062DFF85C0B90F9010010F1010F01D1012010BD94F901\n" 
+"10081AFCF725FC21F0004109F01DFD40B2012801DB0120\n" 
+"10BD002010BDDFF82C0B90F90120914203D0D4E90023C0\n" 
+"E90023002010BDA06ADFF8181B884205DB0FF21C00F3F7\n" 
+"7FFA012010BD002010BD000050443A204E542025640000\n" 
+"0050443A204E6F54696D650000F8B52DED028B0025DFF8\n" 
+"A44901E0B819207394F90C60002D19D46078851B6DB294\n" 
+"F90E70F1940300CF8300002DF2D52846FCF7DDFB21F000\n" 
+"4141EC180B3846FCF7D6FB53EC182B09F014FCE5D2F01B\n" 
+"20730025E1E73C2E02DBA6F13C002073BDEC028BF1BD10\n" 
+"B5DFF84C49002020740120A0720020E0724FF0FF302070\n" 
+"0F2060731420A0730020E073E082E062E074A063E06328\n" 
+"220146DFF8580AFBF729FCFCF77AF96062F3F7A8F92062\n" 
+"606ADFF8481AC0F8A810A830DFF8401A4160DFF8401A81\n" 
+"600FF27D21C1600FF63D210161012010BD10B582B04FF4\n" 
+"6163C1EB0114A40013FB0043D3184FF47A746343DFF804\n" 
+"4A2360DFF8C0389B7C009313460A460146DFF8000AF3F7\n" 
+"EDF913BD0000FA430180BB442DE9F0412DED028BAAB0DF\n" 
+"F8C069314684B068465822EDF787F90FBC00F08EFC10EE\n" 
+"100AFCF744FC41EC100B9FED7E8BDFF8AC49656853EC10\n" 
+"2B51EC180BFCF765FB09F047FC15FA80F060604FF6FF75\n" 
+"A84200D36560314684B068465822EDF763F90FBC00F020\n" 
+"FC10EE100AFCF720FC41EC100BA76853EC102B51EC180B\n" 
+"FCF745FB09F027FC17FA80F0A060A84200D3A560002013\n" 
+"9002201290314684B068465822EDF741F90FBC00F07EFA\n" 
+"A1894018A08180B2FF2801DBFF20A08100201390032012\n" 
+"90314684B068465822EDF72CF90FBC00F069FA21694018\n" 
+"2061A84200D325610020139006201290314684B0684658\n" 
+"22EDF719F90FBC00F056FAA18A4018A08280B2FF2801DB\n" 
+"FF20A0820020139007201290314684B068465822EDF704\n" 
+"F90FBC00F041FAE18A4018E08280B2FF2801DBFF20E082\n" 
+"0020139008201290314684B068465822EDF7EFF80FBC00\n" 
+"F02CFAA1694018A061A84200D3A5610020139009201290\n" 
+"314684B068465822EDF7DCF80FBC00F019FAE1694018E0\n" 
+"61A84200D3E56114A80CF049FFDFF81877D7F838802398\n" 
+"FCF78DFB0022DFF83C3DFCF7B6FA09F098FB58FA80F0B8\n" 
+"63F96B491CF963B0FBF1F084F820000020139001201290\n" 
+"314684B068465822EDF7AEF80FBC00F0EBF9616A401860\n" 
+"62A84200D36562787C00F0E1FA2AB0BDEC028BBDE8F081\n" 
+"DFF8F0078189002914D10169002911D1818A00290ED1C1\n" 
+"8A00290BD18169002908D1C169002905D1406A401E8041\n" 
+"C043C00F704701207047000000000000000059402DE9F0\n" 
+"4FABB0814600254E46DFF86446207C494688420DD0012E\n" 
+"7AD128460DF031FB606A90F9902090F991100FF67C40F3\n" 
+"F7B6F814A80CF0D8FEDFF860A728461390012012905146\n" 
+"84B068465822EDF753F80FBC00F090F907469DED230ADA\n" 
+"ED0F0A30EE600A10EE100AFCF709FB2A46DFF8343CFCF7\n" 
+"32FAF1940390D2830009F014FB80461FFA88F8BDF89A00\n" 
+"BAF84A10A0EB010B5FFA8BFB206C216B149A5118091A21\n" 
+"63626B149B9A18101A6063B9F1000F42D1002902D00120\n" 
+"10F070FC606B002802D0012010F027FD002F02D15BEA08\n" 
+"0000D001250020A0624FF0FF302070DFF8CC26D4E90001\n" 
+"C2E90001DFF8282CC2E90001DFF8B426C2E90001607B20\n" 
+"73207C002851D000202074A07C00284CD00120E0740546\n" 
+"48E0B9F1000F07D10FF6A430F3F740F801200DF0AFFA85\n" 
+"E70FF6A030F3F738F82846EDE000F0ADF900281BD000A8\n" 
+"F3F7D4FA204600A90522ECF7C6FF2846E072DFF85426D4\n" 
+"E90001C2E9000194F9023094F9012094F900100FF67C30\n" 
+"F3F718F8FFF7A8FD00A8F3F7B8FA204600A90522ECF7AA\n" 
+"FFFFF742FD00280BD0DFF81426D4E90001C2E90001A07C\n" 
+"002801D00120E0740125012E07D1207C4946884203D000\n" 
+"F04FFA84F81090012E58D1002F56D0DFF84C9B607CA17C\n" 
+"08430CD10120A0740522214609F10800F7F7FEFAA27861\n" 
+"782078FFF7D5FD94F9010099F90910401A411E222901D2\n" 
+"012005E010F1230F01DA012000E0002001282AD10020A0\n" 
+"63E063FFF7D5FE002823D028220021DFF89005FBF7C5F9\n" 
+"607C401C6074C0B2152809D10FF6CC20F2F7B4FF0120E0\n" 
+"740020607401250DE0A07C401CA074A27861782078FFF7\n" 
+"9EFD0522214609F10800F7F7BCFAFFF7B6FD582214A950\n" 
+"46F7F7B5FAE07B012833D1E08A002805D10FF6E430F2F7\n" 
+"8FFF012523E0E16A814218D2002F02D15BEA080000D001\n" 
+"25DFF8749A99F9020094F90220904212D0491CE1620FF6\n" 
+"C430F2F776FFD4E90001C9E9000107E00020E073E082E0\n" 
+"620FF6BC30F2F769FF012E04D1A07C002801D00120E074\n" 
+"2846012801D10021A162616A91F89110002906D10021A1\n" 
+"62012801D100F0ABF90025002D03D1207D012800D10125\n" 
+"1498206428462BB0BDE8F08F10B5DFF8080B0021816203\n" 
+"2205210020FBF797FE044600F007F8204610BD03220521\n" 
+"0120FBF78DBE00B597B000A80CF051FD582200A9DFF8DC\n" 
+"0AF7F742FA012017B000BDDFF8C80A006B7047DFF8C00A\n" 
+"002101637047DFF8B40A00214163704700000FB410B596\n" 
+"B000249DF9BC0001280BD10CF026FE1899884202D3441A\n" 
+"E4B272E08038441AE4B26EE000A80CF022FD9DF9B80040\n" 
+"1E082866D8DFE800F02905111D2936424E5A0001981999\n" 
+"884201D3441A59E0DFF8782A1018401A441C53E002981A\n" 
+"99884201D3441A4DE0DFF8602A1018401A441C47E00398\n" 
+"1B99884201D3441A41E0DFF8482A1018401A441C3BE000\n" 
+"98F1940320D683001899884201D3441A35E0DFF8301A08\n" 
+"181899401A441C2EE004981C99884201D3441A28E0DFF8\n" 
+"142A1018401A441C22E005981D99884201D3441A1CE0DF\n" 
+"F8FC291018401A441C16E006981E99884201D3441A10E0\n" 
+"DFF8E4291018401A441C0AE007981F99884201D3441A04\n" 
+"E0DFF8CC291018401A441C204616B010BC5DF814FBDFF8\n" 
+"98090121C1727047DFF89009C07A704710B504460CF0B7\n" 
+"FC022C0CD1DFF87C09406A90F9902090F991100FF6E010\n" 
+"BDE81040F2F770BE10BD0146DFF85C29792902DB7820D0\n" 
+"8200E0D0820120D0730FF6D010F2F760BE0000000010B5\n" 
+"040001D1012402E0072C00DB062421460FF6C810F2F751\n" 
+"FE641E052C2DD8DFE804F0030A11181F26DFF814093721\n" 
+"41733C21817321E0DFF80409192141731E2181731AE0DF\n" 
+"F8F8080F2141731421817313E0DFF8E8080A2141730F21\n" 
+"81730CE0DFF8DC08072141730C21817305E0DFF8CC0805\n" 
+"2141730A218173DFF8C008417B0173BDE81040FFF7AABB\n" 
+"DFF89808704700EB80018800421CDFF88C088B4992B20B\n" 
+"681B0E1354521C92B20B681B0C1354521C92B20B681B0A\n" 
+"1354521C92B20B681354521C92B24B681B0A1354521C92\n" 
+"B24B681354521C92B28B681B0A1354521C92B28B681354\n" 
+"521C92B28B891354521C92B20B691B0A1354521C92B20B\n" 
+"691354521C92B28B8A1354521C92B2CB8A1354521C92B2\n" 
+"8B691B0A1354521C92B28B691354521C92B2CB691B0A13\n" 
+"54521C92B2CB691354521C92B291F820301354521C92B2\n" 
+"4B6A1B0A1354521C92B2496A11540F48511C0183704710\n" 
+"B5DFF8E047218B0FF68400F2F7A9FD208B10BD80B52822\n" 
+"00215548FAF7A8FFDFF8C4070021417401210183002181\n" 
+"748163C16301BD708288000FB400B597B000A80CF0B3FB\n" 
+"9DED090ADDED210AB4EE600AF1EE10FA02DB30EE600A05\n" 
+"E09FED401A71EE600A30EE800A10EE100AFBF7E8FFDFF8\n" 
+"5C27DFF85C370DF062F8FCF708F8FBF7DEFF0022DFF850\n" 
+"37FBF707FF08F0E9FF00EE100AB8EEC00A10EE100AFBF7\n" 
+"CFFFDFF82C27DFF83437FBF7F7FEDFF83027DFF854370D\n" 
+"F043F8FBF7E9FF00EE100A17B05DF814FB00007A440FB4\n" 
+"00B597B000A80CF069FB9DED0E0ADDED260AB4EE600AF1\n" 
+"EE10FA02DB30EE600A05E09FED1B1A71EE600A30EE800A\n" 
+"10EE100AFBF79EFFDFF8C826DFF8C8360DF018F8FBF7BE\n" 
+"FFFBF794FF0022DFF8BC36FBF7BDFE08F09FFF00EE100A\n" 
+"B8EEC00A10EE100AFBF785FFDFF89826DFF8A036FBF7AD\n" 
+"FEDFF89C26DFF8C0360CF0F9FFFBF79FFF00EE100A17B0\n" 
+"F19403B0D983005DF814FB1882880000247449C0828800\n" 
+"B882880040771B00D882880025CC830099CC8300B1CC83\n" 
+"00445286002DE9F8432DED068BAAB006460D4614A80CF0\n" 
+"09FB40F24914287814FB006001210170DFF83C76F87B01\n" 
+"2804D1F88A002801D10020F873287814FB006041702878\n" 
+"14FB006003218170387D012813D1287814FB0060E02101\n" 
+"715022DFF80816287814FB0060401DF6F7D5FF2878401C\n" 
+"28700020387531E2F87C012820D1B87C00281DD0297814\n" 
+"FB0161C0220A71DFF8B8150870FFF7F2FE297814FB0161\n" 
+"A1F85500287814FB0064FFF781FEC4F857002878401C28\n" 
+"70FFF7EBFE0020F8740DE20DF18C089FED828B9FED839B\n" 
+"DFF89C750020139001201290394684B068465822ECF729\n" 
+"FC0FBCFFF766FD0A28287814FB006080F0F48000210171\n" 
+"0846139002201290394684B068465822ECF714FC0FBCFF\n" 
+"F751FD297814FB01610A79104308710020139003201290\n" 
+"394684B068465822ECF701FC0FBCFFF73EFD297814FB01\n" 
+"6148710020139004201290394684B068465822ECF7F0FB\n" 
+"0FBCFFF72DFD297814FB01618871002013900520129039\n" 
+"4684B068465822ECF7DFFB0FBCFFF71CFD297814FB0161\n" 
+"C871394684B068465822ECF7D2FB0FBCFFF7D9FE10EE10\n" 
+"0AFBF78FFE41EC100B287814FB006953EC102B51EC190B\n" 
+"FBF7B2FD08F094FEA9F80E00287814FB00692398FBF77A\n" 
+"FE53EC182BFBF7A4FD08F086FE89F81000287814FB0060\n" 
+"B8F80E104174394684B068465822ECF7A2FB0FBCFFF75F\n" 
+"FE10EE100AFBF75FFE41EC1A0B287814FB006953EC1A2B\n" 
+"51EC190BFBF782FD08F064FE89F81200287814FB0069D8\n" 
+"F80800FBF749FE53EC182BFBF773FD08F055FE89F81300\n" 
+"0020139006201290394684B068465822ECF773FB0FBCFF\n" 
+"F7B0FC297814FB016108720020139007201290394684B0\n" 
+"68465822ECF762FB0FBCFFF79FFC297814FB0161487200\n" 
+"20139008201290394684B068465822ECF751FB0FBCFFF7\n" 
+"8EFC297814FB016188720020139009201290394684B068\n" 
+"465822ECF740FB0FBCFFF77DFC297814FB0161C8722878\n" 
+"401C287005E100BF000000000000244000000000000059\n" 
+"40802101710020139002201290394684B068465822ECF7\n" 
+"20FB0FBCFFF75DFC297814FB0161C1F805000020139003\n" 
+"201290394684B068465822ECF70EFB0FBCFFF74BFC2978\n" 
+"14FB0161C1F809000020139004201290394684B0684658\n" 
+"22ECF7FCFA0FBCFFF739FC297814FB0161C1F80D000020\n" 
+"139005201290394684B068465822ECF7EAFA0FBCFFF7F1\n" 
+"940340DD830027FC297814FB0161C1F81100394684B068\n" 
+"465822ECF7DCFA0FBCFFF7E3FD10EE100AFBF799FD41EC\n" 
+"100B287814FB006953EC102B51EC190BFBF7BCFC08F0B4\n" 
+"FDC9F82700287814FB00692398FBF784FD53EC182BFBF7\n" 
+"AEFC08F090FD89F82B00287814FB0060B8F80E1080F82C\n" 
+"10394684B068465822ECF7ABFA0FBCFFF768FD10EE100A\n" 
+"FBF768FD41EC1A0B9E4A9F4B08F0D2FC06D89E4A9E4B08\n" 
+"F0B5FC01D29FEDA0AB287814FB006953EC1A2B51EC180B\n" 
+"FBF77FFC08F061FDA9F82D00287814FB0069D8F80800FB\n" 
+"F746FD53EC182BFBF770FC08F052FD89F82F0000201390\n" 
+"06201290394684B068465822ECF770FA0FBCFFF7ADFB29\n" 
+"7814FB0161C1F815000020139007201290394684B06846\n" 
+"5822ECF75EFA0FBCFFF79BFB297814FB0161C1F8190000\n" 
+"20139008201290394684B068465822ECF74CFA0FBCFFF7\n" 
+"89FB297814FB0161C1F81D000020139009201290394684\n" 
+"B068465822ECF73AFA0FBCFFF777FB297814FB0161C1F8\n" 
+"21002878401C2870FFF750FB2AB0BDEC068BBDE8F18300\n" 
+"0024405044205265662045282564292C49282564290000\n" 
+"5044203A206C63646F6E00005044203A20624973415053\n" 
+"6C656570696E672077726F6E672025640050443A54696D\n" 
+"654E6F7469202564202564202564000000005044204254\n" 
+"2042462046554C4C000000C882880010B582B004460020\n" 
+"002C05D10FF2BC10F2F73CFA002016BD04F15001497801\n" 
+"295AD10FF2B810F2F731FA0020ADF8000020E0BDF80000\n" 
+"54F82000BDF80010354A42F82100BDF8000054F8200000\n" 
+"EE100AB8EE400ADFED270A20EE200ABDF80000324901EB\n" 
+"800080ED000ABDF80000401CADF80000BDF80000142827\n" 
+"DABDF8000054F82000B0F52F7F07D3BDF8000054F82000\n" 
+"40F215518842CBD3BDF8000054F82020BDF800100FF240\n" 
+"10F2F7EFF9BDF800001E494FF07E5241F82020BDF80000\n" 
+"14494FF47A7241F82020CEE71748012101650CF04FFC0B\n" 
+"E0022909D194F850100FF21810F2F7D2F994F850000120\n" 
+"C046C0B216BD6F12833A008388007B14AE47E17A743F00\n" 
+"005940E17A843F2D431CEB70828800F002880018828800\n" 
+"B81E85EB51B89E3F9A9999999999B93F40038800809698\n" 
+"00E2361A3F9A9999999999B93F80B50CF019FC012002BD\n" 
+"000050443A20526571205065646F496E666F3100000050\n" 
+"443A207574696D657220256400000050443A2052657120\n" 
+"5065646F496E666F320000005044205265663220452825\n" 
+"64292C49282564290050443A205374617274204461F194\n" 
+"03D0E08300746120256400000050443A20555420256400\n" 
+"000050443A204241544C454E4754482025640000000050\n" 
+"442053462050545233206E756C6C005044205346205345\n" 
+"543100005044205346204552525B25645D202564000000\n" 
+"0050442053462053455432202564000000D2B2203A22BF\n" 
+"00FA02F1002070475242D041D2F1200291404140D04090\n" 
+"40414070470000D2B2203A22BF21FA02F0002170472032\n" 
+"D141D04048409140D140484070470000DFF8081C087070\n" 
+"4770B50546F2F7A1F80646DFF8FC4B2078401C2070E9F7\n" 
+"32FB6078401C6070294689B23046F2F781FA6078401E60\n" 
+"70C0B2002801D1E9F71CFBBDE87040E9F75FBC1CB50446\n" 
+"0120009001ABFF221B210020F2F7FAF9002808D16222DF\n" 
+"F8881ADFF8AC0BF2F7E7F8002016BD9DF8040000F0CE00\n" 
+"20438DF804000FF238000088ADF800009DF804008DF801\n" 
+"00022300AA1B210020F2F7A1F9002808D16722DFF8441A\n" 
+"DFF8680BF2F7C6F8002016BD012016BD000000007F001C\n" 
+"B504460020FFF7C0FF0120009001AB85221B210020F2F7\n" 
+"BCF9002808D17322DFF80C1ADFF8300BF2F7A9F8002016\n" 
+"BD9DF8040020438DF804000FF234000088ADF800009DF8\n" 
+"04008DF80100022300AA1B210020F2F765F9002808D177\n" 
+"22DFF8CC19DFF8F00AF2F78AF8002016BD012016BD0500\n" 
+"7CB504460D4616462020FFF784FF0120009001AB81221B\n" 
+"210020F2F780F9002808D19922DFF89419DFF80C0DF2F7\n" 
+"6DF8002076BD9DF8040000F0C00046EAC40141EA450108\n" 
+"438DF804000FF294000088ADF800009DF804008DF80100\n" 
+"022300AA1B210020F2F723F9002808D19D22DFF84819DF\n" 
+"F8C00CF2F748F8002076BD0FF264000088ADF800000223\n" 
+"00AA1B210020F2F70DF9002808D1A722DFF81C19DFF894\n" 
+"0CF2F732F8002076BD0FF23C000088ADF80000022300AA\n" 
+"1B210020F2F7F7F8002808D1A822DFF8F018DFF8680CF2\n" 
+"F71CF8002076BD0020FFF71DFF012076BD000001000000\n" 
+"0201000000047CB505460C46164600208DF804002020FF\n" 
+"F70BFF0120009001AB94221B210020F2F707F9002808D1\n" 
+"B822DFF8A018DFF8180CF1F7F4FF002076BD9DF8040000\n" 
+"F0C00046EAC50141EA440108438DF804000FF294000088\n" 
+"ADF800009DF804008DF80100022300AA1B210020F2F7AA\n" 
+"F8002808D1BD22DFF85818DFF8D00BF1F7CFFF002076BD\n" 
+"0FF264000088ADF80000022300AA1B210020F2F794F800\n" 
+"2808D1C722DFF82C18DFF8A40BF1F7B9FF002076BD0FF2\n" 
+"3C000088ADF80000022300AA1B210020F2F77EF8F19403\n" 
+"60E48300002808D1C822DFF80018DFF8780BF1F7A3FF00\n" 
+"2076BD0020FFF7A4FE012076BD1400000015020000110A\n" 
+"1CB504462020FFF798FE0120009001ABD3221B210020F2\n" 
+"F794F8002808D1D922DFF8BC17DFF8340BF1F781FF0020\n" 
+"16BD9DF8040000F0F80020438DF804000FF23C000088AD\n" 
+"F800009DF804008DF80100022300AA1B210020F2F73BF8\n" 
+"002808D1DE22DFF87817DFF8F00AF1F760FF002016BD00\n" 
+"20FFF761FE012016BD000053001CB504460020FFF758FE\n" 
+"0120009001ABEE221B210020F2F754F8002808D1EB22DF\n" 
+"F83C17DFF8B40AF1F741FF002016BD9DF8040000F0FC00\n" 
+"20438DF804000FF234000088ADF800009DF804008DF801\n" 
+"00022300AA1B210020F1F7FBFF002808D1F022DFF8F816\n" 
+"DFF8700AF1F720FF002016BD012016BD6E0080B50FF2C8\n" 
+"100088ADF8000001208DF80100022300AA1B210020F1F7\n" 
+"DEFF002808D1FE22DFF8C016DFF8E407F1F703FF002002\n" 
+"BDF1F78AFE0521F2F777F80FF290100088ADF800004020\n" 
+"8DF80100022300AA1B210020F1F7C0FF002809D140F203\n" 
+"12DFF88016DFF8A407F1F7E4FE002002BDF1F76BFE0521\n" 
+"F2F758F80FF258100088ADF80000022300AA1B210020F1\n" 
+"F7A4FF002809D14FF48372DFF84816DFF86C07F1F7C8FE\n" 
+"002002BD2020FFF704FE01280FD02020FFF7FFFD03464F\n" 
+"F48572DFF82416DFF8A009F1F7B5FE2020FFF7F3FD02BD\n" 
+"1020FFF7EFFD01280FD01020FFF7EAFD034640F20B12DF\n" 
+"F8F815DFF87409F1F7A0FE1020FFF7DEFD02BDF1F725FE\n" 
+"0521F2F712F8012203210846FFF70DFE012813D0012203\n" 
+"210846FFF706FE03464FF48B72DFF8BC15DFF83809F1F7\n" 
+"82FE012203210846FFF7F8FD02BD012211460720FFF768\n" 
+"FE012813D0012211460720FFF761FE034640F22312DFF8\n" 
+"8815DFF80409F1F767FE012211460720FFF753FE02BD00\n" 
+"20FFF7C7FE01280FD00020FFF7C2FE034640F22912DFF8\n" 
+"5815DFF8D408F1F750FE0020FFF7B6FE02BD0020FFF7F2\n" 
+"FE01280FD00020FFF7EDFE03464FF49572DFF83015DFF8\n" 
+"AC08F1F73BFE0020FFF7E1FE02BD012002BD0000060000\n" 
+"0007000000030000B583B0F1F7B6FD0FF240100088ADF8\n" 
+"0000022300AA1B210020F1F7F2FE002809D14FF4A972DF\n" 
+"F8E414DFF85C08F1F716FE00200EBD0FF214100088ADF8\n" 
+"0000022300AA1B210020F1F7DBFE002809D140F25312DF\n" 
+"F8B814DFF83008F1F7FFFD00200EBDF1F786FD6421F1F7\n" 
+"73FF0120009001AB80221B210020F1F7FAFE002809D140\n" 
+"F25712DFF88414DFF8FC07F1F7E6FD00200EBDF19403F0\n" 
+"E78300FFF7C7FE01280DD0FFF7C3FE034640F25B12DFF8\n" 
+"6414DFF8E007F1F7D5FDFFF7B8FE0EBD0120C04601280D\n" 
+"D00120C046034640F25F12DFF84014DFF8BC07F1F7C3FD\n" 
+"0120C0460EBD0AF0F4FFDFF8781C08700FF268000088AD\n" 
+"F80000022300AA1B210020F1F782FE002809D140F26512\n" 
+"DFF80414DFF87C07F1F7A6FD00200EBD0FF23C000088AD\n" 
+"F80000022300AA1B210020F1F76BFE002809D14FF4B772\n" 
+"DFF8D813DFF85007F1F78FFD00200EBD01200EBD00007E\n" 
+"00000006800000077F0000064010B5DFF8E84D20780028\n" 
+"07D1FFF74CFF002801D1002010BD01202070012010BD1C\n" 
+"B5DFF8CC4D2078C00701D5012016BD0020FFF76EFC0120\n" 
+"009001AB86221B210020F1F76AFE002808D140F29D12D9\n" 
+"49DFF8E006F1F757FD002016BD9DF80400400624D59DF8\n" 
+"040000F0BF008DF804000FF220100088ADF800009DF804\n" 
+"008DF80100022300AA1B210020F1F70EFE002808D14FF4\n" 
+"D172C749DFF89806F1F733FD002016BDF1F7BAFC1E21F1\n" 
+"F7A7FE0120009001AB87221B210020F1F72EFE002808D1\n" 
+"40F2AF12BB49DFF86806F1F71BFD002016BD9DF8040000\n" 
+"F0C7008DF804000FF2B4000088ADF800009DF804008DF8\n" 
+"0100022300AA1B210020F1F7D6FD002808D140F2B312AB\n" 
+"49DFF82806F1F7FBFC002016BDF1F782FC0521F1F76FFE\n" 
+"2020FFF7F7FB0FF274000088ADF80000022300AA1B2100\n" 
+"20F1F7B8FD002808D140F2B9129C49DFF8EC05F1F7DDFC\n" 
+"002016BD0FF24C000088ADF80000022300AA1B210020F1\n" 
+"F7A2FD002808D14FF4DD729149DFF8C005F1F7C7FC0020\n" 
+"16BD207840F001002070012108460FF040FA012016BD00\n" 
+"00060000000700000015020000110A00B583B001200090\n" 
+"01AB87221B210020F1F7B3FD002807D140F2E3127E49C7\n" 
+"48F1F7A1FC00200EBD9DF8040040F038008DF804000FF2\n" 
+"B4000088ADF800009DF804008DF80100022300AA1B2100\n" 
+"20F1F75CFD002807D140F2E5126E49B848F1F782FC0020\n" 
+"0EBD9DF804007F2830D10120009001AB86221B210020F1\n" 
+"F77EFD002807D14FF4F4726349AD48F1F76CFC00200EBD\n" 
+"9DF8040040F040008DF804000FF24C000088ADF800009D\n" 
+"F804008DF80100022300AA1B210020F1F727FD002807D1\n" 
+"4FF4F57254499D48F1F74DFC00200EBDDFF8800B017801\n" 
+"F0FE010170002101200FF0C4F901200EBD000007000000\n" 
+"060001207047F0B587B004460125DFF8880D06680020FF\n" 
+"F735FB0620009005ABAD221B210020F1F731FD002807D1\n" 
+"4FF402723D498648F1F71FFC002072E005A8F1940380EB\n" 
+"8300417821709DF814106170C178A1708178E170417921\n" 
+"710079607100208DF810002846009004AB87221B210020\n" 
+"F1F70EFD002807D140F232222B497548F1F7FCFB00204F\n" 
+"E00020DFF8FC7D00E0401C062804D2015DC25D9142F8D0\n" 
+"0025012D13D1F868411CF9600A2910DB0A2091FBF0F000\n" 
+"EB8002B1EB420008D10FF27000F1F7DBFBF868386101E0\n" 
+"0020F860062221463846F5F7EDFEB868401CB860C82190\n" 
+"FBF1F1C82202FB110000281AD138690390707A0290706C\n" 
+"80680190B06B80680090B4F90430B4F90220B4F900100F\n" 
+"F23000F1F7B2FBB868DFF8701D884201DB0020B8600120\n" 
+"07B0F0BD2808840041434320446174612053616D652025\n" 
+"640000000041522D2025642C25642C25642C2025642C20\n" 
+"25642C2025642C2025640000000038B50546F1F713FB04\n" 
+"460020FFF78AFA0FF2E0000088ADF80000022300AA1B21\n" 
+"0020F1F74BFC002808D140F26322DFF8C41DC448F1F770\n" 
+"FB002032BD14212046F1F7E5FC2020FFF76DFA0FF2AC00\n" 
+"0088ADF80000022300AA1B210020F1F72EFC002808D140\n" 
+"F26722DFF8881DB548F1F753FB002032BD0FF284000088\n" 
+"ADF800008DF80150022300AA1B210020F1F716FC002808\n" 
+"D14FF41A72DFF8581DA948F1F73BFB002032BD0020FFF7\n" 
+"3CFA0FF250000088ADF8000000208DF80100022300AA1B\n" 
+"21F1F7FBFB002808D14FF41B72DFF8241D9C48F1F720FB\n" 
+"002032BD14212046F1F795FC012032BDD02D88001C2788\n" 
+"001808840007C700001200000013000000070030B583B0\n" 
+"0546F1F791FA04460020FFF708FA0120009001AB86221B\n" 
+"210020F1F704FC002808D140F27B22DFF8C41C8448F1F7\n" 
+"F1FA00203EBD9DF80400400627D59DF8040000F0BF008D\n" 
+"F804000FF2FC100088ADF800009DF804008DF801000223\n" 
+"00AA1B210020F1F7A8FB002808D140F27F22DFF87C1C72\n" 
+"48F1F7CDFA00203EBD14212046F1F742FC0FF2C410F1F7\n" 
+"C3FA012211460720FFF7AFFA012812D0012211460720FF\n" 
+"F7A8FA034640F28622DFF8401C6448F1F7AFFA01221146\n" 
+"0720FFF79BFA3EBD2020FFF7ACF90FF294100088ADF800\n" 
+"00022300AA1B210020F1F76DFB002808D14FF42272DFF8\n" 
+"081C5548F1F792FA00203EBD2020FFF793F9002D03D000\n" 
+"208DF8040002E019208DF804009DF80400FFF7F4FE2020\n" 
+"FFF783F90FF248100088ADF80000022300AA1B210020F1\n" 
+"F744FB002808D140F29B22DFF8B41B4048F1F769FA0020\n" 
+"3EBD0020FFF76AF9C7208DF804000FF214100088ADF800\n" 
+"00C7208DF80100022300AA1B210020F1F7F1940310EF83\n" 
+"0025FB002808D140F2A322DFF8781B3148F1F74AFA0020\n" 
+"3EBD14212046F1F7BFFB0020FFF747F90120009001AB90\n" 
+"221B210020F1F743FB002808D140F2A922DFF8441B2448\n" 
+"F1F730FA00203EBD9DF8040040F008008DF804000FF2A4\n" 
+"000088ADF800009DF804008DF80100022300AA1B210020\n" 
+"F1F7EBFA002808D140F2AB22DFF8041B1448F1F710FA00\n" 
+"203EBD0FF274000088ADF80000022300AA1B210020F1F7\n" 
+"D5FA002808D14FF42B72DFF8D81A0948F1F7FAF900203E\n" 
+"BD012211460320F1F7EDFBF3F7ECFADFF8C02AC2E90201\n" 
+"01203EBD00001808840090088400060000005B494E564E\n" 
+"5D20574F4D2066726F6D20534C500011FF000012030000\n" 
+"0700000010000000120080B50020FFF7C2FE002801D100\n" 
+"2002BD0120FFF7A8F8012002BD38B504460020FFF7C5F8\n" 
+"0FF280400088ADF80000022300AA1B210020F1F786FA00\n" 
+"2809D140F20732DFF8381ADFF8FC0DF1F7AAF9002032BD\n" 
+"0FF254400088ADF80000022300AA1B210020F1F76FFA00\n" 
+"2809D14FF44272DFF80C1ADFF8D00DF1F793F9002032BD\n" 
+"0FF22C400088ADF80000022300AA1B210020F1F758FA00\n" 
+"2809D140F20A32DFF8DC19DFF8A00DF1F77CF9002032BD\n" 
+"0FF200400088ADF80000022300AA1B210020F1F741FA00\n" 
+"2809D140F20B32DFF8B019DFF8740DF1F765F9002032BD\n" 
+"0FF2D8300088ADF80000022300AA1B210020F1F72AFA00\n" 
+"2809D14FF44372DFF88019DFF8440DF1F74EF9002032BD\n" 
+"0FF2AC300088ADF80000022300AA1B210020F1F713FA00\n" 
+"2809D140F21132DFF85419DFF8180DF1F737F9002032BD\n" 
+"0FF284300088ADF8000000208DF80100022300AA1B21F1\n" 
+"F7FAF9002809D140F21532DFF82019DFF8E40CF1F71EF9\n" 
+"002032BD0FF254300088ADF80000022300AA1B210020F1\n" 
+"F7E3F9002809D140F21732DFF8F418DFF8B80CF1F707F9\n" 
+"002032BD0FF22C300088ADF80000022300AA1B210020F1\n" 
+"F7CCF9002809D140F21932DFF8C418DFF8880CF1F7F0F8\n" 
+"002032BD2020FEF7F1FF0FF2FC200088ADF80000022300\n" 
+"AA1B210020F1F7B2F9002809D14FF44772DFF89018DFF8\n" 
+"540CF1F7D6F8002032BD0FF2D0200088ADF80000022300\n" 
+"AA1B210020F1F79BF9002809D140F21E32DFF86418DFF8\n" 
+"280CF1F7BFF8002032BD0FF2A8200088ADF80000022300\n" 
+"AA1B210020F1F784F9002809D140F21F32DFF83418DFF8\n" 
+"F80BF1F7A8F8002032BD0FF27C200088ADF80000022300\n" 
+"AA1B210020F1F76DF9002809D140F22132DFF80818DFF8\n" 
+"CC0BF1F791F8002032BD0FF254200088F19403A0F28300\n" 
+"ADF80000022300AA1B210020F1F756F9002809D140F222\n" 
+"32DFF8D817DFF89C0BF1F77AF8002032BD0FF228200088\n" 
+"ADF80000022300AA1B210020F1F73FF9002809D140F223\n" 
+"32DFF8AC17DFF8700BF1F763F8002032BD0FF200200088\n" 
+"ADF80000022300AA1B210020F1F728F9002809D14FF449\n" 
+"72DFF87C17DFF8400BF1F74CF8002032BD1020FEF74DFF\n" 
+"634D012000902B1D82221B210020F1F748F9002809D14F\n" 
+"F44A72DFF84C17DFF8100BF1F734F8002032BD01200090\n" 
+"6B1D83221B210020F1F734F9002809D140F22932DFF824\n" 
+"17DFF8E80AF1F720F8002032BD01200090AB1D84221B21\n" 
+"0020F1F720F9002809D140F22A32DFF8FC16DFF8C00AF1\n" 
+"F70CF8002032BD0120009005F108038E221B210020F1F7\n" 
+"0BF9002809D140F22B32DFF8D416DFF8980AF0F7F7FF00\n" 
+"2032BD0120009005F109038F221B210020F1F7F6F80028\n" 
+"09D14FF44B72DFF8A816DFF86C0AF0F7E2FF002032BD01\n" 
+"20009005F10A0390221B210020F1F7E1F8002809D140F2\n" 
+"2D32DFF88016DFF8440AF0F7CDFF002032BD0020FEF7CE\n" 
+"FE002C16D00FF2CC000088ADF80000022300AA1B210020\n" 
+"F1F78DF8002820D140F23132DFF84816DFF80C0AF0F7B1\n" 
+"FF002032BD0FF2A4000088ADF80000022300AA1B210020\n" 
+"F1F776F8002809D140F23332DFF81816DFF8DC09F0F79A\n" 
+"FF002032BD3220FEF77BFE4FF496720021DFF8240CF9F7\n" 
+"95F90C22002105F10C00F9F78FF90C22002105F11800F9\n" 
+"F789F9012032BD684F880006010000077F000010000000\n" 
+"1100000003000000760000006E00000003400000057000\n" 
+"00000A0000010100000203000010000000110A00001439\n" 
+"0000150200000778000007400178407840EA012000B270\n" 
+"472DE9F04788B08046894614461D4603A800210A460B46\n" 
+"0EC0B8F1020F01D1084600E004200FF274110988ADF800\n" 
+"108DF80100022300AA1B210020F1F708F8002809D140F2\n" 
+"6232DFF83C15DFF80009F0F72CFF00209AE00220009001\n" 
+"ABF0221B210020F1F72CF8002809D140F26632DFF81415\n" 
+"DFF8D808F0F718FF002086E09DF804009DF8051041EA00\n" 
+"20062190FBF1FA00271EE001A800EB4600FFF7ABFF06A9\n" 
+"21F8160059F8261001FA80F149F82610002C07D0296864\n" 
+"22DFF8F43A02FB063222F81100761C032EE4DB2868401C\n" 
+"28607F1C2868574517DA322815DA0620009001ABF2221B\n" 
+"210020F0F7E9FF002809D140F26E32DFF89014DFF85408\n" 
+"F0F7D5FE002043E00026DEE732283EDB002810D000260C\n" 
+"E059F82600296890FBF1F0811000EBF1940330F6830051\n" 
+"70C01003A941F82600761C032EF0DBB8F1020F28D1002C\n" 
+"26D0002620E06420DFF8681A00FB061030F917C04FEAAC\n" 
+"000CEB507003A951F82610C1EBE00204EBC603D3E90001\n" 
+"5243801851EBE27104EBC602C2E900017F1C28688742DF\n" 
+"DB761C032E01DA0027F7E7002008B0BDE8F0874B5D8800\n" 
+"495D880076002DE9FC410D4616461F460024A046214601\n" 
+"91002842D02020FEF77FFD0FF214200088ADF800003B20\n" 
+"8DF80100022300AA1B212046F0F73DFF002809D140F2A1\n" 
+"32DFF8A813DFF86C07F0F761FE2046ECE00FF2E4100088\n" 
+"ADF800001E208DF80100022300AA1B212046F0F723FF00\n" 
+"2809D140F2A632DFF87413DFF83807F0F747FE2046D2E0\n" 
+"2046FEF748FD1420FEF725FD04E045F8240046F8240064\n" 
+"1C032C4046F7DB01900FF294100088ADF80000022300AA\n" 
+"1B214046F0F7FCFE002808D140F2B132C949DFF8EC06F0\n" 
+"F721FE4046ACE0099C002C04D04FF49670FEF7FEFC08E0\n" 
+"6420FEF7FAFC04E03A4629460220FFF7B9FE019832286D\n" 
+"DA0FF244100088ADF80000022300AA1B214046F0F7D2FE\n" 
+"002808D140F2BA32B449DFF89806F0F7F7FD404682E00F\n" 
+"F21C100088ADF80000022300AA1B214046F0F7BCFE0028\n" 
+"08D140F2BB32A949DFF86C06F0F7E1FD40466CE01420FE\n" 
+"F7C2FC002C01D00E2000E010200FF2E4010988ADF80010\n" 
+"8DF80100022300AA1B214046F0F79CFE002808D140F2C3\n" 
+"329949DFF82C06F0F7C1FD40464CE01420FEF7A2FC0FF2\n" 
+"B0000088ADF80000022300AA1B214046F0F783FE002808\n" 
+"D140F2C5328D49DFF8F805F0F7A8FD404633E0002C01AB\n" 
+"8FD1424631460120FFF749FE8EE7002C1FD0B8F1030F1F\n" 
+"DA55F82800019990FBF1F045F828004FF47A71484345F8\n" 
+"280008F10108EDE756F82800019990FBF1F046F828004F\n" 
+"F47A71484346F8280008F10108B8F1030FEEDB08980028\n" 
+"01D0019901600120BDE8F681EC03880002000000150000\n" 
+"0067000000681F0000680000006700000067002DE9F043\n" 
+"87B004460D4616464FF00008474638460FF2901305E03A\n" 
+"4641F820204FF00108401C03280DDADFF8541D41180A79\n" 
+"00A9002AF0D003EB420232F8022C41F82020EEE7B94606\n" 
+"E0DFF8381D884200DB012709F10109B9F1030F1CDA55F8\n" 
+"290054F82910401A0EF0ABFC03A941F82900B8F1000FE8\n" 
+"D100A951F8291090FBF1F0A0F57A700EF09CFC46F82900\n" 
+"B0F5FA7FDFDD0127DDE7002F10D14FF000090AE054F829\n" 
+"000EF08CFCDFF8DC1C884200DB012709F10109B9F1030F\n" 
+"F1DB002F01D0002000E0012007B0F19403C0F98300BDE8\n" 
+"F0838C4F8800A18601002DE9F04186B004460D46174600\n" 
+"20012601460FF2BC0C04E0002042F821003046491C0329\n" 
+"0DDADFF8842C8A18137A03AA002BF1D00CEB430333F802\n" 
+"3C42F82130EEE700284FF0000832D1B8F1030F32DA55F8\n" 
+"280054F82810401A0EF047FC00A941F8280003AA52F828\n" 
+"1090FBF1F0A0F57A700EF03BFC47F82800B0F5FA7F00DD\n" 
+"002608F10108E0E755F8280054F82810401A0EF02BFC00\n" 
+"A941F82800DFF8741D0818DFF8741D884200D3002608F1\n" 
+"0108B8F1030FE8DB002E01D1002000E0012006B0BDE8F0\n" 
+"81000028088400D02D88003C0A560A700A8B0AA60AC10A\n" 
+"DD0AF80A150B310B4E0B6B0B880BA50BC30BE10B000C1E\n" 
+"0C3D0C5D0C7C0C9C0CBD0CDD0CFE0C1F0D410D630D850D\n" 
+"A80DCB0DEE0D120E360E5A0E7F0EA40ECA0EEF0E160F3C\n" 
+"0F630F8B0FB30FDB0F03102C1056108010AA10D4100011\n" 
+"2B1157118311B011DE110B12391268129712C712F71227\n" 
+"1359138A13BC13EF13221455148914BE14F31429155F15\n" 
+"9515CD1504163D167616AF16E91624175F179B17D81715\n" 
+"1852189118CF180F194F199019D119131A561A9A1ADE1A\n" 
+"221B681BAE1BF51B3D1C851CCE1C181D621DAD1DF91D46\n" 
+"1E941EE21E311F811FD11F23207520C8201C217121C721\n" 
+"1D227422CD2226238023DA2336249324F1244F25AF250F\n" 
+"267126D32636279B2700286728CE283629A0290B2A762A\n" 
+"E32A512BC02B302CA12C132D862DFB2D712EE82E602FD9\n" 
+"2F5330CF304C31CA314A32CA324C33D0335434DA346235\n" 
+"EA35743600378D371B38AA383C39CE39623AF83A8F3B27\n" 
+"3CC13C5D3DFA3D983E383FDA3F7E402341CA4172421C43\n" 
+"C84376442545D64589463D47F447AC486649224ADF4A9F\n" 
+"4B614C244DEA4DB14E7B4F46501451E351B55289535E54\n" 
+"36551156ED56CB57AC588F59745A5C5B465C325D215E12\n" 
+"5F0560FB60F361EE62EB63EB64ED65F266FA670469116A\n" 
+"206B336C486D5F6E7A6F9770B871DB7201742A75567685\n" 
+"77B778EC79247B5F7C9D7DDF7E2480000010B582B02020\n" 
+"FEF78FFADFF8404B01200090A31D80221B210020F0F789\n" 
+"FC002808D140F27942DFF8281B6548F0F776FB002016BD\n" 
+"01200090E31D81221B210020F0F776FC002808D140F27A\n" 
+"42DFF8001B5B48F0F763FB002016BD0120009004F10803\n" 
+"82221B210020F0F762FC002808D140F27B42DFF8D81A51\n" 
+"48F0F74FFB002016BD01200090E31C90221B210020F0F7\n" 
+"4FFC002808D140F27C42DFF8B41A4848F0F73CFB002016\n" 
+"BD01200090231D91221B210020F1940350FD8300F0F73C\n" 
+"FC002808D140F27D42DFF88C1A3E48F0F729FB002016BD\n" 
+"0120009004F1090394221B210020F0F728FC002808D140\n" 
+"F27E42DFF8641A3448F0F715FB002016BD0120009004F1\n" 
+"0A0395221B210020F0F714FC002808D140F27F42DFF83C\n" 
+"1A2A48F0F701FB002016BD0020FEF702FA01200090631D\n" 
+"83221B210020F0F7FEFB002808D140F28242DFF8101A1F\n" 
+"48F0F7EBFA002016BD01200090234685221B210020F0F7\n" 
+"EBFB002808D140F28342DFF8EC191648F0F7D8FA002016\n" 
+"BD01200090A31C87221B210020F0F7D8FB002808D140F2\n" 
+"8442DFF8C4190C48F0F7C5FA002016BD01200090631C86\n" 
+"221B210020F0F7C5FB002808D140F28542DFF8A0190348\n" 
+"F0F7B2FA002016BD012016BD1808840010B582B02020FE\n" 
+"F7ADF90020ADF80000DFF87449A0798DF80100022300AA\n" 
+"1B210020F0F76BFB002809D140F28D42DFF85C190FF684\n" 
+"10F0F78FFA002016BD0FF220200088ADF80000E0798DF8\n" 
+"0100022300AA1B210020F0F751FB002809D140F28E420F\n" 
+"F664110FF65010F0F775FA002016BD0FF2F0100088ADF8\n" 
+"0000207A8DF80100022300AA1B210020F0F737FB002809\n" 
+"D140F28F420FF630110FF61C10F0F75BFA002016BD0FF2\n" 
+"C0100088ADF80000E0788DF80100022300AA1B210020F0\n" 
+"F71DFB002809D14FF492620FF6FC010FF6E800F0F741FA\n" 
+"002016BD0FF290100088ADF8000020798DF80100022300\n" 
+"AA1B210020F0F703FB002809D140F291420FF6C8010FF6\n" 
+"B400F0F727FA002016BD0FF260100088ADF80000607A8D\n" 
+"F80100022300AA1B210020F0F7E9FA002809D140F29242\n" 
+"0FF694010FF68000F0F70DFA002016BD0FF230100088AD\n" 
+"F80000A07A8DF80100022300AA1B210020F0F7CFFA0028\n" 
+"09D140F293420FF660010FF64C00F0F7F3F9002016BD00\n" 
+"20FEF7F4F80FF2F8000088ADF8000060798DF801000223\n" 
+"00AA1B210020F0F7B2FA002809D140F296420FF624010F\n" 
+"F61000F0F7D6F9002016BD0FF2C8000088ADF800002078\n" 
+"8DF80100022300AA1B210020F0F798FA002809D140F297\n" 
+"420FF2F0710FF2DC70F0F7BCF9002016BD0FF660000088\n" 
+"ADF80000A0788DF80100022300AA1B210020F0F77EFA00\n" 
+"2809D14FF493620FF2BC710FF2A870F0F7A2F9002016BD\n" 
+"0FF630000088ADF8000060788DF80100022300AA1B2100\n" 
+"20F0F764FA002809D140F299420FF288710FF27470F0F7\n" 
+"88F9002016BDF0F70FF91E21F0F7FCFA012016BD0000A0\n" 
+"4F88000100000002000000100000001100000014000000\n" 
+"1500000003000000050030B5F19403E000840083B00446\n" 
+"0020ADF80600F0F7F0F80546FFF7D4FD012859D100208D\n" 
+"F804000FF2B0700088ADF8000000208DF80100022300AA\n" 
+"1B21F0F722FA002809D140F2CD420FF204710FF2F060F0\n" 
+"F746F900203EBD0120FEF736FE0020F0F73AFB01202070\n" 
+"2846407DC046012829D001212846F0F7AEFABDF8060040\n" 
+"1CADF80600BDF806003228EDDB0020FEF72DF801200090\n" 
+"01AB99221B210020F0F729FA002809D140F2DC420FF2A4\n" 
+"610FF29060F0F715F900203EBD9DF804100FF21C70F0F7\n" 
+"0DF9BDF806000020F0F704FB00F078F9FFF758FE012801\n" 
+"D000203EBD01203EBD2DE9F04F9DB004460D4613A80021\n" 
+"0A460B460EC00AA80EC010A80EC00DA80EC004A80EC00E\n" 
+"C016A81821E9F7C3FFDFF8040640680390002637463046\n" 
+"02904FF00208FFF74DFD012840F03181022C01D1012000\n" 
+"E03046FEF70DFF012840F0278101E0A8F10108B8F1010F\n" 
+"11DB022C01D1012000E03046019002A8009016AB0DAA0A\n" 
+"A93046FFF733FA0128EAD1B046EAE7012840F00C81022C\n" 
+"B4461FD1BCF1030F1FDA0AA951F82C104FF4FA5291FBF2\n" 
+"F1DFF8082402EB8C02D1600CF1010CEDE70DA951F82C10\n" 
+"4FF4FA5291FBF2F1DFF8EC2302EB8C0291610CF1010CBC\n" 
+"F1030FEEDB4FF0020801E0A8F10108B8F1010F11DB022C\n" 
+"01D1012000E03046019002A80090334610AA13A90120FF\n" 
+"F7F0F90128EAD1B046EAE7012840F0C980DDE916890DF1\n" 
+"580BDBE902018246DBE904018146022C31D104AA13A90A\n" 
+"A8FFF7FEFA0746B44611E002984FF4C85101FB00F2D317\n" 
+"0BEBCC0EDEE900018B4203DC01DB824200D237460CF101\n" 
+"0CBCF1030FEADB002F18D0B446BCF1030F14DA0AA850F8\n" 
+"2C004FF4FA5190FBF1F0039901EB4C01A1F858000CF101\n" 
+"0CEDE707AA10A90DA8FFF737FB0646022C6DD101202870\n" 
+"EF71C34804A90278002A06D142F2067204924A608A60FF\n" 
+"22EA71049A6A70049A1212AA704A68EA704A6812122A71\n" 
+"8A686A7189680912A97102992972029909126972029909\n" 
+"14A97202990916E972C1682973C16809126973C1680914\n" 
+"A973C1680916E9730169297401690912697401690914A9\n" 
+"7401690916E9744169297541690912697541690914A975\n" 
+"40690016E87585F818804FEA282068764FEA2840A8764F\n" 
+"EA2860E87685F81CA04FEA2A2068774FEA2A40A8774FEA\n" 
+"2A60E87785F820904FEA292085F821004FEA294085F822\n" 
+"004FEA296085F82300012C12D101202870079868700798\n" 
+"0012A87007A84168E97041680912297181686971806800\n" 
+"12A871EE71FFF7F9FC0128F19403700484000ED133463A\n" 
+"4621460FF24C40EFF79CFF022C01D1002F03D0012C03D1\n" 
+"002E01D1002000E001201DB0BDE8F08F1CB5DFF8544360\n" 
+"78002807D10020FDF767FE012200210320F0F77AF90020\n" 
+"FDF783FE01208DF804000FF21C400088ADF8000001208D\n" 
+"F80100022300AA1B210020F0F73EF8002809D140F2EF52\n" 
+"0FF23C310FF22830EFF762FF002016BD0120009001AB90\n" 
+"221B210020F0F762F8002809D140F2F1520FF214310FF2\n" 
+"0030EFF74EFF002016BD9DF8040000F0F7008DF804000F\n" 
+"F2B8300088ADF800009DF804008DF80100022300AA1B21\n" 
+"0020F0F709F8002809D140F2F3520FF2D4210FF2C020EF\n" 
+"F72DFF002016BD2020FDF72EFE00208DF804000FF27C30\n" 
+"0088ADF8000000208DF80100022300AA1B21EFF7EAFF00\n" 
+"2809D14FF4BF620FF294210FF28020EFF70EFF002016BD\n" 
+"02208DF804000FF248300088ADF8000002208DF8010003\n" 
+"4600AA1B210020EFF7CDFF002809D140F2FB520FF25C21\n" 
+"0FF24820EFF7F1FE002016BD0FF218300088ADF8000002\n" 
+"2300AA1B210020EFF7B6FF002809D140F2FD520FF22C21\n" 
+"0FF21820EFF7DAFE002016BD0020FDF7DBFD2078032803\n" 
+"D140208DF804000EE0022803D178208DF8040008E00128\n" 
+"03D147208DF8040002E07F208DF804000FF2BC200088AD\n" 
+"F800009DF804008DF80100022300AA1B210020EFF782FF\n" 
+"002809D140F20B620FF2C4110FF2B010EFF7A6FE002016\n" 
+"BD012016BD00000000684F880021EF7700C1F44F0010B5\n" 
+"04462078012806D12046FFF725FD002810D0012010BD20\n" 
+"780228FAD121460120FFF789FD0028F4D121460120FFF7\n" 
+"83FD0028EED1002010BD80B50878002820D10022012110\n" 
+"46FDF765FE012814D0002201211046FDF75EFE034640F2\n" 
+"27620FF240110FF2A410EFF764FE002201211046BDE808\n" 
+"40FDF74EBE0FF2FC10EFF759FE1FE0012211460720FDF7\n" 
+"44FE012814D0012211460720FDF73DFE034640F22D620F\n" 
+"F200110FF26410EFF743FE012211460720BDE80840FDF7\n" 
+"2DBE0FF2C010EFF738FE012002BD30B583B000242046AD\n" 
+"F80400FDF734FD0220009001AB98221B212046EFF730FF\n" 
+"002809D140F23B620FF2B0010FF29C00EFF71CFE20463E\n" 
+"BD9DF80500000700D501249DF80400800701D544F00204\n" 
+"9DF80400400701D544F00404144DE00711D5F1F7FFFED5\n" 
+"E90223801A9941002905DC02DBB0F57A7F01D224F00104\n" 
+"0FF24010EFF7F4FD012229780320EFF7E9FF20463EBD00\n" 
+"0090C1C7FFC98070002431880028088400EC038800495D\n" 
+"8800D02D880080B50FF2F194030008840018110020F8F7\n" 
+"B0FA0FF230110B20BDE80440F8F7A9BA00005B494E564E\n" 
+"5D25733A25640A00000000443A5C4D43555C53454E534F\n" 
+"525F6B616C6D6961615F5452454C54455F4252434D5F4E\n" 
+"6F746550435C4D43555C50726F6A6563745C5353505F53\n" 
+"656E736F724875625C53485F48414C5C7372635C416363\n" 
+"656C65726F6D657465725F49434D32303632382E630000\n" 
+"5B494E564E5D25733A256420657272203D202578000000\n" 
+"000700000006000000100000005B494E564E5D20535430\n" 
+"2D3228256429000000005B494E564E5D73656C665F7265\n" 
+"73756C743D25645F25645F256400000600000010000000\n" 
+"1200000015000000110A0000070000004C5046204F6666\n" 
+"004C5046204F6E00005B534D415D20574F4D000000B3E8\n" 
+"8300D3E8830053EA830043EB83000000000047EB830000\n" 
+"00000085068400BF068400B3E8830017F083009D048400\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000FB480B50DF0ACFCDA48052141700021017001714171\n" 
+"D84802A95822E9F7C8FC092200210846F8F773FC022801\n" 
+"D1022000E0012002BC5DF814FB80B5092200210120F8F7\n" 
+"65FC032801D1032002BDBDE8014048E110B5C74C94F901\n" 
+"0005280AD100F0E3F8002822D0042060700DF078FCBDE8\n" 
+"1040F8E0042819D100F0B7F8002808D003202070052060\n" 
+"700DF069FCBDE8104028E100F051F9002808D002202070\n" 
+"052060700DF05CFCBDE810401BE1012010BD80B5F8F72A\n" 
+"FCAE498860AF49C0F8C81100F5E470AE494160AE498160\n" 
+"0FF21101C1600FF295010161012002BD00000020A44902\n" 
+"46CA708A6892F8B121002A0FD091F90020002A02D00220\n" 
+"C870012091F90420012A04D1C87840F00400C870012070\n" 
+"47974800210170C17001710120704710B58CB0044600A8\n" 
+"0FF087FD0198A04204D3001BC0B200EE100A04E0803800\n" 
+"1BC0B200EE100AB8EE400ADDED070A20EE200A10EE100A\n" 
+"F8F7EEFE41EC100B0CB010BD834801210171704778B481\n" 
+"4A92F903309C0717D540F249140D7814FB050501262E70\n" 
+"0D7814FB05056E700D7814FB05050926AE700D7814FB05\n" 
+"041578E5700C78641C0C705B071DD540F249140B7814FB\n" 
+"030301251D700B7814FB030303255D700B7814FB030309\n" 
+"259D700B7814FB03030125DD700B7814FB030052780271\n" 
+"0878401C087071BC93E730B58DB0002420468DF8000001\n" 
+"A8F8F7E8FB4FF47A705D4D00ABE98800FB01F2A9884143\n" 
+"6D88684301AD95EC030A0DF0E3FB022800D1012420460D\n" 
+"B030BD30B58DB00024F19403900B840020468DF8000001\n" 
+"A8F8F7C9FB4FF47A704D4D00ABE98800FB01F2A9884143\n" 
+"6D88684301AD95EC030A0DF0C4FB012800D1012420460D\n" 
+"B030BD70B5B8B001240020ADF884008DF82D000DF12D06\n" 
+"0A2070700020B070F0703B4D95F90500002827D1AA208D\n" 
+"F88A003C208DF88B0020468DF88C0000208DF82C000320\n" 
+"8DF82D000DF12F0022A95522E9F76BFB0A2070700020AD\n" 
+"F884000BA8F8F70BFC002801D1022406E000A80FF0B2FC\n" 
+"0198A87020466871204638B070BD30B597B00124214D95\n" 
+"F9050001281ED10020ADF858008DF801000DF101000A21\n" 
+"417000218170C17021468DF8001003218DF801100A2141\n" 
+"700020ADF8580000A8F8F7DBFB002800D1032400206871\n" 
+"204617B030BD10B52DED028B00240C488078FFF7ECFEB0\n" 
+"EE408AF0EE608A0948007AF8F70FFD02460B4651EC180B\n" 
+"05F059FD00D801242046BDEC028B10BD0000E40288005C\n" 
+"818800610984009B098400B509840080B5AA48C16891F8\n" 
+"1115002901D1002002BD012101710FF0B0FE00280AD010\n" 
+"F0AEFB01460FF2D420EFF752FB0FF0A9FE012002BD0020\n" 
+"02BD0FB400B597B00FF05BFD9A4800218170C170017141\n" 
+"70BDF8620000F013F9BDF8640000F00DF901208DF86400\n" 
+"AA208DF862003C208DF8630000208DF8000003208DF801\n" 
+"000DF1030018A95522E9F7C0FA0A208DF8020000A8F8F7\n" 
+"62FB002805D10FF27420EFF718FB022000E0012017B05D\n" 
+"F814FB00B597B00FF0BAFD01208DF8000003208DF80100\n" 
+"0A208DF8020000A8F8F746FB002801D1032000E0012017\n" 
+"B000BD70B504460D4640F24916287816FB004001210170\n" 
+"10F046FB01281AD1287816FB004005214170287816FB00\n" 
+"401B2181700FF21820EFF7DFFA287816FB00400221C170\n" 
+"287816FB00401E2141710FF03DFE18E010F02EFB012814\n" 
+"D1287816FB004001214170287816FB00401B2181700FF2\n" 
+"E810EFF7C0FA287816FB00400121C1700FF033FE287840\n" 
+"1C2870BDE870400FF00BBE70B5A0B04F4E304609F0D1F8\n" 
+"14A8FAF770F930684A4C2169411A89B2002904D12278B6\n" 
+"F84A309A4203D02061B6F84A002070E068D0F814553160\n" 
+"A068807AC046C0469DF850001390314683B068465822E9\n" 
+"F734FA0EBCADB2284610F047FF6070A07801281CD117A8\n" 
+"EFF778FD1BA80268436843EC122B19A80268436843EC11\n" 
+"2B17A80268436843EC102B9DF877209DF876109DF87500\n" 
+"00F02DF80020A07006E0E078012803D100F02FF80020E0\n" 
+"70012020B070BD10B5224CEFF7DFF9A060F8F7ABF9E060\n" 
+"EFF7D9F9A0600020F19403200F8400206120700FF0D5FC\n" 
+"E0681C49C0F8281500F228501A4941601A4981601A49C1\n" 
+"601A490161012010BD80B5D2B2C9B2C0B20FF0C9FDBDE8\n" 
+"01400FF0B8BD0FF0BEBD0FF0F8BC0FF0E5BC0FF006BD0F\n" 
+"F020BD80B510F078FA002805D006480079002801D10120\n" 
+"02BD002002BD0248012181707047000020858800348588\n" 
+"00210D8400950D8400550E8400E90C8400C30D840010F0\n" 
+"9EBA10F0A0BAC9B210F0ACBA0FF065BD0FF0B5BC80B510\n" 
+"F09AFBC0B202BD80B510F06BFBC0B202BD10F06CBE10F0\n" 
+"6BBE00004C5420436D6452656164795F53532025640000\n" 
+"004C54205065646F4F70656E4661696C20535300004C54\n" 
+"205245515545535420504F5300004C5420524551554553\n" 
+"542041434B000038B5F9F724FF0446FFF79CFF002801D0\n" 
+"012028E0E4B2002C0BD0FFF7BEFF002805D00FF2DC30EF\n" 
+"F7B1F901201BE0002019E0FFF7BEFF0446D64D28780028\n" 
+"00D12C70287884420DD02046012803D1FFF7A4FF012004\n" 
+"E0022801D1012000E000202C7000E00020CB49496891F8\n" 
+"7115002900D1002032BD0FB400B597B0C5480021017040\n" 
+"6890F87015002946D190F87105002842D100208DF80000\n" 
+"1B208DF801000DF1030018A95522E9F70CF90A208DF802\n" 
+"0000A8F8F7AEF9002805D10FF24C30EFF764F9022029E0\n" 
+"02208DF862004FF49660ADF868000020CDF863008DF867\n" 
+"008DF800001A208DF801000DF1030018A95522E9F7E7F8\n" 
+"0A208DF8020000A8F8F789F9002805D10FF21430EFF73F\n" 
+"F9022004E04FF49660FFF73EFF012017B05DF814FB00B5\n" 
+"97B00FF20430EFF72FF901208DF800001B208DF801000A\n" 
+"208DF8020000A8F8F767F9002801D103201AE001208DF8\n" 
+"00001A208DF801000A208DF8020002208DF805000020AD\n" 
+"F80B00CDF806008DF80A0000A8F8F74DF9002801D10320\n" 
+"00E0012017B000BD2DE9F84F2DED028B92B004460D46FF\n" 
+"F7D5FE40F24916297816FB014101220A70297816FB0141\n" 
+"002840F0A28010464870287816FB00401D218170287816\n" 
+"FB004000214171FFF7EAFE002805D0FFF7D6FE82465FFA\n" 
+"8AFA01E04FF0000A287816FB004080F807A04FF0000870\n" 
+"E0414600A8FFF7C8FEFFF7D9FE8146C8EB4817287816FB\n" 
+"004038189DF829104FF461620DF129035B78C3EB031C4F\n" 
+"EA8C0312FB01310DF12902927851FA82F14FF47A72BDF9\n" 
+"2C3002FB0131C0F81B109FED518B287816FB004007EB00\n" 
+"0BDDE9002351EC180BF8F736FA05F018FBCBF80B002878\n" 
+"16FB004007EB000BDDE9022351EC180BF8F727FA05F009\n" 
+"FBCBF80F002878F19403B012840016FB004007EB000B02\n" 
+"A8D0E9022300203E49F8F717FA05F0F9FACBF813002878\n" 
+"16FB004038180BA94969C0F81F10287816FB004038180B\n" 
+"A9498BA0F81910287816FB00403818C0F8239008F10108\n" 
+"5FFA88F8D0458CDBFFF755FE287816FB00400521A0F843\n" 
+"11287816FB00402D49C0F8451112E005204870287816FB\n" 
+"00401D218170287816FB004011464171287816FB00400F\n" 
+"218171FFF73AFE2878401C287012B0BDEC028BBDE8F18F\n" 
+"10B584B000A8F9F7F1FE1C4C204600A90B22E8F7C0FF61\n" 
+"782078FFF731FE012004B010BD80B5F7F774FF0E4B5860\n" 
+"0E49C0F8881500F288500D4941600D4981600D49C1600F\n" 
+"4901610522002103F10800F7F70CFA012002BD00000000\n" 
+"000080842E4100408F40CC818800A31084004F1184005B\n" 
+"1384002D108400D4818800DC818800B511840010B50446\n" 
+"21460FF27800EEF7E5FF2046BDE81040FFF7B4BDFFF7B4\n" 
+"BD10B5044621460FF26800EEF7D7FF2046BDE81040FFF7\n" 
+"ACBD10B5044621460FF26000EEF7CBFF2046BDE81040FF\n" 
+"F79EBD4C5420436D644154440000004C54204F70656E20\n" 
+"6661696C000000004C54204154204F70656E206661696C\n" 
+"004C542053544F50004C54205365745754202564004C54\n" 
+"20536574534152202564000000004C5420536574535220\n" 
+"2564000FB400B597B0DFF8AC0701210177406A90F84015\n" 
+"00293CD190F84105002838D100208DF8000003208DF801\n" 
+"000DF1030018A95522E8F718FF0A208DF8020000A8F7F7\n" 
+"BAFF002822D000208DF86200ADF86800CDF863008DF867\n" 
+"008DF800001A208DF801000DF1030018A95522E8F7FCFE\n" 
+"0A208DF8020000A8F7F79EFF002806D01C2200210846F7\n" 
+"F7AFFE022801D1022000E0012017B05DF814FB00B597B0\n" 
+"1C2200210120F7F7A0FE022801D1022029E001208DF800\n" 
+"0003208DF801000A208DF8020000A8F7F778FF002801D1\n" 
+"032019E001208DF800001A208DF801000A208DF8020000\n" 
+"208DF80500ADF80B00CDF806008DF80A0000A8F7F75FFF\n" 
+"002801D1032000E0012017B000BD70B586B0DFF8A84620\n" 
+"6800280DD1DFF8A4663068002808D1204608F02AFD3046\n" 
+"21465822E8F7ACFE02E0204608F021FDDFF8846606F10C\n" 
+"000ECE0EC00C3E02A8F9F7B9FD304602A90B22E8F789FE\n" 
+"DFF85C56707868763178307B814204D029760FF26C60EE\n" 
+"F7E0FE00A8EFF782F99DF8000028739DF8010068739DF8\n" 
+"0200A873BDF80300A5F80F00DFF82866E86C2168326889\n" 
+"1A10FA81F0E86400F02BF9304621465822E8F76CFE0120\n" 
+"06B070BD10B5F1940340168400DFF8F845F7F712FE6062\n" 
+"002060750120A0750320E0754FF4FA70A062DFF8EC05E0\n" 
+"624EF6602020630FF20C60EEF7A4FE00202077E0632064\n" 
+"6064A0642083E076A06358220146DFF8BC05F7F79CF858\n" 
+"220021DFF8AC05F7F796F8EEF718FE20620020A0760120\n" 
+"E0770020A077606ADFF8A015C0F8581500F25850DFF898\n" 
+"154160DFF8941581600FF21101C1600FF2410101610120\n" 
+"10BD000080B5DFF86005416A91F84115002901D1002002\n" 
+"BD90F91400012801D1012001E000F09FF840B202BDDFF8\n" 
+"380500214163017501207047000070B5DFF8283593F914\n" 
+"20012A2BD15A6B002A20D040F249140D7814FB05050126\n" 
+"2E700D7814FB05056E700D7814FB05051C26AE700D7814\n" 
+"FB05050126EE700D7814FB0505AA800D7814FB0500C0F8\n" 
+"06300878401C087011460FF22450EEF724FEBDE87040C4\n" 
+"E7DA7F012A23D140F249140A7814FB0202012515700A78\n" 
+"14FB020255700A7814FB02021C2595700A7814FB020202\n" 
+"25D5705A7F0B7814FB030082720878401C087011460FF2\n" 
+"EC40BDE87040EEF7FABD70BD0146891E012903D9891E01\n" 
+"2905D908E0DFF8641401224A7503E0DFF8581400224A75\n" 
+"01460FF2D440EEF7E3BDDFF8481400EB80028A6201460F\n" 
+"F2D840EEF7D9BD38B50446DFF8305441F2883010FB04F0\n" 
+"E862F7F75EFF0022DFF83C34F7F767FF05F05FF8286321\n" 
+"460FF2BC40BDE83440EEF7BFBD38B50024DFF8FC53686A\n" 
+"90F81015002903D190F81105002813D00120E877FFF7C1\n" 
+"FB6877A97F002900D1A877A97F884209D00146012901D0\n" 
+"022900D10124A87701E02046E877204632BDF0B583B000\n" 
+"2500A829460A4606C0DFF8A843E06B10F1100F01D21430\n" 
+"E063E07E002800F0C580022801D06BD30BE1217E042934\n" 
+"D1607D002813D1606C14306064E26A9042C0F0FF80E26B\n" 
+"206B8242C0F0FA800125002060640FF22040EEF76AFDF1\n" 
+"E010466064206A827AA37E1A430FD1E26B206B824204D3\n" 
+"01250FF21840EEF759FD0FF22840EEF755FD0120A076DA\n" 
+"E0807A012840F0D7802846A076D3E0022901D0032915D1\n" 
+"206C1430206442F211729042C0F0C880E26B206B904280\n" 
+"F0C38001250020206403460FF2F430EEF732FDB9E00129\n" 
+"40F0B780A06C00F11403A3644EF661208342C0F0AE80E2\n" 
+"6B206B904280F0A98001250020E0760FF2E030EEF719FD\n" 
+"A0E0217E022901D003290FD1E36CA06A8342C0F09780E2\n" 
+"6B206B8242C0F0928001250FF2D030EEF704FD8BE00429\n" 
+"28D1606C14306064627E002A13D142F211729042C0F07F\n" 
+"80E26B206BF19403D019840090427AD201250220E07600\n" 
+"20606403460FF2B430EEF7E8FC6FE0E26B206B90426BD2\n" 
+"01250220E0760020606403460FF2B430EEF7D9FC60E001\n" 
+"295ED1A06C00F11403A3644EF66120834256D3E26B206B\n" 
+"904252D201250020E0760FF2A430EEF7C3FC4AE0217E02\n" 
+"2916D1206C14302064626441F2893290423FD3206BE26B\n" 
+"90423BD20120E07628462064012502460FF28C30EEF7A9\n" 
+"FC30E0042916D1606C14306064226441F28932904226D3\n" 
+"206BE26B904222D20220E07628466064012502460FF270\n" 
+"30EEF790FC17E0032915D1206C14302064626441F28932\n" 
+"90420DD3206BE26B904209D20120E07628462064012502\n" 
+"460FF25830EEF777FC207F012809D10020207701252846\n" 
+"207601460FF25430EEF76AFC012D40F0A780257E042D36\n" 
+"D1A06B461CA663606B002809D1207B6070607BA070A07B\n" 
+"E070002020710520606304208DF8000000A80421417081\n" 
+"70617D012902D10121C17001E00021C170042101712670\n" 
+"676B052200A93819F2F758FF781D6063002E6DD0012020\n" 
+"750020A063E26B29460FF2F020EEF72EFC62E0022D01D0\n" 
+"032D2ED1A06B461CA663606B002809D1207B6070607BA0\n" 
+"70A07BE070002020710520606302208DF8000000A80221\n" 
+"41708170C17001712670676B052200A93819F2F725FF78\n" 
+"1D6063002E3AD0012020750020A063E26B29460FF2A820\n" 
+"EEF7FBFB2FE0012D2DD1A06B461CA663606B002809D120\n" 
+"7B6070607BA070A07BE070002020710520606301208DF8\n" 
+"000000A8012141708170C17001712670676B052200A938\n" 
+"19F2F7F4FE781D6063002E09D0012020750020A063E26B\n" 
+"29460FF25C20EEF7CAFB0020E06320646064A064E0640F\n" 
+"F26420EEF7C0FBF7BD000048778800F077880098778800\n" 
+"4878880020BF02008914840023158400911584000000E0\n" 
+"3F5B41504452204C545D205472616E73204D6F64652025\n" 
+"64005B41504452204C545D20494E495420303231372D33\n" 
+"0000005B41504452204C545D2042756666657253697A65\n" 
+"3A2564005B41504452204C545D2053746179496E666F3A\n" 
+"25640000005B41504452204C545D206770732053746120\n" 
+"25640000000041504452205365745F5357554E20256400\n" 
+"00000041504452205365745F5457555320256400000000\n" 
+"5B41504452204C545D205245512D563120256420256400\n" 
+"005B41504452204C545D205245512D5632202564202564\n" 
+"00005B41504452204C545D2041505F4E4F54534C50005B\n" 
+"41504452204C545D205245512D56332025642025642025\n" 
+"64000000F19403601D84005B41504452204C545D205245\n" 
+"512D56342025642025642025640000005B41504452204C\n" 
+"545D205245512D57312025642025642025640000005B41\n" 
+"504452204C545D205245512D5732202564202564202564\n" 
+"0000005B41504452204C545D205245512D573320256420\n" 
+"25642025640000005B41504452204C545D205245512D57\n" 
+"342025642025642025640000005B41504452204C545D20\n" 
+"5245512D533120256420256400005B41504452204C545D\n" 
+"205245512D533220256420256400005B41504452204C54\n" 
+"5D205245512D533320256420256400005B41504452204C\n" 
+"545D2041504453542C202564005B41504452204C545D20\n" 
+"56656869636C653A202564202564000000005B41504452\n" 
+"204C545D2057616C6B3A2025642025640000005B415044\n" 
+"52204C545D2053746174696F6E6172793A202564202564\n" 
+"005B41504452204C545D20526573657400182200210248\n" 
+"F6F78ABC0148704700001C5C880080B5FFF7F8FF684908\n" 
+"600FF2910101600FF2A50141600FF2A50181600FF2A101\n" 
+"C1600FF20D0101610FF23901416101BD30B583B004465D\n" 
+"4D207869698847002009E004EB40014A78897841EA0221\n" 
+"00AA22F81010401C0328F3DB00A8E968884700203EBD30\n" 
+"B583B00446504D28698047207000A8A968884700200AE0\n" 
+"04EB400100AA32F910301B124B7032F810208A70401C03\n" 
+"28F2DB00203EBD000080B511F03DFD11F056FE41480068\n" 
+"804740480068BDE8024000470000704700007047000073\n" 
+"B52DED048B8EB0B0EE408AF0EE608AB0EE419A14460020\n" 
+"0090BDF84800ADF80C0003A8BDF84A104180BDF84C1081\n" 
+"802E4D00AA01A96B689847002001AE0FE036F9101000EE\n" 
+"101AB8EEC00ADFED250A80EE200A0BA901EB800181ED00\n" 
+"0A401C0328EDDBB0EE480A8DED080A08A8B0EE680A80ED\n" 
+"010AB0EE490A80ED020A05AA0BA9AB6998470098207005\n" 
+"98E06005A84168A16080686060BDF9040000EE100AB8EE\n" 
+"C00AF2EE040A80EE200A84ED040AB6F9020000EE100AB8\n" 
+"EEC00A80EE200A84ED050AB6F9040000EE100AB8EEC00A\n" 
+"80EE200A84ED060A00200EB0BDEC048B76BD000000401C\n" 
+"46F061880028CF8800ECD1880010B5264C2046ECF709FB\n" 
+"254820602548A060254820602548A0600020E060206123\n" 
+"4A24492046BDE81040ECF7F1BA38B504460D46200002D0\n" 
+"1848C06818B126211D48F6F754FB1548C4600561E3F717\n" 
+"FF1249BDE83440ECF7AEBC30B589B004000D4603D13321\n" 
+"1448F6F741FBE3F707FF014602A8EDF796F9014600A8ED\n" 
+"F720FDF19403F02084002246A9B2EDF721FD012102A8ED\n" 
+"F77BF902A8C046C04609B030BD000030E78800BC648600\n" 
+"D0648600BC608600D46086002480890057448200F46086\n" 
+"002DE9F14787B00C46174698460025A9469DF81C0010F0\n" 
+"070003D002282FD02CD33EE006200021E8F706FF5FEA00\n" 
+"0A03D15A216F48E2F714FE5046E8F7C2FF46B29EB99DF8\n" 
+"1C00000910F0070005D002281AD016D303281AD01CE064\n" 
+"224FF400715046E8F723FF46B2EEB15046E8F7AFFF5046\n" 
+"E8F7FCFE30465FE00720D2E70820D0E74FF4C872E9E74F\n" 
+"F44872E6E74FF44862E3E75046E8F79AFF5046E8F7E7FE\n" 
+"4FF0FF3049E0BFB27FB19DF81C00C0F3C00008B14FF400\n" 
+"450095ADF80440CDF80880ADF806704FF00109109880B2\n" 
+"C8B109EB4901890000AA45F002038B5009EB490102EB81\n" 
+"018C8009EB490102EB8101119A8A6009EB490100AA02EB\n" 
+"8101C88009F101094A4600A95046E8F734FF0400504606\n" 
+"D5E8F75BFF5046E8F7A8FE60B20BE0E8F754FF44B21CB1\n" 
+"FB213048E2F797FD5046E8F79BFE204608B0BDE8F0872D\n" 
+"E9F14382B00D46164698460A9C0B9F0197A4B2009492B2\n" 
+"89B2FFF751FF002843D5019700944346B2B2A9B20298FF\n" 
+"F747FF002839D54FF006099DF8080010F007000CD00228\n" 
+"08D031BF4FF0070940F23B111748E2F764FD01E04FF008\n" 
+"0900214846E8F748FE5FEA000904D140F241110F48E2F7\n" 
+"55FD002201214846E8F776FE4846E8F754FE0197009443\n" 
+"46B2B2A9B20298FFF715FF002807D5019700944346B2B2\n" 
+"A9B20298FFF70BFF03B0BDE8F083A86086002DE9F04385\n" 
+"B004460D4690469946B848B84901602088009002AA2946\n" 
+"00F0D3F902A90020E9F718FF08B1002038E00026B14F38\n" 
+"788DF8010000208DF8000000AB01220DF101010120E9F7\n" 
+"A0FF002802BF9DF800007978884205D1A74800EBC600A3\n" 
+"49086003E0761C0837042EE1DB0020E9F72FFF9E480068\n" 
+"406888B19F48007800F0F8009D4908700D9801900C9800\n" 
+"904B46424629462046954C24686468A04705B0BDE8F083\n" 
+"19B19A4201D1012070470020704711B11A700120704700\n" 
+"20704770B515001C462BD024B940F22D118C48E2F7CCFC\n" 
+"0498059E21786B2906D06C2920D0EB2936D0EC2948D019\n" 
+"E0022D04D040F233118248E2F7B9FC63787F4842780078\n" 
+"00F001016B20FFF7CDFF002849D17A4861784170007840\n" 
+"F0010077490870002070BD022D04D04FF4A1717448E2F7\n" 
+"9DFC6378714882780078C0F340016C20FFF7B1FF70BB6D\n" 
+"4861788170007840F00200E3E716B180B2012804D040F2\n" 
+"5111F19403802484006748E2F783FC3346644842780078\n" 
+"00F00101EB20FFF79EFFA0B9D1E716B180B2012804D04F\n" 
+"F4AF715D48E2F76FFC33465A4882780078C0F34001EC20\n" 
+"FFF78AFF0028BDD0012070BD70B515001C462FD024B940\n" 
+"F281115248E2F758FC0498059E217806290AD0072924D0\n" 
+"7F293BD0862952D0872964D0FF2973D019E0022D04D040\n" 
+"F287114648E2F741FC637843484278007800F001010620\n" 
+"FFF755FF002874D13E4861784170007840F001003B4908\n" 
+"70002070BD022D04D04FF4CB713848E2F725FC63783548\n" 
+"82780078C0F340010720FFF739FF002858D13048617881\n" 
+"70007840F00200E2E7022D04D040F2A5112C48E2F70CFC\n" 
+"63782948C2780078C0F380017F20FFF720FF00283FD124\n" 
+"486178C170007840F00400C9E716B180B2012804D04FF4\n" 
+"DA711E48E2F7F1FB33461B484278007800F001018620FF\n" 
+"F70CFF28BBB7E716B180B2012804D040F2C1111448E2F7\n" 
+"DDFB3346114882780078C0F340018720EAE716B180B201\n" 
+"2804D04FF4E7710C48E2F7CCFB33460948C2780078C0F3\n" 
+"8001FF20FFF7E7FE002892D0012070BD0000C0278800B0\n" 
+"2788009027880044E78800086186002DE9F14185B08846\n" 
+"16461F469DF81400C00748BF4FF0FF3050D40C9C0D9D0A\n" 
+"480068406890B10195A4B2009492B2C9B205A8DFF814C0\n" 
+"DCF800C0DCF804C0E04720B100203AE000BFC027880002\n" 
+"AA5FFA88F1059800F035F802A90020E9F77AFD50BB9DF8\n" 
+"1500C0F3C000D0B9A5B147B9B2B200262B4639463046E9\n" 
+"F705FEC0B905E02A463946B0B2E9F719FE88B90020E9F7\n" 
+"9DFD90B10FE00022002FE9D0B6B2E8E72B46A2B23946B0\n" 
+"B2E9F7EDFD0028EDD00020E9F78BFD6FF0070006B0BDE8\n" 
+"F08101B40020002309C29DF8000060F3070342F8083D9D\n" 
+"F8010000F00300012804D00CD3032807D003D308E043F4\n" 
+"803004E043F4003001E043F4403010601C20136860F397\n" 
+"431360506820F004009DF80130C3F3800340EA83005060\n" 
+"C9B2106861F31F60106001B07047000080B50B4AC2E900\n" 
+"01F5F761FF094AC2E9000101BD38B5F5F75AFF064AD2E9\n" 
+"0045001BA941024AD2E900450019694134BD383F880030\n" 
+"3F880038B50020ADF800000446EDF79CFD05464FF48051\n" 
+"2046EDF7FDFF0A212846EDF782FF00E0641C062C12D2DF\n" 
+"F80C0C215C8DF800102018007A8DF80100022300AA7221\n" 
+"0720EDF73DFE0028EBD1002032BD012032BD2DE9FC4107\n" 
+"468846EFF724FD04460020ADF80400DFF8D05BA88D0646\n" 
+"B8F1000F02D03843A88501E0B843A885012000900DF106\n" 
+"03F1940310288400AB2272210620EDF75AFE002801D100\n" 
+"20D4E1A88D0E2800F2B581DFE810F00F00B3011C00B301\n" 
+"3F00B3013F00B301C600B301C600B301C600B301C60080\n" 
+"208DF8040000208DF805009DF8060000F0FD008DF80600\n" 
+"96E116F00C0F01D00120687581208DF8040001AEEE2070\n" 
+"70022301AA72210920EDF7E1FD002801D100209DE17078\n" 
+"E87080208DF80400032070709DF8060000F0FD008DF806\n" 
+"0073E13046000701D4022E01D1012068759F208DF80400\n" 
+"01AE00207070022301AA72210720EDF7BCFD002801D100\n" 
+"2078E19D208DF804000C207070022301AA72210920EDF7\n" 
+"ADFD002801D1002069E19E208DF804000C207070022301\n" 
+"AA72210920EDF79EFD002801D100205AE181208DF80400\n" 
+"FD207070022301AA72210920EDF78FFD002801D100204B\n" 
+"E17078E8708E208DF80400287A002812D00C218F2011F0\n" 
+"43FA04218F2011F015FA3021902011F03BFA3021902011\n" 
+"F00DFA4520707011E00C218F2011F030FA08218F2011F0\n" 
+"02FA3021902011F028FA1021902011F0FAF98220707002\n" 
+"2301AA72210920EDF758FD002801D1002014E180208DF8\n" 
+"0400272070709DF8060000F0FD008DF80600ECE016F008\n" 
+"0701AE4FD111F00FFB01206875A4208DF8040000207070\n" 
+"DFF8F00C00210170022301AA72210920EDF731FD002801\n" 
+"D10020EDE0A5208DF8040000207070DFF8D00C00210170\n" 
+"022301AA72210920EDF71EFD002801D10020DAE0A7208D\n" 
+"F8040000207070DFF8A40D00210170022301AA72210920\n" 
+"EDF70BFD002801D10020C7E0A9208DF8040000207070DF\n" 
+"F8840D00210170022301AA72210920EDF7F8FC002801D1\n" 
+"0020B4E081208DF80400FE207070022301AA72210920ED\n" 
+"F7E9FC002801D10020A5E07078E8708E208DF80400287A\n" 
+"002812D00C218F2011F09DF904218F2011F06FF9302190\n" 
+"2011F095F93021902011F067F94F20707011E00C218F20\n" 
+"11F08AF908218F2011F05CF93021902011F082F9212190\n" 
+"2011F054F984207070022301AA72210920EDF7B2FC0028\n" 
+"01D100206EE0002F20D1B4F88A00B4F88C10401A6885B4\n" 
+"F88A108900298589B2FF2901DBFE21298580B281006529\n" 
+"02DB6420688501E080006885298D688D0A1A6A8592B20F\n" 
+"F2A000EDF742FCA6208DF80400287A00280AD06021A320\n" 
+"11F045F94121A32011F017F95720707009E06021A32011\n" 
+"F03AF94121A32011F00CF98B207070022301AA72210920\n" 
+"EDF76AFC002801D1002026E080208DF80400672070709D\n" 
+"F8060040F002008DF80600022301AA72210920EDF755FC\n" 
+"F19403A02B8400002801D1002011E0AB208DF804009DF8\n" 
+"06008DF80500022301AA72210920EDF744FC002801D100\n" 
+"2000E00120BDE8F681233E6755703D25642C674C6F3D25\n" 
+"640010B534220021DFF8100DF5F7ECFDDFF8D4470120A0\n" 
+"7111F087FD11F015F901202073DFF89C0D0021017010BD\n" 
+"10B582B00FF25C00EDF7D0FB0020ADF8000080208DF800\n" 
+"0000AC03206070022300AA72210620EDF70AFC002818D0\n" 
+"DFF88807817A00290DD08C218DF8001000216170817002\n" 
+"2300AA72210620EDF7F7FB002805D0FFF7BEFF01210020\n" 
+"FFF7B8FD13BD0000233E484C5300000010B582B00020AD\n" 
+"F80000044600E0641C052C12D2DFF8140D215C8DF80010\n" 
+"2018007A8DF80100022300AA72210720EDF7D0FB0028EB\n" 
+"D1002016BD012016BD30B583B0DFF80847E17D0FF2AC00\n" 
+"EDF778FB0020ADF806008DF80400607180208DF806000D\n" 
+"F106050320687002230DF1060272210720EDF7ADFB0028\n" 
+"01D100203EBD8C208DF8060000206870A07002230DF106\n" 
+"0272210720EDF79CFB002801D100203EBD012060720146\n" 
+"0420FFF75BFD002801D100203EBD0120009001AB9F2272\n" 
+"210720EDF7C8FB002801D100203EBD9DF804100FF23000\n" 
+"EDF733FB0120009001ABE52272210720EDF7B6FB002801\n" 
+"D100203EBD01203EBD0000233E50524F20307825780000\n" 
+"233E4F5F72636F6E66696720307825780000000030B583\n" 
+"B00FF2AC00EDF70EFB0020ADF806008DF80400DFF8480D\n" 
+"C469856A80208DF8060003208DF8070002230DF1060272\n" 
+"210720EDF741FB002801D100203EBD687A012828D1607A\n" 
+"012825D101210020FFF7FCFC002801D100203EBD012000\n" 
+"9001AB802272210720EDF769FB002801D100203EBD9DF8\n" 
+"04100FF24000EDF7D4FA0120009001ABE52272210720ED\n" 
+"F757FB00280CD100203EBDDFF89805002141720420FFF7\n" 
+"D3FC0028EAD100203EBD01203EBD0000233E5052430000\n" 
+"00233E2626656E61626C65203078257800012070477CB5\n" 
+"0446EFF7E4F905460020ADF80400DFF85065B07B002831\n" 
+"D1B07A002802D0307C207038E0012000900DF105039322\n" 
+"72210720EDF71BFB00280DD09DF80500800729D5012000\n" 
+"9001AB9C2272210720EDF70DFB002801D1002076BD9DF8\n" 
+"0400B5F88C10814205D37179401880B24008207000E020\n" 
+"709DF8040070710CE001280AD1B5F88C00DFF8100A4169\n" 
+"727989184910217040697071012076BD2DE9F04391B004\n" 
+"46EFF794F90546EDF7E0F90646002002908DF80C000120\n" 
+"009003AB932272210720EDF7D3FA002801D1002044E2F1\n" 
+"9403302F8400022000900DF10A03942272210720EDF7C6\n" 
+"FA002801D1002037E2DFF878749DF80B009DF80A1041EA\n" 
+"002045F254614843F978C1F580713A79DFF8B83BD25C12\n" 
+"FB01F140F24232514390FBF1F0797B002902D0B97A0029\n" 
+"01D1786308E0786B397E4A1C3A76062902DB0021797339\n" 
+"76397A00290BD141F6593188422BDB01213972B8630020\n" 
+"7876FFF729FEEEE1B96B411A44F62162914215DA40F6B8\n" 
+"31884217DA9DF80C20920613D57A7E531C7B76C92A04DA\n" 
+"BA7A002A0DD188420BDA884201DA00213972B863002078\n" 
+"76FFF707FECCE1002078769DF80C00800640F1D5810020\n" 
+"B8730120009003AB932272210720EDF756FA002801D100\n" 
+"20C7E19DF80C0080073AD5012000900DF10A039C227221\n" 
+"0720EDF745FA002801D10020B6E19DF80A1005F28A0042\n" 
+"888A4210D3B87A002804D17A790FF26430EDF7A7F99DF8\n" 
+"0A00797951FA80F080B2400860700DE0408888420AD2B8\n" 
+"7A002804D17A790FF24C30EDF793F99DF80A0060709DF8\n" 
+"0A00F8739DF80A00787160783874387B002802D0002038\n" 
+"7372E1DFF81C8D607888F80000B87900280AD010F0BAFE\n" 
+"002806D1B87A002803D0607810F0C4FE75E0787A002839\n" 
+"D0B87AB978084335D1002030758C208DF808000DF10809\n" 
+"202089F80100B870022302AA72210720EDF7A0F9002801\n" 
+"D1002053E189208DF80800002089F80100022302AA7221\n" 
+"0720EDF790F9002801D1002043E18B208DF80800B5F88A\n" 
+"0089F80100022302AA72210720EDF77FF9002801D10020\n" 
+"32E1B87A002809D105F18A004288B5F88A100FF28020ED\n" 
+"F726F92BE0414684B068461822E7F7CBF80FBC11F0D5FA\n" 
+"04A811F038FBDFF8D09C484604A93422E7F7BEF899F81C\n" 
+"00002807D034224946DFF85407F1F724FC0120787009F1\n" 
+"1C00417D88F81410817D88F81510007D002801D0FFF70D\n" 
+"FD787A002800F0E680B87A002840F0E2806078B5F88A10\n" 
+"884231D3307D00282ED10120F87120702078307589208D\n" 
+"F808000DF1080905F18A00408889F80100022302AA7221\n" 
+"0720EDF71DF9002801D10020D0E08B208DF80800FF2089\n" 
+"F80100022302AA72210720EDF70DF9002801D10020C0E0\n" 
+"61780FF2BC10EDF7BBF8AAE005F28A0041886278914231\n" 
+"D3317D01292ED10120F871002020702078307589208DF8\n" 
+"08000DF10809002089F80100022302AA72210720EDF7E6\n" 
+"F8002801D1002099E08B208DF80800B5F88A0089F80100\n" 
+"022302AA72210720EDF7D5F8002801D1002088E061780F\n" 
+"F25410EDF783F872E0B5F88A106278914235D3317DF194\n" 
+"03C0328400002932D1797C01292FD10120F87100202070\n" 
+"207830750020787489208DF808000DF10809002089F801\n" 
+"00022302AA72210720EDF7AAF8002801D100205DE08B20\n" 
+"8DF80800B5F88A0089F80100022302AA72210720EDF799\n" 
+"F8002801D100204CE00FF2E400EDF748F837E06178B5F8\n" 
+"8A20914232D3317D01292FD1797C01292CD10121F97121\n" 
+"70217831750021797489218DF808100DF10809408889F8\n" 
+"0100022302AA72210720EDF770F8002801D1002023E08B\n" 
+"208DF80800FF2089F80100022302AA72210720EDF760F8\n" 
+"002801D1002013E00FF27C00EDF70FF8012000900DF10A\n" 
+"03E52272210720EDF791F8002801D1002002E0012000E0\n" 
+"002011B0BDE8F0838000880044008800233E505241572F\n" 
+"202564202564000000233E505241572025642025640000\n" 
+"0000233E55703D25642C4C6F3D2564000000233E503120\n" 
+"256400233E503220256400233E526554483100233E5265\n" 
+"544832002DE9F84304460D46DFF8106DB07C002805D000\n" 
+"F03FFF0020F0743075C5E0EEF7FBFE804600273846ADF8\n" 
+"00002078072823D16078FF2820D12946601CFFF704FD60\n" 
+"78B8F88A10884208D301202070627821780FF25C10ECF7\n" 
+"A3FF0CE0B8F88C006178884207D338462070627821780F\n" 
+"F24010ECF795FF012097E00020F074307529462046FFF7\n" 
+"2EFD00280DD0707A00280AD0F079002807D00FF22810EC\n" 
+"F780FF0020F07101203075B07A002877D0DFF82886D8F8\n" 
+"189009F10C00417DC068D9F80C20801800F064FA002868\n" 
+"D0DFF8B8040078411E8941C90FF1747078002801D00020\n" 
+"7070707A002857D0D9F80C0040780DF1000989F8010031\n" 
+"8D814218D2ECF7DAFE007D002813D1B07E401CB076C0B2\n" 
+"02282DD10020B0760127ECF7CCFE3946017599F801100F\n" 
+"F2A400ECF739FF1FE099F80100718D884218D2ECF7BCFE\n" 
+"007D012813D1B07E401CB076C0B202280FD10020B07601\n" 
+"27ECF7AEFE0021017599F801100FF27400ECF71BFF01E0\n" 
+"0020B076002F12D0D8F81C80ECF79DFE007D8DF8000008\n" 
+"F10C00427D00A9C068D8F80C30C018F1F721FA01203075\n" 
+"00203070EEF760FF00283FF469AF307DBDE8F283000023\n" 
+"3E536C65657020414443202564202564000000233E5055\n" 
+"50000000233E67757031202564000000233E6775703220\n" 
+"2564000000F8B507460020ADF80000EEF713FE0546DFF8\n" 
+"244B012060743878A5F88A0005F28A0678787080B5F88A\n" 
+"00002802D07088002808D10FF29C00ECF7C0FE7820A5F8\n" 
+"8A000020708089208DF8000000AF708878700223F19403\n" 
+"5036840000AA72210720ECF7F8FE00280DD08B208DF800\n" 
+"00B5F88A007870022300AA72210720ECF7EAFE002801D1\n" 
+"0020F2BD7288B5F88A100FF25000ECF796FEB5F88A0071\n" 
+"88401A6085B5F88A108900218589B2FF2901DBFE212185\n" 
+"80B28100652902DB6420608501E080006085208D618D40\n" 
+"1A60850120F2BD00005588890056888900233E5054483D\n" 
+"3000233E544853455420256420256400000080B50FF218\n" 
+"010720F5F73AFB0FF230010A20BDE80440F5F733BB0000\n" 
+"792C8400B72C8400912D84005D2E840000000000193484\n" 
+"00FD3584000000000000000000792C8400B72C8400912D\n" 
+"84005D2E840000000000612E8400FD3584000000000000\n" 
+"00000030B583B00020ADF80400FFF717F8002803D10FF2\n" 
+"7000ECF729FE0024DFF8C85900E0641C0B2C12D2601900\n" 
+"7F8DF80400DFF8B80D205C8DF80500022301AA72210620\n" 
+"ECF75CFE0028EBD100203EBD0120009005F11703912272\n" 
+"210620ECF791FE002801D100203EBDE97D0FF22400ECF7\n" 
+"FDFDEEF75FFE01203EBD00005788890058888900233E47\n" 
+"504641494C00000000233E474348495020307825780000\n" 
+"000038B5DFF84449E17D0FF28800ECF7DEFD0020ADF800\n" 
+"0080208DF8000000AD03206870022300AA72210620ECF7\n" 
+"18FE002801D1002032BD8C208DF8000000206870A07002\n" 
+"2300AA72210620ECF708FE002801D1002032BDA3208DF8\n" 
+"0000DFF8EC0CC0786870022300AA72210620ECF7F7FD00\n" 
+"2801D1002032BD0120A072FFF7BAF901210820FEF7B4FF\n" 
+"002801D1002032BD012032BD233E47454F203078257800\n" 
+"0010B582B00FF26800ECF790FD0020ADF8000080208DF8\n" 
+"000000AC03206070022300AA72210620ECF7CAFD002801\n" 
+"D1002016BD9F208DF8000000206070022300AA72210620\n" 
+"ECF7BBFD002801D1002016BDDFF8B00B002181720820FE\n" 
+"F779FF002801D1002016BD012016BD0000805D8800233E\n" 
+"4745430000000120704730B58DB0DFF82458A879002814\n" 
+"D010F091FA002810D0DFF8B444201D0FC810F085FB10F0\n" 
+"90FA002832D00020A871012060752075A0752BE0A87900\n" 
+"2828D1DFF88C44214684B068461822E6F7DDFC0FBC10F0\n" 
+"1AFF00A810F04AFFDFF8F454284600A93422E6F7D0FC05\n" 
+"F11C00417D2175817D6175007D002801D0FFF72DF9287F\n" 
+"002805D034222946DFF8300DF1F72CF801200DB030BD00\n" 
+"00D45C88009000880010B584B0044602A8002101600846\n" 
+"ADF804000120009001AB932272210620ECF782FD002800\n" 
+"F088809DF8040010F0040004D1DFF858174978F19403E0\n" 
+"39840000297DD0002806D0DFF848074178002901D10121\n" 
+"8173012000900DF10503AE2272210620ECF763FD002869\n" 
+"D09DF80500002817D00420009002ABFC2272210620ECF7\n" 
+"55FD00285BD0DFF8A8039DF80810416002A94A7882608A\n" 
+"78C260C9780161FFF762FFDFF87C1C0A78DFF8E8064378\n" 
+"002B227007D000226270A270E27022716271A2710BE04A\n" 
+"6962708A69A2704A68E2708A682271CA6862710A69A271\n" 
+"0A6AE2714A6A22728A6A6272CA6AA2724A7FE272DFF834\n" 
+"2C12782273DFF8302C12786273DFF82C2C1278A273DFF8\n" 
+"282C1278E273DFF8242C12782274DFF8202C12786274DF\n" 
+"F81C2C1278A274C27BE274002202700878042801D11046\n" 
+"0870012000E0002004B010BDDFF8A809C07C70470000EC\n" 
+"03880080B5052802D1084600F002F8012002BD80B50178\n" 
+"41F04103DFF8D41BCB70027801780FF6F430ECF74DFC01\n" 
+"2002BD00001048840070B584B004460020019002A80021\n" 
+"01600E460FF6E430ECF73BFC01210820FEF749FEA0208D\n" 
+"F8040001AD30466870022301AA72210620ECF774FC0028\n" 
+"01D13046C5E0A1208DF80400FF206870022301AA722106\n" 
+"20ECF765FC002801D13046B6E0AB208DF8040001206870\n" 
+"022301AA72210620ECF756FC002801D13046A7E0012000\n" 
+"900DF10603802272210620ECF78BFC002801D130469AE0\n" 
+"80208DF804009DF8060040F045006870022301AA722106\n" 
+"20ECF737FC002801D1304688E0A3208DF80400DFF84C09\n" 
+"C0786870022301AA72210620ECF726FC002801D1304677\n" 
+"E0012000900DF10703AF2272210620ECF75BFC002801D1\n" 
+"00206AE09DF80700C0070BD50420009002ABFC22722106\n" 
+"20ECF74BFC00280CD100205AE03046461CB0F57A7FDDDB\n" 
+"0FF6DC20ECF7B3FB00204FE09DF80800207002A8417861\n" 
+"708178A170C078E070012000900DF10603802272210620\n" 
+"ECF729FC002801D1002038E080208DF80400DFF8040841\n" 
+"7A002905D09DF8060000F0BF0068700CE09DF8061001F0\n" 
+"BB016970C07A002804D19DF8060000F0BA006870022301\n" 
+"AA72210620ECF7C2FB002801D1002013E0AB208DF80400\n" 
+"00206870022301AA72210620ECF7B3FB002801D1002004\n" 
+"E000210820FEF774FD012004B070BD0FF618310620F5F7\n" 
+"32B810B582B00020ADF80000044600E0641C052C12DADF\n" 
+"F8CC09215C8DF800102018007A8DF80100022300AA7221\n" 
+"0920ECF78AFB0028EBD1002016BD012016BD30B583B0DF\n" 
+"F84847E17D0FF6E410ECF732FB0020ADF8040080208DF8\n" 
+"040001AD03206870022301AA72210920ECF7F19403703D\n" 
+"84006CFB002801D100203EBD8F208DF804000B20687002\n" 
+"2301AA72210920ECF75DFB002801D100203EBD03202071\n" 
+"0120A075E0720320206301210220FEF717FD002801D100\n" 
+"203EBD012000900DF10603E62272210920ECF783FB0028\n" 
+"01D100203EBD01203EBD345C880000B583B00FF66010EC\n" 
+"F7EAFA0020ADF8060080208DF8060003208DF807000223\n" 
+"0DF1060272210920ECF723FB002801D100200EBD012000\n" 
+"9001AB8F2272210920ECF759FB002801D100200EBDDFF8\n" 
+"68060021C1720220FEF7D5FC002801D100200EBD012000\n" 
+"9001ABE62272210920ECF742FB002801D100200EBD0120\n" 
+"0EBD00004C5C8800012070472DE9F04F89B0044606A800\n" 
+"210A4606C0884608460590DFF87408D0F82490084689F8\n" 
+"5E00DFF808A69AF81600012804D09AF81500002840F090\n" 
+"800820009006AB942272210920ECF712FB002801D14046\n" 
+"EEE09DF81800A07106A84178E17181782170C178617001\n" 
+"79A1704179E17081792171C07960719AF8030020729AF8\n" 
+"040060726078217841EA0025E078A17841EA0026607921\n" 
+"7941EA0027E079A17941EA002805A8009043463A463146\n" 
+"284600F013F900281DD19AF8160001284ED100208AF816\n" 
+"00DFF8C8075B21017000214170852181700021C170AE21\n" 
+"017100214171702181710121C171EE2101720021417234\n" 
+"E000208AF81600DFF894072178017061784170A1788170\n" 
+"E178C1702179017161794171A1798171E179C171217A01\n" 
+"72617A4172DAF8300001286BDB059803909AF804000290\n" 
+"9AF803000190CDF800803B46324629460FF2A070ECF705\n" 
+"FADAF83000401ECAF8300054E053D0DFF8300701782170\n" 
+"417861708178A170C178E17001792171417961718179A1\n" 
+"71C179E171017A2172407A607200208AF8150060782178\n" 
+"41EA0025E078A17841EA00266079217941EA0027E079A1\n" 
+"7941EA00289AF803008DF81000207A8AF803009AF804B0\n" 
+"607A8AF8040005A8009043463A463146284600F081F805\n" 
+"9803909AF8040002909AF803000190CDF800803B463246\n" 
+"29460FF22870ECF7B0F99DF810008AF803008AF804B0AD\n" 
+"B25B2D11D1B6B2852E0ED1BFB2AE2F0BD1B8F5B87F08D1\n" 
+"207AEE2805D1607A002802D1012089F85E00012009B0BD\n" 
+"E8F08F1CB504460020ADF806008DF804000120009001AB\n" 
+"8F2272210920ECF70DFA002801D1002016BD9DF8040000\n" 
+"F0FC008DF80400012C0AD0042C04D0102C1FD0402C22D0\n" 
+"26E040F001008DF804008F208DF806009DF804008DF807\n" 
+"00DFF89C439DF8040000F0030020710223F19403004184\n" 
+"000DF1060272210920ECF79FF900280DD1002016BD40F0\n" 
+"02008DF80400E1E740F003008DF80400DCE7002016BD01\n" 
+"20607316BD0000440088002DE9F0419C4614460D460646\n" 
+"A8192018A0EB0C00401C47103FB2002F00D50027CD4908\n" 
+"790FF2B062805CC978C1F5807110FB01F240F6DC2E0EFB\n" 
+"02F88902B1F5803F01D34FF6FF71C9000A22B1FBF2F110\n" 
+"2831D18B422FD30120FFF780FF002844D1EA1BE01B0699\n" 
+"B74206DA0B68F61B40F6CA0C0CFB06330B60AF4205DA0B\n" 
+"684FF47A7505FB02320A60A74205DA0A68DFF8283503FB\n" 
+"102008600868002801D500200860DD20B8FBF0F00A68B2\n" 
+"FBF0F008600120BDE8F081102808D1BCF1640F05DA4020\n" 
+"FFF74BFF00280FD1C9E7402802D164398B4204D20128C2\n" 
+"D1BCF1640FBFDA1020FFF73BFF0028BAD00020E1E70FF2\n" 
+"0C610920F4F79BBD974988740120704710B5DFF8B84420\n" 
+"202070002060700A20A0700020E0700A20207100206071\n" 
+"3220A0710020E07207222146DFF89404F0F7C2FB002060\n" 
+"72012010BD00B583B000A800210A4606C00722DFF87414\n" 
+"0DF10100F0F7B1FBA0208DF80000082300AA72210720EC\n" 
+"F7D5F8002801D100200EBD01200EBD00B583B000208DF8\n" 
+"0400DFF84004417B012903D100F0ADF901200EBD418AFF\n" 
+"290CD000290DD0C27A521CC272491E4182417AD2B29142\n" 
+"01D20021C17200F015F805E0818A41820021C17200F00E\n" 
+"F80120009001ABE32272210720ECF7E2F8002801D10020\n" 
+"0EBD01200EBD38B50020ADF80000DFF8D843608A002801\n" 
+"D1A07A60720722E07AC0EBC000DFF8C41341182046F0F7\n" 
+"58FBFFF798FF80208DF8000000AD81206870022300AA72\n" 
+"210720ECF777F8002801D1002032BDA7208DF80000208A\n" 
+"6870022300AA72210720ECF768F8002801D1002032BD01\n" 
+"2032BD30B585B0044600208DF80C00ADF80E0060790290\n" 
+"20790190E0780090A378627821780FF20440ECF704F801\n" 
+"20009003AB802272210720ECF787F8002801D1002061E0\n" 
+"CB4D9DF80C0028720120009003AB8F2272210720ECF777\n" 
+"F8002801D1002051E09DF80C00A8730120009003AB9022\n" 
+"72210720ECF768F8002801D1002042E09DF80C00E87300\n" 
+"F0A6F88F208DF80E000DF10E050B20687002230DF10E02\n" 
+"72210720ECF70FF8002801D100202BE090208DF80E0001\n" 
+"20687002230DF10E0272210720EBF7FFFF002801D10020\n" 
+"1BE0AA4D8122FF212846F4F7B3F980222146681CF0F7C3\n" 
+"FA0020287081232A4672210720EBF7E8FF002805D10FF2\n" 
+"4830EBF799FF002000E0012005B030BDF1940390448400\n" 
+"4400880080B501780F2904DA964A527A521C8A4205DA0F\n" 
+"F22C30EBF785FF002002BD4278202A01DB202242700022\n" 
+"C2704271C1EBC1018D4A20238B54891800224A70427800\n" 
+"2A01D1002201E05200521E8A7182788A70C278CA700279\n" 
+"0A7140794871012002BD8048417A491C41728172012070\n" 
+"4738B504467B4D6C82FFF795FE002C00D0AC8221460FF2\n" 
+"C820EBF74CFF012032BD74494873012070477549087001\n" 
+"20704700000000A000880071480078704780B56C490873\n" 
+"0A7B52000A8201460FF2A020EBF730FF012002BD00B583\n" 
+"B00020ADF806008DF8040080208DF8060001208DF80700\n" 
+"02230DF1060272210720EBF763FF002801D100200EBD10\n" 
+"2000905D4BA02272210720EBF799FF002801D100200EBD\n" 
+"0120009001AB802272210720EBF78DFF002801D100200E\n" 
+"BD01200EBD00B587B00020ADF8000001A81421E5F7CFFD\n" 
+"80208DF8000001208DF80100022300AA72210720EBF730\n" 
+"FF002801D1002013E0102244490DF10500F0F7F9F9A020\n" 
+"8DF80400112301AA72210720EBF71DFF002801D1002000\n" 
+"E0012007B000BD30B583B00020ADF804008DF80600324C\n" 
+"217A0FF2D010EBF7C0FE0020FFF7FAFD002060736072FF\n" 
+"F7BCFF8F208DF8040001ADA07B6870022301AA72210720\n" 
+"EBF7F5FE002801D100203EBD90208DF80400E07B687002\n" 
+"2301AA72210720EBF7E6FE002801D100203EBD80208DF8\n" 
+"0400207A6870022301AA72210720EBF7D7FE002801D100\n" 
+"203EBD012000900DF10603E32272210720EBF70CFF0028\n" 
+"01D100203EBD01203EBD0000805D8800485D8800558889\n" 
+"005688890057888900588889005A8889005B888900A000\n" 
+"8800AC008800EC038800B45D8800F0F1FFFFC05D8800D8\n" 
+"5D8800545E88005C888900445E8800233E474520435520\n" 
+"257820257820257800000000233E4753454C4600233E47\n" 
+"535445525200000000233E4C49474F203078257800233E\n" 
+"4C4947430000233E723D256420673D256420623D256420\n" 
+"633D2564206174696D653D25642C20616761696E3D2564\n" 
+"206C75783D25642000000000233E4040723D256420673D\n" 
+"256420623D256420633D2564206174696D653D25642C20\n" 
+"616761696E3D2564206C75783D25642000004D42442025\n" 
+"642025642025642025642025642025640000004D6F6265\n" 
+"616D2057460000004D6F6265616D20486F70204661696C\n" 
+"004D4220486F70436F756E7420256400004D6F6265616D\n" 
+"204C656E3D25640000004D4220436C6F73652025640001\n" 
+"0410404D378400ED3784008D388400F194032048840005\n" 
+"39840000000000E73A840000000000293B8400F53A8400\n" 
+"053D8400433D8400D93D84005D3E840000000000613E84\n" 
+"000000000000000000000000002DE9F04786B0044601A8\n" 
+"1421E5F782FCEBF72FFD05464FF00208002601E0761C76\n" 
+"B20A2E80F29E80022EF8D0032EF6D0062EF4D0524850F8\n" 
+"2670787A002806D107F10C00406D406880470028E7D008\n" 
+"F8046008F101084FFA88F8304609284FD8DFE800F0050A\n" 
+"4E4E10204E154E49C8212846EBF7EEFE43E04FF4487128\n" 
+"46EBF7E8FE3DE032212846EBF7E3FE38E007208DF80400\n" 
+"FF208DF8050032212846EBF7D8FE2DE03C212846EBF7D3\n" 
+"FE4FF0000A07F10C09BAF1030F22DA0020D9F854100969\n" 
+"884714212846EBF7C3FE0120D9F8541009698847142128\n" 
+"46EBF7BAFEBAF1020F05DA062101A8D9F8542052699047\n" 
+"0AF1010ADEE74FF416712846EBF7A9FE07F10C0999F815\n" 
+"1001A8D9F8542052699047002819D0D9F80C00F96800EB\n" 
+"010A99F8152001A95046F0F734F83846ECF7D9F899F815\n" 
+"20514608EB0400F0F72AF899F9150080444FFA88F8787A\n" 
+"00287FF466AFD9F854008068804700287FF45FAF002009\n" 
+"E0A8F10200ADF80000022200A92046F0F70FF8002006B0\n" 
+"BDE8F0870000EC0388000FB480B5BDF80B006449488002\n" 
+"2802DB801E088001E0002008800C229DF90A100020F4F7\n" 
+"35FC032801D1022000E0012002BC5DF814FB5948012141\n" 
+"800021018001207047564908707047000030B58DB002A8\n" 
+"F4F77CFC514C2088401C2080618880B2884231D3002020\n" 
+"80054627E06068D0F85402E840C00720D52846F5F78CFB\n" 
+"00281BD400EB80009FED430ADDED0B0A60EE800AFDEEE0\n" 
+"0A10EE901A00AA8152DDED0C0A20EE800ABDEEC00A10EE\n" 
+"101A8218518000A94018012101716D1C182DD5DBDDE900\n" 
+"01F5F770FB01200DB030BD80B5F4F7DBFB314948603249\n" 
+"C0F8581200F5167030494160304981600FF20D01C1600F\n" 
+"F225010161012002BD10B50024274890F90000002804D1\n" 
+"F5F76EFB002800D00124204610BDF8B504460D4640F249\n" 
+"16287816FB004001210170287816FB00404170287816FB\n" 
+"00400C218170287816FB0040164991F90010002902D002\n" 
+"21C17001E00121C170287816FB004001210171287816FB\n" 
+"0040C180287816FB00470020F5F7DBFA3881287816FB00\n" 
+"440020F5F7D9FA60812878401C28700C20BDE8F240F5F7\n" 
+"E9BA00000000C842DC02880064888900E1498400174A84\n" 
+"002D4A840000F5E0700268914203D343689A18914202D3\n" 
+"80680028F5D17047DFF820070168F19403B04B840099B9\n" 
+"4FF48031816004224FF4805141604FF0FF31C160016104\n" 
+"214161DFF80017C1F8BC21DFF8FC1601600120704701F1\n" 
+"080313F0070305D001F10803C3F1080303F007035918D2\n" 
+"1A8161C26042F001034B60511828224A60DFF8C0160969\n" 
+"C16170472DE9F84F044601F1080010F0070005D001F108\n" 
+"00C0F1080000F0070000EB010B02F1080010F0070005D0\n" 
+"02F10800C0F1080000F007008618A6EB0B00A0EB030803\n" 
+"EB0B0743F00300CBF80400B74228BF10F02BF93079C007\n" 
+"58BF10F026F9B8F1100F38BF10F021F9A069864207D1E0\n" 
+"684044E060A76140F0010078605AE16069864208D1A068\n" 
+"4044A060676140F001017960C0514EE1706800F0030101\n" 
+"2940F0AD80C0084FEAC00920283BD2D6F808A0F5680090\n" 
+"AE4208BF10F0F7F8564508BF10F0F3F870680099C008C0\n" 
+"00B0EBC10F18BF10F0EAF8009804EBC00000F128018A45\n" 
+"08D021698A45C0F08480DAF80C10B14240F07F80554506\n" 
+"D1009A2068012191408843206077E02830854205D02069\n" 
+"85426FD3A868B0426CD1CAF80C50C5F808A069E0F568D6\n" 
+"F818A0B5420CD0B0682169884223D3C168B14204BFA968\n" 
+"B1421DD1C560A8601CE006F11400056835B906F1100005\n" 
+"68A5B101E00846056805F114010A68002A02BF05F11001\n" 
+"0A68002AF3D12169884202D30021016001E010F094F8BA\n" 
+"F1000F37D0F06904EB800000F5987001688E4209D10560\n" 
+"280014D1F2696068012191408843606025E02069824508\n" 
+"D3DAF81000B04214BFCAF81450CAF8105001E010F071F8\n" 
+"B5B12069854211D3C5F818A0316929B1814226BF29618D\n" 
+"6110F063F8706938B12169884202D36861856101E010F0\n" 
+"59F84E44C84470684008400070604FEAD80548F0010078\n" 
+"6048F80780202D21D204EBC50000F12806B146B8F1100F\n" 
+"38BF10F040F8206820FA05F1C90704D40121A940084320\n" 
+"6006E0B068216988422CBF814610F02FF8B760C9F80C70\n" 
+"C7F80890FE606CE05FEA182008BF002123D0B0F5803F28\n" 
+"BF1F211ED2A0F58071090C01F008018840A0F58052120C\n" 
+"02F004029040A0F580431B0CC1F10E0103F00203891AC9\n" 
+"1A984001EBD030C11D28FA01F101F0010101EB4001F961\n" 
+"00227A613A6104EB8100626822FA01F300F59870DB0706\n" 
+"D4012303FA01F11143616007601CE01F2900680EBF0021\n" 
+"4908C1F1190108FA01F100E010464268D208D200424510\n" 
+"D0CA0F00EB820202F1100349001A68002AF0D121698B42\n" 
+"11D31F60B861FF60BF600EE022698168904228BF914206\n" 
+"D3CF608760B960F8600020B861F19403404F840001E00F\n" 
+"F0BBFF0BF10800BDE8F28F2DE9F04F0546DFF874030068\n" 
+"83B0884608B9FFF723FEDFF86403806800EB08012F3140\n" 
+"1E21EA0000804580F0A581D5F8B81141B1D5F8B0218018\n" 
+"824280F09C818142C0F099810FF096FF00281EBF044607\n" 
+"6814F1010F00F08F81D5F8B0013818C5F8B001D5F8B411\n" 
+"814238BF0146C5F8B411A86968BB286908B1844200D22C\n" 
+"61C5F8C041C5F8C4710020C5F8CC012021BB4800686862\n" 
+"4FF0FF302862284600F128020830D2609260491EF8D1B5\n" 
+"48854203D1A7F12802214625E055F8040CC00805EBC000\n" 
+"A0F108013819401AA0F1280219E005F5E071084600E080\n" 
+"68B8B142680368D2189442F8D1027B12070FD4AA699A42\n" 
+"0CD3466833449A4208D2B9194160E868A9693A182846FF\n" 
+"F7C2FD1FE12869844238BF2C610846391900E0806880B1\n" 
+"02688A42FAD1017B09070AD40460434641687918416028\n" 
+"46214603B0BDE8F04FC0E5AE6931462846FFF77BFD4168\n" 
+"0068081801902F3800F1080111F0070105D000F10801C1\n" 
+"F1080101F0070101EB000906F11000814538BFB14609F1\n" 
+"0800009004F1080109F1180A4FF0000BA7F1280011F007\n" 
+"0105D004F10801C1F1080101F007010A19401AAA61E860\n" 
+"40F00101516080182821416071480069E861009810F007\n" 
+"0018BF0FF0D3FE1B20C9F8040005F5E071B1E80C500098\n" 
+"A0E80C50C5F8C041C5F8C471C5F8CCB10098C5F8C80101\n" 
+"9800E08A460722CAF804200AF104010A1D0BF1010B8242\n" 
+"F4D3BBF1020FB8BF0FF0AEFEB14500F09B80A9EB060081\n" 
+"194FEAD0094A68520852004A6040F0010171608051B9F1\n" 
+"200F1FD205EBC90101F128042746102838BF0FF092FE28\n" 
+"6820FA09F1C90705D4012101FA09F10843286006E0A068\n" 
+"296988422CBF07460FF080FEA660FE60B760F4606AE001\n" 
+"0A08BF002223D0B1F5803F28BF1F221ED2A1F58072120C\n" 
+"02F008029140A1F580531B0C03F004039940A1F5804424\n" 
+"0CC2F10E0204F00204D21A121BA14002EBD131CA1D20FA\n" 
+"02F202F0010202EB4102F26100237361336105EB82016B\n" 
+"6823FA02F401F59871E40705D401209040184368600E60\n" 
+"1CE01F2A09680EBF00225208C2F1190200FA02F200E019\n" 
+"464B68DB08DB00834210D0D30F01EB830303F110045200\n" 
+"2368002BF0D12869844211D32660B161F660B6600EE02A\n" 
+"698868914228BF904206D3C6608E60B060F1600020B061\n" 
+"01E00FF010FEE868804511D2A0EB0800E86040F00100A9\n" 
+"6908EB0102AA61506048F00300486003B001F10800BDE8\n" 
+"F08F002000F02BBC28808900F19403D052840040808900\n" 
+"6859883C2DE9F84F044688460026C8F1000B5FEA182008\n" 
+"BF002123D0B0F5803F28BF1F211ED2A0F58071090C01F0\n" 
+"08018840A0F58052120C02F004029040A0F580431B0CC1\n" 
+"F10E0103F00203891AC91A984001EBD030C11D28FA01F1\n" 
+"01F0010101EB400104EB8100D0F8300130B31F290EBF00\n" 
+"224A08C2F1190208FA02F2002300E052004568ED08ED00\n" 
+"A5EB08055D4503D206465FEA050B0CD045694FEAD27E00\n" 
+"EB8E00002D00691CBF85422B460028E7D1184600283AD1\n" 
+"002E3AD1012088404000414208436168084000F05F8141\n" 
+"420840411E080B00F0100021FA00F2510901F00801CA40\n" 
+"930803F00403DA40550805F002050818EA401818C2F340\n" 
+"0E2844704422FA0EF1081804EB8000D0F830010DE00846\n" 
+"4168C908C900A1EB080159453CBF8B46064601690029F2\n" 
+"D140690028F0D1002E00F02A81A068A0EB0800834580F0\n" 
+"248120698642C0F01E817068C00808EB0B09C00008EB06\n" 
+"05484518BF0FF043FDAE4280F01081F768D6F818A0B742\n" 
+"0CD0B0682169884223D3C168B14204BFB968B1421DD1C7\n" 
+"60B8601CE006F11400076837B906F110000768A7B101E0\n" 
+"0846076807F114010A68002A02BF07F110010A68002AF3\n" 
+"D12169884202D30021016001E00FF011FDBAF1000F38D0\n" 
+"F06904EB800000F5987001688E4209D10760380014D1F2\n" 
+"696068012191408843606026E02069824508D3DAF81000\n" 
+"B04214BFCAF81470CAF8107001E00FF0EEFCBFB1206987\n" 
+"4212D3C7F818A0306930B12169884226BF386187610FF0\n" 
+"DFFC706938B12169884202D37861876101E00FF0D5FCBB\n" 
+"F1100F09D249F00300706009EB0600416841F001014160\n" 
+"96E048F0030070604BF0010068604BF805B04FEADB0020\n" 
+"281DD204EBC00101F12807216821FA00F2BB46D20705D4\n" 
+"012202FA00F00843206006E0B868216988422CBF83460F\n" 
+"F0A5FCBD60CBF80C50C5F808B0EF606CE05FEA1B2008BF\n" 
+"002123D0B0F5803F28BF1F211ED2A0F58071090C01F008\n" 
+"018840A0F58052120C02F004029040A0F580431B0CC1F1\n" 
+"0E0103F00203891AC91A984001EBD030C11D2BFA01F101\n" 
+"F0010101EB4001E96100226A612A6104EB8100626822FA\n" 
+"01F300F59870DB0706D4012303FA01F11143616005601C\n" 
+"E01F2900680EBF00214908C1F119010BFA01F100E01046\n" 
+"4268D208D2005A4510D0CA0F00EB820202F1100349001A\n" 
+"68002AF0D121698B4211D31D60A861ED60AD600EE02269\n" 
+"8168904228BF914206D3CD608560A960E8600020A86101\n" 
+"E00FF031FC07E10FF02EFCF194036056840001E12DE9F8\n" 
+"4F04468846606841420840411E080B00F01000C1404A09\n" 
+"02F00802D1408B0803F00403D9404D0805F002051018E9\n" 
+"401818C1F3400628443018F140081804EB8000D0F83001\n" 
+"4168C908C9000646A1EB080A09E008464168C908C900A1\n" 
+"EB080151453CBF8A46064601690029F2D140690028F0D1\n" 
+"20698642C0F0C1807068C00808EB0A09C00008EB060B48\n" 
+"4518BF0FF0E3FB5E4580F0B380F768B569B7420CD0B068\n" 
+"2169884223D3C168B14204BFB968B1421DD1C760B8601C\n" 
+"E006F11400076837B906F110000768A7B101E008460768\n" 
+"07F114010A68002A02BF07F110010A68002AF3D1216988\n" 
+"4202D30021016001E00FF0B2FB002D34D0F06904EB8000\n" 
+"00F5987001688E4209D10760380011D1F2696068012191\n" 
+"408843606022E02069854205D32869B04214BF6F612F61\n" 
+"01E00FF093FBB7B12069874211D3BD61306930B1216988\n" 
+"4226BF386187610FF085FB706938B12169884202D37861\n" 
+"876101E00FF07BFBBAF1100F09D249F00300706009EB06\n" 
+"00416841F0010141603FE048F0030070604AF00100CBF8\n" 
+"04004AF80BA0D4F808804FEAD805202D28BF0FF05DFBB8\n" 
+"F1000F27D0D4F81490009504EBC50000F128052F46B8F1\n" 
+"100F38BF0FF04DFB2068009920FA01F1C90705D4009A01\n" 
+"2191400843206006E0A868216988422CBF07460FF03AFB\n" 
+"C5F80890C7F80C90C9F80870C9F80C50C4F808A0C4F814\n" 
+"B004E00FF02BFB0020BDE8F28F06F10800BDE8F28F2DE9\n" 
+"F04F83B00546C046C046DFF8B847F52D80F001810B2D31\n" 
+"BF102705F10B00C008C7002068FE08F04010F0030F42D0\n" 
+"C04300F00100861904EBC60000F12808F700D8F8085068\n" 
+"68C008C000B84218BF0FF0FAFAD5F80890454508BF0FF0\n" 
+"F4FA4D4508BF0FF0F0FA6868C008C000B84218BF0FF0E9\n" 
+"FAC84505D120680121B140884320600DE02069814508D3\n" 
+"D9F80C00A84204D1C8F80890C9F80C8001E00FF0D3FA47\n" 
+"F00300686078190835416841F001014160F8E0A168B942\n" 
+"80F0BF80002800F0A180012505FA06F149004A42B04011\n" 
+"43084041420840411E080B00F01000C1404A0902F00802\n" 
+"D1408B0803F00403D9404E0806F002061018F1401818C1\n" 
+"F340083018404421FA08F101EB000804EBC80000F12809\n" 
+"4FEAC80AD9F808607068C008C000504518BF0FF08EFAD6\n" 
+"F808B04E4508BF0FF088FA5E4508BF0FF084FA7068C008\n" 
+"C000504518BF0FF07DFAD94505D1206805FA08F1884320\n" 
+"600DE02069834508D3DBF80C00B04204D1C9F808B0CBF8\n" 
+"0C9001E00FF067FA47F0F19403F059840003007060AAEB\n" 
+"0708B819019048F001014160019848F80080A7684FEAD7\n" 
+"0ABAF1200F28BF0FF052FA47B3CDF800A004EBCA00D4F8\n" 
+"149000F1280AD346102F38BF0FF044FA2068009920FA01\n" 
+"F1C90705D4009905FA01F10843206007E0DAF808002169\n" 
+"88422CBF83460FF030FACAF80890CBF80C90C9F808B0C9\n" 
+"F80CA0C4F8088006F108050198606150E06068C0B33946\n" 
+"2046FFF7EEFD050012D047E015F1400F28BF4FF0FF370B\n" 
+"D205F10B00C008C700606828B139462046FFF716FC0500\n" 
+"35D1A168B9421CD3CA1B6069102A0AD339186161A26042\n" 
+"F001034B60525047F0030141600AE00022A260626141F0\n" 
+"0302426009184A6842F001024A6000F1080515E0E06887\n" 
+"420DD2C01BA169E0607A18A26140F00100506001F10805\n" 
+"47F00300486004E039462046FFF71AFA0546C046C04628\n" 
+"4603B0BDE8F08F00B970472DE9F047A0F10804C046C046\n" 
+"DFF8005528698442C0F07582616801F00302012A00F06F\n" 
+"82CA084FEAC20808EB0409CA0737D4226811F0030F00F0\n" 
+"658251420C1990448442C0F05D8269698C4200F0D880D6\n" 
+"08202E70D2D4F80CA0A768544508BF0FF096F9BC4208BF\n" 
+"0FF092F96068C008C000B0EBC60F18BF0FF08AF905EBC6\n" 
+"0000F128018F4205D029698F4251D3F968A1424ED1BA45\n" 
+"3DD128680121B140884328604C4580F02D82D9F80400C1\n" 
+"0740F12882810700F17A81A969894540F0B580E868AC61\n" 
+"4044E86040F00101616069698C4202D100216961A960E9\n" 
+"69814280F01282DFF83004006808B9FEF7C8FFA9690029\n" 
+"00F00882E868292824BF2846FEF7B1FFE869E968884280\n" 
+"F0FD814FF0FF30E861F8E12830824506D02869824508D3\n" 
+"DAF80800A04204D1C7F80CA0CAF80870B7E70FF02DF9B4\n" 
+"E7E768A669A7420BD0A168814222D3C868A04204BFB868\n" 
+"A0421CD1CF60B9601BE004F114010F6837B904F110010F\n" 
+"689FB101E011460F6807F114021368002B02BF07F11002\n" 
+"1368002BF3D1814202D30020086001E00FF000F9002E86\n" 
+"D0E06905EB800000F5987001688C4209D10760380011D1\n" 
+"E2696868012191408843686074E72869864205D33069A0\n" 
+"4214BF7761376101E00FF0E1F8002F3FF467AF28698742\n" 
+"ABD3BE61216929B1814226BF39618F610FF0D2F8606900\n" 
+"283FF457AF296988429BD37861876150E799F8040000F0\n" 
+"030003287FF44AAFC5F80880D9F8040040084000C9F804\n" 
+"0048F00100606048F804806DE16969894508D1A8686C61\n" 
+"4044A86040F001016160005161E1C008C0004FEAD00A80\n" 
+"44BAF1200F36D2D9F8F19403805D84000C70D9F80860B9\n" 
+"4508BF0FF097F8B14508BF0FF093F8D9F80400C008C000\n" 
+"B0EBCA0F18BF0FF08AF805EBCA0000F128018E4206D029\n" 
+"698E42C0F08180F16849457DD1B74206D12868012101FA\n" 
+"0AF18843286076E02830874205D0286987426ED3B86848\n" 
+"456BD1F760BE606AE0D9F80C70D9F818604F450DD0D9F8\n" 
+"08002969884223D3C168494504BFB96849451DD1C760B8\n" 
+"601CE009F11400076837B909F110000768A7B101E00846\n" 
+"076807F114010A68002A02BF07F110010A68002AF3D129\n" 
+"69884202D30021016001E00FF037F8002E37D0D9F81C00\n" 
+"05EB800000F59870016889450AD10760380012D1D9F81C\n" 
+"206868012191408843686023E02869864205D330694845\n" 
+"14BF7761376101E00FF016F8BFB12869874212D3BE61D9\n" 
+"F8101029B1814226BF39618F610FF008F8D9F8140038B1\n" 
+"2969884202D37861876101E00EF0FDFF48F00100606048\n" 
+"F80480686984420BD1C5F80880ACE040084000C9F80400\n" 
+"48F00100606048F804804FEAD807202F22D205EBC70000\n" 
+"F128094E46B8F1100F38BF0EF0DBFF286820FA07F1C907\n" 
+"04D40121B9400843286007E0D9F80800296988422CBF06\n" 
+"460EF0C9FFC9F80840F460A660C4F80C907CE05FEA1820\n" 
+"08BF002123D0B0F5803F28BF1F211ED2A0F58071090C01\n" 
+"F008018840A0F58052120C02F004029040A0F580431B0C\n" 
+"C1F10E0103F00203891AC91A984001EBD030C11D28FA01\n" 
+"F101F0010101EB4001E16100226261226105EB81006A68\n" 
+"22FA01F300F59870DB0706D4012303FA01F11143696004\n" 
+"601CE01F2900680EBF00214908C1F1190108FA01F100E0\n" 
+"10464268D208D200424510D0CA0F00EB820202F1100349\n" 
+"001A68002AF0D129698B4211D31C60A061E460A4600EE0\n" 
+"2A698168904228BF914206D3CC608460A160E0600020A0\n" 
+"6101E00EF055FF286A401E28620BD1D5F8C80100E08068\n" 
+"0028FCD14FF0FF30286201E00EF045FFC046C046BDE8F0\n" 
+"870000408089002880890030B482B083680469828AE318\n" 
+"C468A34228BF1B1B5343446811F8015B1D555B1C521EF8\n" 
+"D18168491C8160012903D102B030BCF1F7D9B81A484078\n" 
+"18B902B030BCE1F7B6BB02B030BC704710B50446A08A22\n" 
+"6942436368D35C01F8013B521C401EF8D12069401C2061\n" 
+"E168884224BF00202061A068421EA2608842094A527807\n" 
+"D10AB9E1F795FB2046BDE81040F1F7ACB8002A04BFBDE8\n" 
+"1040E1F78ABB10BD00001C2788002DE9F04786B0044660\n" 
+"69056A466A300C00F00100290C01F00101484090F00108\n" 
+"75D0771B1CD26920F1940310618400E2F719F880B1DE48\n" 
+"00680590DD4800680490039702960195CDF800806369DA\n" 
+"4ADA496920E2F717F8206E009033462A467E21D748DEF7\n" 
+"00FF002F00F0E980E765A06CB946874288BF8146C4F858\n" 
+"90A7EB0900A0664A46A8B2D4F8B4104118206DE4F7BEF8\n" 
+"206D48442065A06CA0EB0900A064E06C4844E06409EB05\n" 
+"002066E069216E89B2884206D200962B46226E9521BF48\n" 
+"DEF7D1FE206EBA4908600122216E6069EEF77FFC94F918\n" 
+"004109B94A012300F01F0003FA00F042F82100A06C0028\n" 
+"40F0A680E06C616C884200F07F806B20E1F7B1FF002879\n" 
+"D0636CE26BAE496B20E1F7B9FF72E0E069A9B2A0EB010A\n" 
+"1FFA86F818EB0A0700F08B80E765A06CB946874288BF81\n" 
+"46C4F85890A7EB0900A066CA4588BFCA465246A8B2D4F8\n" 
+"B4104118206DE4F75DF8206D50442065A06CA0EB0A00A0\n" 
+"64E06C5044E0641AFA85F0E169884205D10027E80306D4\n" 
+"4FF4803703E005F4803141EA0007B9EB0A0014D0C24680\n" 
+"4588BF82465246D4F8B410206DE4F737F8206D50442065\n" 
+"A06CA0EB0A00A0645744E06C5044E0642766E069B9B288\n" 
+"4207D200962B46226E40F209117C48DEF74BFE206E7749\n" 
+"08600122216E6069EEF7F9FB94F918004109764A012300\n" 
+"F01F0003FA00F042F82100A06C08BB0120E06303202074\n" 
+"60694FF44171016081696F4A1143816194F9180041096A\n" 
+"4A012300F01F0003FA00F042F8210002212046EFF71EFA\n" 
+"A06A20B1E26C0021E06AA36A98475B480660E06C06B0BD\n" 
+"E8F0872DE9F04784B08046164699460025C8EB08105C4A\n" 
+"02EB0017387C032806BF787C01286FF0010040F099800C\n" 
+"4697F918004109554A012300F01F0003FA00F042F82100\n" 
+"402107F13C00E3F7FCFE2C2107F18800E3F7F7FE3C647E\n" 
+"643C6530197865BE64042038747869D0F818A04AF00041\n" 
+"81613846FFF7A2FE7969C1F818A097F918104A09414B4F\n" 
+"F0010C01F01F010CFA01F143F822100028786909D18169\n" 
+"3C4A1140816149464046EFF7C0F8054610E04FF4417101\n" 
+"608169314A1143816197F9180041092C4A00F01F000CFA\n" 
+"00F042F8210097F9180041092B4A012300F01F0003FA00\n" 
+"F042F8210097F918004109224A00F01F0003FA00F042F8\n" 
+"21000C9818B903203874FD6C28E0CDB1B9F1000F24D06F\n" 
+"20E1F782FE48B102960194CDF800802B461C4A1C496F20\n" 
+"E1F787FEB86AA0B1FA6C6FF00401F86ABB6A98470DE06F\n" 
+"20E1F76BFE48B102960194CDF800800023104A12496F20\n" 
+"E1F770FE284604B0BDE8F0870000188089001C80890078\n" 
+"70860088708600F19403A06484001C71860080E200E028\n" 
+"71860004030080187A890080E100E000E100E0FBFCFF7F\n" 
+"6C71860078718600CC71860070B50A4E04463078401C00\n" 
+"253070E1F791F9606810B1401E60600125707808B9E1F7\n" 
+"82F9E1F7C7FA284670BD1C27880008B902488068406970\n" 
+"4700BF1C27880070B505460E46E1F775F90C4C012E0BDB\n" 
+"206A3218A0684069284205D1082128460EF0E0FCE1F766\n" 
+"F9A068456900214161607808B9E1F758F9284670BD1C27\n" 
+"8800F0B5154F044685B0B86802940D46164601940390E1\n" 
+"F74EF9B868C660386A301A012805DA7878A0B9E1F73EF9\n" 
+"05B0F0BD2068009000A82060009808B100A9416000A9B8\n" 
+"68816045F00401B8680174E1F760FB05B0F0BD00BF1C27\n" 
+"880030B581B00546E1F727F9114C6078401C6070012028\n" 
+"71286868B12078401C207028460EF09DFC20B968790128\n" 
+"1CBF00202871E1F752FA6078401E6070C0B220B901B0BD\n" 
+"E83040E1F701B901B030BD00BF1C27880010B50446E1F7\n" 
+"FEF80020207104484078002804BFBDE81040E1F7EEB810\n" 
+"BD00BF1C27880082B000228DF8002000AA59B1137810F8\n" 
+"01CB8CEA0303DFF84CC013F80C301370491EF3D19DF800\n" 
+"0002B0704700BF002101707047027851400A4A895C0170\n" 
+"084670475AB1037811F801CB8CEA0303DFF814C013F80C\n" 
+"300370521EF3D10078704700000000606E8600E1E70028\n" 
+"18BFFFF74BBA70470278C9B28A421AB11CBF10F8012FF9\n" 
+"E718BF002070470000C9B2830706D0521E22D310F8013B\n" 
+"9942F7D11FE0083A13D302F1040241EA012141EA014150\n" 
+"F8043B121F21BF4B40A3F1013C2CEA030C1CF0803FF3D0\n" 
+"C9B2001F083210F8013B521E28BF91EA030FF8D818BF01\n" 
+"20401E704730B4436803F0004201211B031B0B436004BF\n" 
+"0368002B08D10DE00368DD0F45EA440444605B00036049\n" 
+"1E4468E302F4D523031B0B436043681A434260084630BC\n" 
+"704700004FF4001C1CEB410F94BF1CEB430F09E041EA03\n" 
+"0C50EA4C0C52EA0C0C03D2994208BF9042704714BF8B42\n" 
+"8242704700004FF4001C1CEB410F94BF1CEB430F09E041\n" 
+"EA030C50EA4C0C52EA0C0C03D28B4208BF8242704714BF\n" 
+"994290427047000070B504460D466068C0F30A5040F2FF\n" 
+"71884207D16068000304BF2068002817D0022070BD20B9\n" 
+"2046FFF798FF012867DA012D0FDB40F2FF71091A8D420A\n" 
+"D3606800284CBF9FED2F0B9FED300B84ED000B012070BD\n" 
+"4142A942616806DA6FF31E51401941EA0050606041E040\n" 
+"1E63680122451962F31F5305F1350001F0004163603528\n" 
+"03D361600020F1940330688400206070BD002215F11F0F\n" 
+"04DA22682360002020356060684213D0521E25689241C0\n" 
+"F12003D2439D4045EAD27225686668C54006FA03F32B43\n" 
+"2360636823FA00F06060606808436060B2F1004F03D80D\n" 
+"D12078C0070AD52068401C2060206828B96068401C6060\n" 
+"4FF0FF3070BD6068884204BF20680028F6D1002070BD00\n" 
+"0000000000F0FF000000000000F07FF446400D40EAC120\n" 
+"490006D200F014F8004248BF6FF00040604700F00DF84F\n" 
+"F0004188428CBF084640426047400D40EAC120490080F0\n" 
+"0D8040F00040490DA1F58061491C05D4D1F11F0154BFC8\n" 
+"40C01770474FF00000704770B44FF0004591EA030F44BF\n" 
+"6B4004F043B800BF841A71EB030604D26E40001BB14112\n" 
+"1973414FF4001C1CEB410F34BF7CEB430684E00C0DA4EB\n" 
+"1356362E7DDC012E43DC45EAC32343EA525312BFD20292\n" 
+"025B08240545EAC12141EA5051D2EBC020994125D407D1\n" 
+"B0FA80F610FA06F164D00020203608E0B1FA81F6B140C6\n" 
+"F1200220FA02F21143B0404FEAF474B4EB465434F00106\n" 
+"4FEA74040AD8D6F50016760D04F00044F04061FA06F250\n" 
+"40F1404840C00A40EA415021F0004128BF5FEA500550F1\n" 
+"000044EBD12137E045EAC323DB0A45EAC121C90AB6F120\n" 
+"050EDD42EA0242120CC5F1200603FA06F6EB4042EA0605\n" 
+"6D42984161F100010DE062FA06F5F240554063FA06FC82\n" 
+"EA0C02F3405A406D42904161EB030111F4801F05D1641E\n" 
+"620502D06D004041494121F48011430875F1004350F100\n" 
+"0041EB045170BC70471CEB410F15D223F0004352EA4306\n" 
+"0BD04FEA4C0CBCEB410F04D80C0D661E342EB7DDEBE780\n" 
+"1A994150EA410608BF0021E4E708BF1CEB430F28BF6FF0\n" 
+"0001DDE7F0B540F2FF7581EA030C0CF0004C15EA11541D\n" 
+"BF15EA1357AC42AF42E5E0BC41C1F31301C3F31303801A\n" 
+"994143F4801304D2641E4000494180185941C90241EA50\n" 
+"51B1FBF3F603FB1611A2FB0675D7EBC020A94102D2761E\n" 
+"80185941C90241EA5051B1FBF3FE03FB1E11A2FB0E75D7\n" 
+"EBC020A94103D2AEF1010E80185941890241EA90517605\n" 
+"46EA8E2EB1FBF3F603FB1611A2FB0675D7EB8020A94102\n" 
+"D2761E80185941C90241EA50514EEA060EB1FBF3F603FB\n" 
+"1611A2FB0675D7EBC020A94102D2761E80185941C90241\n" 
+"EA5051B1FBF3F703FB1711A2FB0735D3EBC020A94167F1\n" 
+"00070CBF004247F0010766F3D5274FEA1E31B80814F580\n" 
+"6412DDBD0775F1004250EB0E5051EB045111F5801F5CBF\n" 
+"41EA0C01F0BD4CF07F6141F0E0410020F0BDBD076D0840\n" 
+"EA0E5041F4F19403C06B84008011D4F10104B4F120060A\n" 
+"DAC4F120060200E04001FA06F3E1401843B24015430EE0\n" 
+"342C13DCC6F1200445EA40056D0820FA06F2154321FA06\n" 
+"F0A1400D43002175F1004250F1000051EB0C01F0BD0020\n" 
+"5FEA0C01F0BDCFB992185B41B3FA83F704BFB2FA82F6BF\n" 
+"190B3FB7F120062FBF02FA06F3BB40C7F1200622FA06F6\n" 
+"38BF3343BA401CB1E419641E33E77F4231F00041B1FA81\n" 
+"F404BFB0FA80F6A4190B3CB4F120062FBF00FA06F1A140\n" 
+"C4F1200620FA06F638BF3143A0403C1B1AE7AC421ABF05\n" 
+"EA1357AF4212E050EA41061CBF52EA4306BFE750EA4107\n" 
+"304661461CBF41EA0551F0BD52EA430C08BFC143F0BD00\n" 
+"204FF4001616EB410F98BF16EB430F08BF16EB410F24BF\n" 
+"C14305E016EB430F0CBF61464CEA0551F0BD91FBF2F303\n" 
+"FB1211C0E90031704770B50446E06A68B10849074D8968\n" 
+"8C420EBF00262E682860E06A0EF029F90020E0622E6070\n" 
+"BD0000CCD288001C27880010B5CC4C2078002804D1F7F7\n" 
+"1AFD0121217010BD012010BD1CB5C74C2078800701D501\n" 
+"2016BD0020F7F740FA0120009001AB86221B210020E9F7\n" 
+"3CFC002808D127220FF28C310FF27830E9F729FB002016\n" 
+"BD9DF80400400624D59DF8040000F0BF008DF804000FF2\n" 
+"CC300088ADF800009DF804008DF80100022300AA1B2100\n" 
+"20E9F7E0FB002808D12A220FF244310FF23030E9F705FB\n" 
+"002016BDE9F78CFA3221E9F779FC9DF80400C0071BD40F\n" 
+"F288300088ADF800009DF8040040F001008DF801000223\n" 
+"00AA1B210020E9F7BBFB002808D12F220FF2F8210FF2E4\n" 
+"20E9F7E0FA002016BD0120009001AB87221B210020E9F7\n" 
+"E0FB002808D133220FF2D4210FF2C020E9F7CDFA002016\n" 
+"BD9DF8040000F0F8008DF804000FF224300088ADF80000\n" 
+"9DF804008DF80100022300AA1B210020E9F788FB002808\n" 
+"D135220FF294210FF28020E9F7ADFA002016BDE9F734FA\n" 
+"3221E9F721FC207840F0020020700121022007F021F801\n" 
+"2016BD00B583B00120009001AB87221B210020E9F79CFB\n" 
+"002808D15D220FF24C210FF23820E9F789FA00200EBD9D\n" 
+"F8040040F007008DF804000FF2A0200088ADF800009DF8\n" 
+"04008DF80100022300AA1B210020E9F744FB002808D15F\n" 
+"220FF20C210FF2F810E9F769FA00200EBD9DF804007F28\n" 
+"32D10120009001AB86221B210020E9F765FB002808D162\n" 
+"220FF2DC110FF2C810E9F752FA00200EBD9DF8040040F0\n" 
+"40008DF804000FF234200088ADF800009DF804008DF801\n" 
+"00022300AA1B210020E9F70DFB002808D164220FF29C11\n" 
+"0FF28810F19403506F8400E9F732FA00200EBD3D480178\n" 
+"01F0FD0101700021022006F0AAFF01200EBD0120704710\n" 
+"B584B004460020F7F723F90620009001ABB3221B210020\n" 
+"E9F71FFB002808D190220FF250110FF23C10E9F70CFA00\n" 
+"200EE001A8417821709DF804106170C178A1708178E170\n" 
+"4179217100796071012004B010BD30B583B004460020AD\n" 
+"F8040020484568687A002807D1286E40688047E9F774F9\n" 
+"0A21E9F761FB0020F7F7E9F80220009001ABB9221B2100\n" 
+"20E9F7E5FA002808D1B8220FF2DC010FF2C800E9F7D2F9\n" 
+"00203EBD9DF805009DF8041040EA012000B200EB40004F\n" 
+"F47A7190FBF1F01530207000206070687A002802D1286E\n" 
+"8068804701203EBD00004B5D8800495D8800EC03880010\n" 
+"B504462078002819D10FF2FC00E9F7A7F921460220F9F7\n" 
+"A5F800281DD10FF20410E9F79DF921460220F9F79BF800\n" 
+"2813D10FF20810E9F793F9002010BD207801280AD10FF2\n" 
+"0C10E9F78AF92046FFF78EFF002801D1002010BD012010\n" 
+"BD80B5062806D10846FFF782FF002801D1002002BD0120\n" 
+"02BD0FF2F4010120F1F748BE5B494E564E5D25733A2564\n" 
+"0A00000000443A5C4D43555C53454E534F525F6B616C6D\n" 
+"6961615F5452454C54455F4252434D5F4E6F746550435C\n" 
+"4D43555C50726F6A6563745C5353505F53656E736F7248\n" 
+"75625C53485F48414C5C7372635C4779726F73636F7065\n" 
+"5F49434D32303632382E63000006000000060000000700\n" 
+"000007000000060000005B494E564E5D4779726F73636F\n" 
+"70655F53656C6674657374000000005B494E564E5D4779\n" 
+"726F73636F70655F52657472790000005B494E564E5D20\n" 
+"73656C6674657374206661696C000000005B494E564E5D\n" 
+"4779726F73636F70655F54656D7000000000196D840031\n" 
+"6D8400816E84006F6F840000000000736F840000000000\n" 
+"59708400B7708400002106E0DFF8A02D8A180B5C82F838\n" 
+"30491C0929F6DB704700EBC0000FF204014018EDE70001\n" 
+"00FF0000000001FF000000FF0000000100FF0001000000\n" 
+"000101000000010000000100FF00FF00000000FF010000\n" 
+"00FF000000FF0001000100000000FFFF00000001000000\n" 
+"FF2DE9F14F86B00C460E20009001AB90225C210220E9F7\n" 
+"31F9002809D00E20009001AB90225C210220E9F727F900\n" 
+"2802D14FF0FF30D3E09DF8040001A94A788B78CE78B508\n" 
+"0F79B60006F00C0646EA971607F03F0791F805804FEA98\n" 
+"0E91F806C04FEA081808F0300848EA1C1891F807A04FEA\n" 
+"CC0C0CF0780C4CEA5A1991F808C04FEA4A0A0AF03E0A4A\n" 
+"EADC1AF19403E072840091F809B04FEADB1B4BEA4C0B8D\n" 
+"F801B091F809C0CCF3840B8DF800B091F80AC00CF0010C\n" 
+"91F80BB04FEADB1B4BEA4C0CDDF818B08BF803C091F80A\n" 
+"C04FEA5C0C4FEA8C0C4FFA8CFC4FEAAC0CDDF818B08BF8\n" 
+"00C091F80BC00CF0010C91F80CB04FEADB1B4BEA4C0CDD\n" 
+"F818B08BF804C091F80BC04FEA5C0C4FEA8C0C4FFA8CFC\n" 
+"4FEAAC0CDDF818B08BF801C091F80CC00CF0010C91F80D\n" 
+"B04FEADB1B4BEA4C0CDDF818B08BF805C091F80CC04FEA\n" 
+"5C0C4FEA8C0C4FFA8CFC4FEAAC0CDDF818B08BF802C091\n" 
+"F80DC00CF0010CDDF818B08BF806C04FF00A0C1CFB00F0\n" 
+"A0F5A06020601CFB02F0A0F5A06060601CFB03F0A0F5A0\n" 
+"60A060A5F12000E060A6F108002061A7F1200060610EF1\n" 
+"2600A061A8F12000E061A9F140002062AAF1200060629D\n" 
+"F80100A0629DF80000E062002000E0401CC0B202460D2A\n" 
+"04DA525C002AF7D0002006E0487B000601D5002001E06F\n" 
+"F0090007B0BDE8F08F1CB5002400E0641CB4F57A7F12DA\n" 
+"0120009001ABB0225C210220E9F73CF8002802D14FF0FF\n" 
+"3016BD9DF804000006EAD4002016BD6FF0040016BD10B5\n" 
+"DFF8180B90F8541000290DD000F154046078002808D0FF\n" 
+"F7D5FF002802D56FF0040010BD00206070002010BD10B5\n" 
+"82B014460022ADF8002082228DF8002000AA0123537040\n" 
+"1E8041C043C00F400040F001005070491E8941C943C90F\n" 
+"50EA8100507002235C211846E8F7B5FF002802D14FF0FF\n" 
+"3016BD002C0BD0FFF7A3FF002802D56FF0040016BDDFF8\n" 
+"000D0021417003E0DFF8F80C01214170DFF8800A012180\n" 
+"F85410002016BD70B584B015461C46DFF8686A96F85420\n" 
+"002A04D10122FFF7B5FF002859D10820009001ABB0225C\n" 
+"210220E8F7C2FF002806D10FF2A400E8F731FF4FF0FF30\n" 
+"48E0002086F854009DF80400C009286001A89DF80410C9\n" 
+"0001F47E71427851EA5211218008998278920102F4FE52\n" 
+"C37852EA93020A800279920102F4FE52437952EA93024A\n" 
+"808279920102F4FE52C07952EA90008880099800220260\n" 
+"17E031F91230002B05D1036801245500AC402343036031\n" 
+"F9123041F6FE74A34206D10368012455006D1CAC402343\n" 
+"0360521C032AE5DB002004B070BD0000474D2D52463100\n" 
+"0038B504460020ADF80000FFF734FF002802D56FF00400\n" 
+"32BD85208DF8000000AD20786870022300AA5C211846E8\n" 
+"F70FFF002819D086208DF8000060786870022300AA5C21\n" 
+"1846E8F702FF00280CD087208DF80000A0786870022300\n" 
+"AA5C211846E8F7F5FE002802D14FF0FF3032BD002006E0\n" 
+"DFF8F194037076840020194118025D81F84120401C0328\n" 
+"F6DB002032BD80B50020ADF80000FFF7F1FE002802D56F\n" 
+"F0040002BD81208DF8000000208DF80100022300AA5C21\n" 
+"1846E8F7CCFE002802D14FF0FF3002BD002002BD70B58C\n" 
+"B0044602A800210160FFF7D1FE00282ED4DFF8B8080021\n" 
+"80F854100D4611E006A850F82100002808D08B560FF654\n" 
+"5656F82560704340FA83F08854491C0329EEDB6D1C052D\n" 
+"02A836DAFFF776FF002836D405A8019009A8009003AB04\n" 
+"AA00210846FFF7FAFE00282AD40498002802D06FF00400\n" 
+"30E0002019E009A931F91010B1F5805F03D106AA002342\n" 
+"F82030B1F5805F03DD06AA012342F82030B1F5805F04DA\n" 
+"06A94FF0FF3241F82020401C0328E3DB002102AAC2E7FF\n" 
+"F73FFF002802D54FF0FF3008E0002503E002A8285C2855\n" 
+"6D1C032DF9DB00200CB070BD2DE9F0438BB004460E4600\n" 
+"2005900490FFF760FE002802D56FF0040071E0DFF8D057\n" 
+"002085F8540005A8019008A8009002AB03AA00210120FF\n" 
+"F7A1FE0398002802D06FF004005CE004A8019006A80090\n" 
+"02AB03AA01210846FFF791FE0398002802D06FF004004C\n" 
+"E005F120077869F1F75AFF80468946BDF92000BDF91810\n" 
+"401AF1F751FFDFF85C2BDFF85C3BF1F763FF42464B46F1\n" 
+"F75FFF0022DFF84C3BFFF72AF9FFF73CF820600DF11808\n" 
+"0DF120097869296A4843F1F736FF04460D46B9F90200B8\n" 
+"F90210401AB9F90410401AB8F904104018F1F727FFDFF8\n" 
+"142BDFF8143BF1F739FF22462B46F1F735FF0022DFF8F8\n" 
+"3AFFF700F9FFF712F830600598049908430BB0BDE8F083\n" 
+"80B5FFF7E3FD002802D56FF0040002BD002211460846BD\n" 
+"E80840EEE500002DE9F8432DED048B8AB0044689461746\n" 
+"1D4600200790804607A80190CDF8009002AB08AA414608\n" 
+"46FFF716FE002802D54FF0FF30FAE04046DFF8906615E0\n" 
+"39F910108219D2780FF64C3333F91220891A821992F941\n" 
+"208357D21A06EB80039B6C03FB021147F82010401C0328\n" 
+"E7DB306F06EB4000BDF80810A0F85810306F401C30670A\n" 
+"2801DB40463067F06E401CF0660A2801DB0A20F0664046\n" 
+"06E006EB4001B1F9581008FA81F8401CF16E8842F5DB08\n" 
+"EB88004000B0FBF1F004903868009078680390B8680190\n" 
+"169800281DD00098B168049A51434FF47A7291FBF2F140\n" 
+"1A00900398F168049A51434FF47A7291FBF2F1401A0390\n" 
+"01983169049A51434FF47A7291FBF2F1401A0190039801\n" 
+"99401A0690039840420199401A0590706BF1F76FFE41EC\n" 
+"180B9FEDCB9B009864217269069B5A4301FB0020B16905\n" 
+"9AF19403007A840002FB0100F1F75EFE53EC192BF1F772\n" 
+"FE53EC182BF1F76EFEFEF750FF0490F0690099326A069B\n" 
+"5A4301FB0020716A059A02FB0100F1F746FE53EC192BF1\n" 
+"F75AFE53EC182BF1F756FEFEF738FF0390B06A0099F26A\n" 
+"069B5A4301FB0020316B059A02FB0100F1F72EFE53EC19\n" 
+"2BF1F742FE53EC182BF1F73EFEFEF720FF019096F93800\n" 
+"049996F93920039B5A4301FB002096F93A10019A02FB01\n" 
+"00206096F93B00049996F93C20039B5A4301FB002096F9\n" 
+"3D10019A02FB0100606096F93E00049996F93F20039B5A\n" 
+"4301FB002096F94010019A02FB0100A060002D02D0BDF8\n" 
+"080028800898002802D06FF0040000E007980AB0BDEC04\n" 
+"8BBDE8F2831CB50020ADF806008DF8040008E0DFF88414\n" 
+"41180FF65012825C81F84120401C0328F4DB88208DF806\n" 
+"000DF106040020607002230DF106025C211846E8F788FC\n" 
+"002817D089208DF806000020607002230DF106025C2118\n" 
+"46E8F77AFC002809D00120009001AB80225C210220E8F7\n" 
+"B2FC002802D14FF0FF3016BDDFF818449DF8040084F844\n" 
+"0004F108012046FFF765FB002812D4002007E004EB8001\n" 
+"0FF6900252F820208A64401C0328F5DB04F14400002101\n" 
+"82C1628162084616BD002815D090F90010202911DA90F9\n" 
+"0120202A0DDA90F90200202809DA6FF01E03994205DB9A\n" 
+"4203DB984201DB01207047002070472DE9FC4704460D46\n" 
+"16461F464FF00009DFF89483D8F8A000012802D0022828\n" 
+"D052E008F1A00ADAF81800DAF81410411AB1F5FA7F48D3\n" 
+"CAF81400FFF72EFD8146B9F1000F40D4DAF80C00002805\n" 
+"D108F1B000FFF7BBFF002803D10220C8F8A00002E00020\n" 
+"C8F8A000FFF728FE00282BD55AE001A8FFF72FFD8146B9\n" 
+"F1000F23D408F1A00A9AF910009DF9041088420CD101A8\n" 
+"9AF9111090F90120914205D19AF9121090F90200814201\n" 
+"D04FF040090020C8F8A00006E000EB080101AA825C81F8\n" 
+"B020401C0328F6DBB9F1000F01D548462AE00A9800903B\n" 
+"46324629462046FFF7FCFD002820D408F1A00A012814DB\n" 
+"DAF80C10002903D1DAF81810CAF814100121CAF80C10D8\n" 
+"F8A010002902D10121C8F8A01040EA090902E00020CAF8\n" 
+"0C00FFF7CDFD002800D44846BDE8F68700009A99999999\n" 
+"99B93FF8B5040002D16FF07F00F2BD984D6A6F002A02D1\n" 
+"6FF00200F2BD05F17406326B002A21D0009104F1200304\n" 
+"F1140204F10C01FFF74AFF002816D4002110E005EB8102\n" 
+"02F1780304EB4107B7F90C70DF6004EB81077F699F6154\n" 
+"F821309367491C0329ECDB318D2184316B002901D00028\n" 
+"F19403907D840014D500210EE005EB8102936F44F82130\n" 
+"783204EB4103D7689F8104EB810392695A61491C0329EE\n" 
+"DB318D2184716CB26C51187164F2BDDFF8CC05704770B5\n" 
+"00206F4C11E001190FF25C62825C81F8B02004EB800101\n" 
+"F178020FF24C6353F82030D3608B679361401C0328EBDB\n" 
+"04F174050020288568643220A8640020286368630120E8\n" 
+"624FF0FF3060670020A8630320FFF7EEF9FFF769FE0028\n" 
+"05D50FF2A850E8F7C2FA002070BD04F1B0063046FFF7BA\n" 
+"FE00280FD03046FFF7D8FB002805D50FF28C50E8F7B0FA\n" 
+"002070BDFFF712FCC00FE86208E0FFF70DFC002802D501\n" 
+"20E86201E00220E862012060671822002104F1C000F0F7\n" 
+"9FFC012070BD80B5DFF80805D0F8A410012909D00121C0\n" 
+"F8A410FFF701FD0FF24050E8F786FA06E00121C0F8A810\n" 
+"0FF23850E8F77EFA012002BDDFF8D40400F1A4014A6801\n" 
+"2A03D00021C0F8A41001E0002048600120704701207047\n" 
+"38B5002803D002283ED00DD34DE0274800F1740494F83C\n" 
+"00087094F83D00487094F83E00887040E02148436F002B\n" 
+"07D16FF002010FF2E040E8F74DFA002032BD002305E01C\n" 
+"185D5684F8B0505B1CDBB29342F7DB00F17404216B0029\n" 
+"25D000F1B0052846FFF736FE002803D02846FFF754FB1A\n" 
+"E0FFF795FB002802D50120E06213E00220E06210E00023\n" 
+"0CE001EB4300407811F8132012EB0020DFF81C2402EB43\n" 
+"0290835B1C092BF0DB012032BD445B88002DE9F04389B0\n" 
+"05460E46904699460027012100A8FFF7BAFE04460FE000\n" 
+"A850F82700F1F785FBDFF8E423DFF8E433F1F797FBFEF7\n" 
+"79FC25F817007F1C032FEDDB002C06D521460FF22840E8\n" 
+"F7EBF900204FE0E00702D547F6FF702880A00702D5DFF8\n" 
+"B0032880600702D547F6FF706880200702D5DFF89C0368\n" 
+"80E00602D547F6FF70A880A00601D5E248A880E248C468\n" 
+"04F10C077A7D2946F868E368C018ECF7DDFC2046E8F782\n" 
+"FD7A7DF868E16841182846ECF7D3FCD44C4A4631462846\n" 
+"636898474046A16888473088B8F80010081828807088B8\n" 
+"F8021008186880B088B8F804100818A88031463046CC4A\n" 
+"52689047012009B0BDE8F08330B58BB0044600A800210A\n" 
+"4606C00D46FFF7E9F9002807D56FF004010FF26430E8F7\n" 
+"84F928462DE0294602A8FFF732FE002801D5284625E0FF\n" 
+"F7D5F9002807D56FF004010FF24830E8F770F9284619E0\n" 
+"0798ADF80000099808990A1AADF802204942081AADF804\n" 
+"0009E000A830F9150004F8150004EB4501001248706D1C\n" 
+"032DF3DB01200BB030BDF8B504460025EAF789F80746F1\n" 
+"940320818400FFF751FE0646A1480069C06A80689A49C1\n" 
+"F8BC00F86E400717D406F1140306F10C02B11D3046FFF7\n" 
+"25FF00280DD12846F2BD06EB4500C18804F8151004EB45\n" 
+"01B0F90600001248706D1C032DF1DB7069A0710120F2BD\n" 
+"F8B505460026EAF758F80746FFF720FE0446F86E000706\n" 
+"D52846FFF77CFF00280BD0032526E004F1140304F10C02\n" 
+"A11D2046FFF7F4FE002814D13046F2BD34F8160005F816\n" 
+"0005EB460034F916100912417004EB46018A898271B1F9\n" 
+"0C100912C171761C032EEADB0225182221466B48ECF703\n" 
+"FC704850F82500C06A80686849C1F8BC000120F2BD0000\n" 
+"985B88002DE9F0478EB0044602A800210A4606C0E8F75B\n" 
+"F881465F4E06F174080120C8F83000706F002804D006F1\n" 
+"4100C078022803D0FFF7C9FDFFF727FE06F24107F87820\n" 
+"7000206070A070E07003220FF2E0110120FFF744FE0021\n" 
+"04A8FFF75FFD00286DD410F0150F02D06FF0050512E010\n" 
+"F02A0F02D06FF006050CE00498002808D10598002805D1\n" 
+"0698002802D16FF0070500E0002596F841002071787860\n" 
+"71B878A071E571002020726072064602AF0DE004A850F8\n" 
+"2600F1F703FA334A334BF1F717FAFEF7F9FA27F8160076\n" 
+"1C032EEFDB3548C66806F10C0A9AF8152002A9DAF80C00\n" 
+"F368C018ECF781FB3046E8F726FC9AF81520DAF80C00F1\n" 
+"68411802A8ECF775FBBDF908000012A072BDF80800E072\n" 
+"B7F902000012207378886073B7F904000012A073B888E0\n" 
+"73257402214846E8F7BCF900A901A8FFF730FA002801D5\n" 
+"002018E010F0150F01D06FF0050010F02A0F01D06FF006\n" 
+"000199091261740199A17400990912E174009921756075\n" 
+"0020C8F8300001200EB0BDE8F08700009A9999999999B9\n" 
+"3F00003240FCA9F1D24D62503F045C8800445B880028CF\n" 
+"88007B14AE47E17A843F0080FFFFEC038800ECD1880010\n" 
+"B50FF2AC0421460220F0F7D3FC0FF2C4010420F0F7CEFC\n" 
+"21460320BDE81040F0F7C8BC474D2D5046310000474D2D\n" 
+"5046320000474D2D4F00000000474D2D534B495000474D\n" 
+"2D494F46202564000000474D2D43462025640000000047\n" 
+"4D2D524631202564000000474D2D524632202564000000\n" 
+"52030000EE020000EE0200007F7F7F0000000000000000\n" 
+"0000000000100000000800000004000000020000000100\n" 
+"0000890E830F7D10771100000000CD7D84008D7E8400C1\n" 
+"7E8400DF7E840000000000778184000000000005828400\n" 
+"E37E8400CD7D84008D7E8400C17E8400DF7E8400000000\n" 
+"00158184000000000005828400E37E840010B588B0F194\n" 
+"03B084840001A81821E1F75CFE0120009001ABD022EE21\n" 
+"0520E8F703F89DF80410552956D1012854D1DFF84C4704\n" 
+"2020620320A084E0845520A0751620009001ABAA22EE21\n" 
+"0520E7F7ECFF002842D001A99DF804204B7843EA022222\n" 
+"808A78CB7843EA022262800A794B7943EA0222A2808A79\n" 
+"9DF80B3043EA0222E2800A7A9DF80D3043EA022222818A\n" 
+"7A9DF80F3043EA022262810A7B9DF8113043EA0222A281\n" 
+"8A7B9DF8133043EA0222E2810A7C9DF8153043EA022222\n" 
+"828A7C9DF8173043EA02226282097D9DF8192042EA0121\n" 
+"A18200E0002008B010BD38B50020ADF80000DFF8984606\n" 
+"2201462046F0F716F901202072F4208DF800002E208DF8\n" 
+"0100022300AAEE210520E7F74AFF0546012D03D00FF2B0\n" 
+"60E7F7FAFE0622002104F12000F0F7FBF8002060720146\n" 
+"C4E904010120A072284632BD80B50020ADF80000F4208D\n" 
+"F800002E208DF80100022300AAEE210520E7F724FF02BD\n" 
+"38B50546DFF81C46E8F71EFAA061E069A169091A142905\n" 
+"D2002803D00FF25460E7F7C8FEA069E061002D02D0012D\n" 
+"0DD01DE004F1200000F0CCF8002817D12078002812D160\n" 
+"7800280FD110E004F1220000F096F800280AD1A0780028\n" 
+"05D1E078002802D12079002801D000202072012032BDF0\n" 
+"B585B00546002422461346CDE9022300290ED0DFF89805\n" 
+"D0E9062312F1080043F10001000940EA01700911CDE902\n" 
+"011FE01046ADF804000220009001ABF622EE210520E7F7\n" 
+"08FF0446012C03D00FF2CC50E7F776FE012CEED19DF804\n" 
+"009DF8051041EA0020C11700F02BF9C117CDE90201DDE9\n" 
+"02010A22A2FB006702FB0177CDE90267DDE9020100B200\n" 
+"122871DDE902016871204605B0F0BDDFF8140500214172\n" 
+"01207047DFF80805002141720120704770B50446DFF8F8\n" 
+"5405F1200000F077F80646687A022808DA0622002105F1\n" 
+"2000F0F73DF8687A401C6872287A002805D10522294620\n" 
+"46ECF747F90BE0062205F120012046ECF740F9062205F1\n" 
+"20012846ECF73AF901202872304670BD1CB50021ADF804\n" 
+"10032100910346F622EE210520E7F799FE002805D10FF2\n" 
+"F840E7F708FE002016BDF4208DF804002E208DF8050002\n" 
+"2301AAEE210520E7F743FE0446012C03D00FF2D840E7F7\n" 
+"F3FD204616BD1CB50021ADF80410022100910346F622EE\n" 
+"210520E7F770FE002805D10FF2B840E7F7DFFD002016BD\n" 
+"F4208DF804008DF80500022301AAEE210520E7F71BFE04\n" 
+"46012C03D00FF29840E7F7CBFD204616BDF0B589B00446\n" 
+"00200146CDE90001CDE90201CDE90601CDE90401F19403\n" 
+"408884002078617841EA0020C117CDE90401DDE9040100\n" 
+"F071F8C117CDE90201A2780023E0781946000250EA0242\n" 
+"20791043DFF8B423928CC2F10802F5F770FCCDE90601DD\n" 
+"E9060100F084F8CDE90001DFF89853A87A0028DDE90001\n" 
+"15D0E44A002399420ADB01DC904207D3DDE90001E04A99\n" 
+"4206DB01DC904203D3DE481946CDE900011846A87212E0\n" 
+"D5E90423801A05F0F4FCB0F5FA7F0ADDDDE9002311460F\n" 
+"F2DC30E7F76AFDD5E90401CDE90001DDE90001C5E90401\n" 
+"0020E070DDE900010014A070DDE9000100B200126070DD\n" 
+"E900012070DDE902010A22A2FB006702FB0177CDE90267\n" 
+"DDE9020100B200126071DDE902012071012009B0F0BD70\n" 
+"B5BA4EB27D552A20D172890023821A61EB03033089A0FB\n" 
+"024500FB0355E40B44EA4544B6F91200C117C90241EA50\n" 
+"51C002B6F91420D317A21853EBE533DFF7DDFC201851EB\n" 
+"E531C6E90601D6E906010830001100B270BD2DE9FB4F84\n" 
+"B0A34ED6E90601B0F57A6061F10001A0FB002300FB0133\n" 
+"01FB0033120B42EA03521B13F4880025CDE90045B6F904\n" 
+"804FEAE879A0FB084500FB095501FB0855640B44EAC544\n" 
+"B6F90C804FEAE879A2FB08AB02FB09BB03FB08BB4FEA1A\n" 
+"4A4AEA0B4A4FEA2B4B14EB0A044BEB6535A41C45F10005\n" 
+"A40844EA8574AD1014F5004845F10009DDE900ABA8FB0A\n" 
+"4509FB0A55E40B44EA4544ED0BB6F92470DDE90489CDE9\n" 
+"0289B6F900804FEAE8794FEA890949EA98794FEA8808CD\n" 
+"E9008990469946B6F90E20D317A2FB08AB02FB09BB03FB\n" 
+"08BB4FEADA2A4AEA4B5ADDE9002312EB0A0243EBEB23B6\n" 
+"F902804FEAE879A0FB08AB00FB09BB01FB08BB4FEADA2A\n" 
+"4AEA4B5A12EB0A0043EBEB213A46F5F74AFB821C41F100\n" 
+"03920842EA8372DDE90201B0EB020861EBA3094CF25030\n" 
+"40FA07F2D317A2FB080102FB091103FB081100290CD802\n" 
+"D3B0F1004F08D2490041EAD071400022462B46DFF745FC\n" 
+"07E022462B46DFF740FC490041EAD071400002460B4612\n" 
+"0A42EA03621B12A2FB024502FB035503FB025540F6DE32\n" 
+"A2FB046702FB0577360C46EA0746434A4FF0FF33A2FB00\n" 
+"4502FB015503FB0055240C44EA05442D14321945EB2743\n" 
+"40F6CF64002512196B41120942EA0372801851EB231107\n" 
+"B0BDE8F08F7CB4012100222D4BB3F90040002C02D014F1\n" 
+"010F03D114468DF8004002E00C468DF80040B3F9025000\n" 
+"AC002D02D015F1010F02D11546657001E00D466570B3F9\n" 
+"0450002D02D015F1010F02D11546A57001E00D46A570DD\n" 
+"88002D03D04FF6FF76B54202D11546E57001E0F19403D0\n" 
+"8B84000D46E5701D89002D03D04FF6FF76B54202D11546\n" 
+"257101E00D4625715B89002B03D04FF6FF75AB4202D113\n" 
+"46637101E00B466371134604E01D5D002D00D1521C5B1C\n" 
+"062BF8DB062A00D100210170084676BC7047E02D880000\n" 
+"008800915F0100B0AD01001189010043E3FFFF18B40346\n" 
+"0C460020012B02D0022B02D009E011BCC7E41146491E89\n" 
+"41C943C90F204614BC09E512BC70470FF264010520F0F7\n" 
+"7CB8424F2D57460000004261726F3A204D656173757265\n" 
+"2025752061626E6F726D616C00000042542D5246000000\n" 
+"42522D524632000042522D574632000042522D52463100\n" 
+"0042522D57463100004261726F3A207072652025640000\n" 
+"0000AD84840085858400118784001D8784000586840029\n" 
+"87840000000000678B84003D8C84007CB500242046ADF8\n" 
+"0400E7F7E8FA054620208DF8040001AE20467070022301\n" 
+"AABA210520E7F799FB002801D1204676BD01212846E7F7\n" 
+"C3FC641C0120009001AB2122BA210520E7F7CAFB002801\n" 
+"D1002076BDA4B2B4F5FA7F05DD0FF2A420E7F733FB0020\n" 
+"76BD9DF804000006E0D420208DF8040002207070034601\n" 
+"AABA210520E7F76BFB002801D1002076BD012076BD1CB5\n" 
+"04460020ADF804000120009001AB0F22BA210520E7F79A\n" 
+"FB002801D1002016BD9DF80400BD2851D100F052F80028\n" 
+"01D1002016BD032001E0401E40B2002807D40FF2582151\n" 
+"F830108C4201D20028F3D110208DF8040001AC05206070\n" 
+"022301AABA21E7F731FB002801D1002016BD20208DF804\n" 
+"00C4206070022301AABA210520E7F722FB002801D10020\n" 
+"16BD21208DF8040040206070022301AABA210520E7F713\n" 
+"FB002801D1002016BD2E208DF80400DF206070022301AA\n" 
+"BA210520E7F704FB002801D1002016BD012016BD002016\n" 
+"BD80B50020ADF8000020208DF8000000208DF801000223\n" 
+"00AABA210520E7F7ECFA002805D10FF28010E7F79DFA00\n" 
+"2002BD012002BD80B58F20FFF779FF002801D1002002BD\n" 
+"012002BD80B5FFF728FF002805D10FF25810E7F786FA00\n" 
+"2002BD012002BD80B5FFF7E6FF002801D1002002BD0120\n" 
+"02BD80B5FFF7C3FF002801D1002002BD012002BD012070\n" 
+"47012070477FB5044601A800210A460B460EC001200090\n" 
+"01AB0F22BA210520E7F7E8FA002846D09DF80400BD2842\n" 
+"D10320009001ABA822BA210520E7F7DAFA002801D10020\n" 
+"37E09DF80400207001AD68786070A878A0700020E07026\n" 
+"6826490868301A00F5C820B0F5482F0CD904222046EBF7\n" 
+"50FDF01206EB105001130FF2AC00E7F72CFAF19403608F\n" 
+"840000E00E600220009001ABAB22BA210520E7F7ADFA00\n" 
+"2801D100200AE09DF80400207168786071201D00F006F8\n" 
+"012000E0002004B070BD00004178007840EA01204FF4F0\n" 
+"7190FBF1F000EE100AB8EEC00ADFED070A30EE200ABDEE\n" 
+"C00A10EE100A80B205490870000A487001207047000000\n" 
+"002A4228008800D65D880001207047012070470FF25401\n" 
+"0520EFF7BDBE000042522D524600000042522D43460000\n" 
+"0042522D504600000041626E6F726D616C206261726F20\n" 
+"256400000000280000007000000050000000600000008F\n" 
+"00000050000000E8030000100000009B8E8400B58E8400\n" 
+"C78E8400D98E8400DD8E8400E18E840000000000DD8F84\n" 
+"00E18F84000020704701207047012070470120704738B5\n" 
+"04460D46E7F72AF90521E7F717FB0020104904E00A6802\n" 
+"55521C0A60401CA842F8DB012032BD0120704701207047\n" 
+"094802680A704A70511C01600120704706490A68027042\n" 
+"70501C086001207047000000002C008800945888009858\n" 
+"88000FF23C010820EFF747BE10B50FF2300421461220EF\n" 
+"F740FE21461320EFF73CFE21461420BDE81040EFF736BE\n" 
+"0FF210011520EFF731BE0FF22C011620EFF72CBE619084\n" 
+"00699084006D9084006D9084009D908400719084009990\n" 
+"8400B1908400A190840065908400699084006D9084006D\n" 
+"9084009D9084007190840099908400B1908400A1908400\n" 
+"0FB480B5082200210846F0F785F8022801D1022004E074\n" 
+"48002101704180012002BC5DF814FB7048002101700120\n" 
+"704738B501240020ADF800006B4D95F90000002809D120\n" 
+"4628700020A880A8680BF0F1FE0CF067F84CE001282CD1\n" 
+"6888401C68800DF10101A8680CF008F9002815D0082200\n" 
+"212046F0F74FF8032800D1032408220B210020F0F747F8\n" 
+"022801D1022032BD022028700CF02DFB2AE0B5F9020096\n" 
+"2826DB0520287000F065F80FF28410E7F7D6F81DE00328\n" 
+"1BD1A888401CA88000B2FB280DDA00A9A8680BF0EFFE00\n" 
+"280FD004202870204600F03EF800F04BF807E00FF25810\n" 
+"E7F7BBF80520287000F042F8204632BD10B53B4CF0F70B\n" 
+"F8E060E8F7EAFFA060E0683849C0F8981100F5CC703749\n" 
+"4160374981600FF21101C1600FF2D9010161012010BD00\n" 
+"00014600202D4AD26892F88121002A02D0012900D106E0\n" 
+"704780B5002000F006F8012002BD294890F90000704727\n" 
+"490870704780B5082200210846EFF7D7FF022801D10220\n" 
+"02BD012002BD80B51B4800218180418008220120EFF7C8\n" 
+"FF032801D1032002BD012002BD38B50124F19403F09284\n" 
+"00134D95F9000002281DD108220B212046EFF7B6FF0328\n" 
+"04D10FF29400E7F754F80324FFF7D0FF022805D10FF290\n" 
+"00E7F74BF8022032BD032800D103240320287002A0E7F7\n" 
+"41F8204632BD000053414900E4848800599184007F9184\n" 
+"00899184007788890018B440F249120B7812FB03030124\n" 
+"1C700B7812FB03035C700B7812FB030308249C700B7812\n" 
+"FB03000122C2700878401C087011BC88E7000023235341\n" 
+"204E460023235341204E535446000000534D20524D2046\n" 
+"4C00000000534D20414420464C000000000FB480B57F48\n" 
+"01210170052200210846EFF752FF022801D102200DE005\n" 
+"2207210020EFF749FF022801D1022004E000F0E1F80CF0\n" 
+"5BFA012002BC5DF814FB38B50124052207212046EFF736\n" 
+"FF032800D103246C4D95F90000032801D0012807D10522\n" 
+"00210120EFF727FF032800D103240020287000F0BEF80C\n" 
+"F0E3FA204632BD80B5002000F03DF8022801D1022002BD\n" 
+"032801D1032002BD012002BD10B5594CEFF708FF2061E8\n" 
+"F7E7FEA060E6F733FFE06020695449C0F8081100F58470\n" 
+"53494160534981600FF21101C1600FF249110161012010\n" 
+"BD000001460020494A126992F8F120002A02D0012900D1\n" 
+"02E07047002003E0474890F90000704745490870704770\n" 
+"B582B0064601253E4C94F90000012823D1A088401CA080\n" 
+"00B24C280BDB0020A08002202070052200212846EFF7C3\n" 
+"FE032800D10325012E59D1E068007D012807D1B4F90400\n" 
+"1F2851DB6078401C60704DE0A078401CA07049E002281C\n" 
+"D1012E0AD1E068007D012803D16078401C607002E0A078\n" 
+"401CA07094F90100012836DB052200210846EFF796FE02\n" 
+"2801D1022076BD032020702AE0032828D100208DF80000\n" 
+"00A9A0680CF0C4F9C0B202280DD1052200212846EFF77E\n" 
+"FE032800D103250120FFF79AFF0420207010E003280ED1\n" 
+"052200212846EFF76EFE032800D1032500206070A07002\n" 
+"2020700CF07EF9284676BD034800218180417081707047\n" 
+"00000000B4818800B9938400F793840039948400668889\n" 
+"0010B50C4640F24911227811FB020201231370227811FB\n" 
+"02025370227811FB020205239370227811FB02000121C1\n" 
+"70FFF753FF2078401C207010BD00000FB480B502220121\n" 
+"0020EFF72BFE022801D102200EE0022207210020EFF722\n" 
+"FE022801D1022005E00CF0F2F94B4800210170012002BC\n" 
+"5DF814FB80B5022201210846EFF70FFE032801D1032002\n" 
+"BD022207210120EFF706FE032801D1032002BD3E480021\n" 
+"0170012002BD00B58BB000A8EFF757FEF1940380968400\n" 
+"03A890EC030A0CF0FFF93749087001200BB000BD10B534\n" 
+"4CEFF7E8FDA060E6F716FE6060A0683149816778303049\n" 
+"4160304981600FF21D01C1600FF269010161012010BD80\n" 
+"B528484068007D0CF0D5F9012002BD002024498A6892F8\n" 
+"6120002A04D091F90010002900D0012070471E48002101\n" 
+"700120704710B50024012804D007D303280BD002D303E0\n" 
+"012407E0022405E0032401460FF26000E6F74DFE204610\n" 
+"BD000070B504460D4640F24916287816FB004001210170\n" 
+"287816FB00404170287816FB004002218170074890F900\n" 
+"00FFF7D2FF297816FB0141C8702878401C2870BDE87040\n" 
+"C2E76C7888000D96840047968400779684004C4D435053\n" 
+"2031202564000038B50446E8F752FD90F98450002C02D1\n" 
+"4FF0FF3032BD092200212046EFF711F86D1E062D36D8DF\n" 
+"E805F0040C131A21282F00012060704FF0FF30E0700120\n" 
+"20722CE04FF0FF30207020710120207225E04FF0FF3060\n" 
+"700120E07020721EE04FF0FF30207001212171207217E0\n" 
+"01206070E0704FF0FF30207210E0012020704FF0FF3020\n" 
+"71207209E04FF0FF306070E070207203E0012020702071\n" 
+"2072002032BD10B5A2B00DA80FF2A8311CC91CC0CE4C20\n" 
+"7800282CD10DA8FFF7A2FF4422002110A8EEF7BEFF0420\n" 
+"10904FF4FA60119009220DA913A8EBF7C9F810A984B068\n" 
+"464422E0F753FD0FBC04F09EFA10F1010F08D14FF0FF32\n" 
+"89210FF26030E6F79AFD002006E00FF26430E6F794FD01\n" 
+"202070012022B010BD0FB470B584B09DF82100B04C2070\n" 
+"00A90FF2603268CA68C100F034F86069002807D1012060\n" 
+"6100A8FFF75FFF00A804F0AAFA2069D0F86406C1170522\n" 
+"0023DEF72CFD0526A6FB002306FB0133C4E9022311464F\n" 
+"F4805004F0A2FA4FF4805004F011FB012004B070BC5DF8\n" 
+"14FB80B500F029F84FF4805004F042FB0020F4F755FC01\n" 
+"2002BD80B5C00710D5222200210846EFF7A1FC22220121\n" 
+"0020EFF79CFC222202210020BDE80840EFF795BC222200\n" 
+"210846EFF790FC222201210020BDE80840EFF789BC80B5\n" 
+"222200210120EFF783FC222201210846EFF77EFC222202\n" 
+"210120BDE80840EFF777BC2DE9F04393B00DA81421E0F7\n" 
+"F0FB002406A81021E0F7EBFB20460146CDE9000102A810\n" 
+"21E0F7E3FBE8F741FCFEF70AFA05466C4E3069D0F86406\n" 
+"C11705222346DEF7B7FC0522A2FB008902FB0199D6E902\n" 
+"01494501D1404506D0C6E9028941464FF4805004F027FA\n" 
+"3078C10715D56F6911E005EB4401B1F9061000EE101AB8\n" 
+"EEC00AF2EE040A80EE200A0AA901EBF19403109A840084\n" 
+"0181ED000A641C032CEBDBC00704D539460AA804F059FB\n" 
+"03E00021084604F054FB3078C0072DD500A906A80DF0ED\n" 
+"F8002410E006A850F82400EFF725FF02460B4600204649\n" 
+"EFF74DFEFCF72FFF02A941F82400641C042CECDB102202\n" 
+"A90DA8EAF7BEFF68698DF844003E48006C00F10C04627D\n" 
+"0DA9E368C0681818EAF7B0FF0120A074307880072DD500\n" 
+"A906A80DF0A0F8002410E006A850F82400EFF7F4FE0246\n" 
+"0B4600202E49EFF71CFEFCF7FEFE02A941F82400641C04\n" 
+"2CECDB102202A90DA8EAF78DFF00208DF844002548C06B\n" 
+"00F10C04627D0DA9E368C0681818EAF77FFF0120A07401\n" 
+"2013B0BDE8F08380B5EFF7B4FB184908611B49C0F87816\n" 
+"00F278601A4941601A4981600FF21101C1600FF2790101\n" 
+"61012002BD00000E48006990F86106002801D100207047\n" 
+"05E080B5002000F006F8012002BD0E4890F9000070470C\n" 
+"49087070470349087001460FF2B800E6F729BC00008830\n" 
+"88006A88890080842E41EC0388009B9884000799840083\n" 
+"99840069888900222202210020EFF76FBB222202210120\n" 
+"EFF76ABB18B440F249120B7812FB030301241C700B7812\n" 
+"FB03035C700B7812FB030322249C700B7812FB03000022\n" 
+"C2700878401C087011BCB5E700000001000100000000FF\n" 
+"0000005B494E564E5D452025643A25640A00005B494E56\n" 
+"4E5D444D5020696E6974616C697A656420212121210000\n" 
+"000001000100000000FF000000525620666C6167202564\n" 
+"0000DFF80C0C90F8A91200EB810181ED7A0A90F8A91200\n" 
+"EB8101F0EE601AC1ED8A1A90F8A91200EB810181ED9A1A\n" 
+"00F2A9214A78102A01DA521C4A7090F8A912491C80F8A9\n" 
+"12C9B2102902DB002180F8A912704700002DE9F8432DED\n" 
+"028B0026DFF8B04B04F2A9256878022801DA30465EE037\n" 
+"4601E000267F1C6878874251DA94F8A902002802D10F20\n" 
+"0E2103E0401E411E00D5103104EB810804EB800999ED7A\n" 
+"0AD8ED7A0A30EE600A10EE100AEFF7E2FD21F00041EFF7\n" 
+"06FE08EE100A99ED8A0AD8ED8A0A30EE600A10EE100AEF\n" 
+"F7D2FD21F00041EFF7F6FD08EE900A99ED9A0AD8ED9A0A\n" 
+"30EE600A10EE100AEFF7C2FD21F00041EFF7E6FD00EE10\n" 
+"0ADFEDC00AB4EE608AF1EE10FA09DAF4EE608AF1EE10FA\n" 
+"04DAB4EE600AF1EE10FAAADB761CA9E7F6B2042E01DB01\n" 
+"2000E00020BDEC028BBDE8F2832DE9F84F2DED068BB0EE\n" 
+"408AF0EE608AB0EE419AF0EE619A0446DFF8BC5A05F5E4\n" 
+"7989ED050AB0EE68AA89ED06AAF0EE49AAC9ED07AA05F5\n" 
+"B2764FF00A0AB6F90E0010FB0AF0F19403A09D8400B6F9\n" 
+"1010471A05F5EE78214689B2404602F0FCFC05F5E47001\n" 
+"F069FF95F8C80110FB0AF099F8011000EB010A1FFA8AFA\n" 
+"05F52A7BBAF12A0F02D13FB2002F03D499F80200002813\n" 
+"D0DBF8080000280BD106F07EFC0120CBF8080099F80220\n" 
+"51460FF6AC20E6F7D8FA0120CBF80C0026E0DBF8080001\n" 
+"2808D106F075FC0020CBF808000FF69C20E6F7C7FADBF8\n" 
+"0C00BAF1280F0BDB002803D10FF69020E6F7BCFA0120CB\n" 
+"F80C0006F08BFC08E0012803D10FF68C20E6F7B0FA0020\n" 
+"CBF80C0099ED020AF0EE480AB4EE600AF1EE10FA21D199\n" 
+"ED030AB4EE4A0AF1EE10FA1AD199ED040AB4EE6A0AF1EE\n" 
+"10FA13D1DFF8EC793868401C3860152818D3D9F80800EF\n" 
+"F7FBFC02460B460FF64420E6F785FA002038600BE0B0EE\n" 
+"480A89ED020A89ED03AAC9ED04AADFF8B4090021016005\n" 
+"F5EE7090EC030AFFF7A6FE95F8A802022839D1204680B2\n" 
+"B0EE690A0CF0DAFE214689B2404605F097FE05F5B27420\n" 
+"4606F04EFBD5F8640101280FD104F00CFD204606F045FB\n" 
+"2C22314605F5C870EAF769FD0FF6D810E6F749FA22E000\n" 
+"F0E2FA00280ED0B08900280BD10FF6CC10E6F73DFA0120\n" 
+"85F8A80206F040FB204606F027FB00F05BF90CE001280A\n" 
+"D1FFF78EFE002806D00FF6A810E6F728FA022085F8A802\n" 
+"00F005F80020BDEC068BBDE8F28FDFF8B41801F5E47082\n" 
+"88002A13D1C288002A10D1DFF8EC2813785B1C1370DBB2\n" 
+"072B2ADB01238380D1F80811098CC180002010707047D1\n" 
+"F8082102F120035B8D002B0DD0042B03D0052B01D0082B\n" 
+"02DB0321818001E002218180118CC180704791F8C81104\n" 
+"2904D1042181804178C180704701218180118CC1807047\n" 
+"DFF8380890F8A8027047002806D0DFF82C18D1F8081158\n" 
+"22E0F77EB97047002803D0DFF868180968016070470100\n" 
+"803F38B500281ED1DFF8044804F5DE7500EE101AB8EE40\n" 
+"0A85ED010A04F5DE7006F0D7FA95ED010AF2EE0A0A20EE\n" 
+"200A10EE100AEFF71DFC02460B460FF6B000E6F7A7F932\n" 
+"E001281CD1DFF8C04700EE101AB8EE400A84ED6F0A04F5\n" 
+"DE7006F0B8FA94ED6F0AF2EE0A0A20EE200A10EE100AEF\n" 
+"F7FEFB02460B460FF67C00E6F788F913E0022811D1DFF8\n" 
+"844704F5DE75298104F5DE7006F09CFAB5F908000D2110\n" 
+"FB01F10FF66000E6F773F90FF66400E6F76FF942F24270\n" 
+"01460FF66400E6F768F940F2DF7001460FF66C00BDE834\n" 
+"40E6F75FB9F8B52DED028B84B005460E4617460FF66400\n" 
+"E6F754F942F2427001460FF63000E6F74DF940F2DF7001\n" 
+"460FF63400E6F746F9DFF80447F1940330A184004FF42F\n" 
+"7200212046EEF745FB04F15800C4F8080100EE105AB8EE\n" 
+"408A04F5DE7585ED018A00EE106AB8EE400A84ED6F0A2F\n" 
+"81F2EE0A8AB5F908000D2110FB01F0029020EE280A10EE\n" 
+"100AEFF78DFBCDE9000128EE280A10EE100AEFF785FB02\n" 
+"460B460FF2F070E6F70FF904F019FB04F5DE7006F029FA\n" 
+"04F1200042F21071C185018600218162022020842C2221\n" 
+"4604F15800EAF715FC012084F8A8020CF05AFD012084F8\n" 
+"AC020020286101F051FD04F5E47004B0BDEC028BBDE8F2\n" 
+"4001F04FBD10B596B006F0DAF9044600A8FFF701FF0098\n" 
+"001916B010BD70B52DED028BDFF8244604F5C272106904\n" 
+"F58471096E814205D1B4F87231558BAB4200F08B800E1A\n" 
+"02D5DFF84406861992ED020AD2ED0D0A70EE608AF5EE40\n" 
+"8AF1EE10FA03D59FEDA60A78EE808A94ED610AD2ED0B0A\n" 
+"30EE608AB5EE408AF1EE10FA03D59FED9E0A38EE008AB4\n" 
+"F87201C0B292ED010A0CF0FBFEB0EE401A04F2AB256878\n" 
+"012802D002282DD034E004F1B0019FED941AF0EE480AB0\n" 
+"EE680A304600F05AF894F8AB02301884F8AB02C0B20628\n" 
+"21DB04F1780021469FED8A1AD0ED1C0A90ED170A806B00\n" 
+"F046F894F8AB02401C84F8AB025822002104F1B000EEF7\n" 
+"6EFA0220687007E02146F0EE480AB0EE680A304600F030\n" 
+"F8B4F8720100280AD15822002104F1B000EEF759FA0020\n" 
+"84F8AB02012068702C2204F5B27104F5C870EAF762FBC4\n" 
+"F808415822214604F15800EAF75AFB04F15800C4F80801\n" 
+"04F5B9704088B4F87810884202D02084A4F87800BDEC02\n" 
+"8B70BD00002DE9F8432DED048B8AB0B0EE409AB0EE608A\n" 
+"F0EE418A0E4606F12004DFF8B47407F5B675E988A18531\n" 
+"46B0EE680A00F0E9F8D7F8B80200281AD194ED010A30EE\n" 
+"090A84ED010A00F033FA84ED010AE8886085A888208568\n" 
+"69606194ED060A30EE080A84ED060A00F017FA84ED060A\n" 
+"5DE007F5DE7007AA0AC80AC20368136007F5B27184B068\n" 
+"462C22DFF792FF0FBCB0EE680A00F059F9D4ED010A30EE\n" 
+"800A84ED010A00F005FA84ED010AE888F5EE408AF1EE10\n" 
+"FA0BDD032803D106206085208510E004280ED108206085\n" 
+"20850AE0032803D107206085208504E0042802D1092060\n" 
+"85208595ED050AF6EE000A20EE200A84ED050AA069EFF7\n" 
+"1FFA8046894618EE100AEFF719FA0022DFF8CC33EFF742\n" 
+"F942464B4600F090FAEFF736FA00EE100A84ED060A00F0\n" 
+"B8F984ED060AE869EFF703FADFF8A823DFF8A833EFF72B\n" 
+"F9EFF723FA00EE100A84ED070ADFED7E0AB4EE600AF1EE\n" 
+"10FA02DBDFF8CC03E061D7F8F19403C0A484006C016062\n" 
+"608D002801D10020606200202062E8686063688A208628\n" 
+"8930840AB0BDEC048BBDE8F183002474490000000080B5\n" 
+"06F08DF840F6B931884201D3012002BD002002BD38B50D\n" 
+"4605F11004A18F032912D1B5EE400AF1EE10FA06DD2969\n" 
+"4018286100F080F9286131BD61684018606000F079F960\n" 
+"6031BD042911D1B5EE400AF1EE10FA06DDA1684018A060\n" 
+"00F06BF9A06031BDE1684018E06000F064F9E06031BDF8\n" 
+"B52DED028B0546B0EE408A0C4620682818206000F056F9\n" 
+"206018EE100AEFF789F921F0004100221346FCF7F3F846\n" 
+"D2A74ED6F8B802002832D106F58877B86806280FD2B4F8\n" 
+"4A10042903D179686918796004E0D6F810116918C6F810\n" 
+"112818B86054E0E1684018E06000F02BF9E0602146B0EE\n" 
+"480AB868FFF793FFE0682818E06000F01FF9E0602146B0\n" 
+"EE480A2846FFF787FF00F03EF80120C6F8B80236E0E068\n" 
+"2818E06000F00DF9E0602146B0EE480A2846BDEC028BBD\n" 
+"E8F44071E7B4F84A00032802D0042807D00DE060682818\n" 
+"606000F0F7F860600CE0A0682818A06000F0F0F8A06005\n" 
+"E060682818606000F0E9F86060764E06F5887080680028\n" 
+"01D000F011F800F006F80020C6F8B802BDEC028BF1BD6E\n" 
+"480021C0F8101100F588704160816070476A484168D0F8\n" 
+"102151184160011D4A68D0F814018018486070470100C8\n" 
+"410FB438B52DED088BB0EE408ADFED638A9FED629ADDED\n" 
+"159A19EE900AEFF7E8F841EC1A0B9FED5EBBBDF83E0004\n" 
+"2853EC1A2B5D4824D15D49EFF708F853EC1B2B00F056F9\n" 
+"EFF7FCF80BEE100AB5EE408AF1EE10FA38D453EC1A2B57\n" 
+"485449EEF7F5FF04460D4618EE100AEFF7C1F822462B46\n" 
+"EEF7EBFFEFF7E3F809EE100A23E04C49EEF7E3FF53EC1B\n" 
+"2B00F031F9EFF7D7F80BEE100AB5EE408AF1EE10FA13D4\n" 
+"53EC1A2B44484549EEF7D0FF04460D4618EE100AEFF79C\n" 
+"F822462B46EEF7C6FFEFF7BEF809EE100AF5EE409AF1EE\n" 
+"10FA18D09DED0E0AB5EE400AF1EE10FA11D010EE100AEF\n" 
+"F784F80022354BEEF7AEFF02460B4600203349FCF778F9\n" 
+"EFF7A0F808EE900A3BEE090A10EE100AEFF770F82D4A34\n" 
+"4BEEF79AFF04460D461798EFF767F822462B46EEF791FF\n" 
+"04460D4618EE900AEFF75DF822462B46EEF787FFEFF77F\n" 
+"F800EE100ABDEC088B31BC5DF814FBDFED1E0AB4EE600A\n" 
+"F1EE10FA03DBDFED220A30EE200A7047DFED180AB4EE60\n" 
+"0AF1EE10FA03DBDFED1C0A30EE200A70471349884201D3\n" 
+"194908187047F46188000000E03FB81E85EB51B8AE3F00\n" 
+"0000000000000000000C40F1940350A884009A99999999\n" 
+"99C93FCCCCEC3F9999B93FCDCCCCCCCCCCFC3F00004E40\n" 
+"0000F03F7B14AE470124744981969800B06488005D8889\n" 
+"00C06388000000C841E17A743F002474C9806967FF05F0\n" 
+"3CBF05F041BF05F073BF012801D105F05ABF7047000050\n" 
+"443A204250204F4E2025642025640050443A204250204F\n" 
+"4646000050443A2056482053544550434E542055500000\n" 
+"0050443A2045584954205648005044204E414320256600\n" 
+"00005044202D3E204F46520000005044202D3E20570050\n" 
+"44202D3E20520050443A20312025660000000050443A20\n" 
+"322025660000000050443A203320256400000000504420\n" 
+"3A2032314155473134000000005B4D5F504420205D2056\n" 
+"65723A202564000000005B5052495F50445D205665723A\n" 
+"20256400000000504420496E69743A2032384155473134\n" 
+"0000000050443A20312025662032202566203320256400\n" 
+"0070B44FF0004591EA030C44BF6B40FBF7BFBF00BF841A\n" 
+"71EB030603D2001BB141121973414FF4001C1CEB410F34\n" 
+"BF7CEB430443E00C0DA4EB1356352E50DC45EAC323DB0A\n" 
+"45EAC121C912B6F120050DDD63FA05F6EB4086EA030512\n" 
+"4218BF45F00105C01851F100010CD213E062FA06F5F240\n" 
+"5540F3415A40B340F3405A408018594107D349085FEA30\n" 
+"005FEA350528BF45F0010501F58011420875F1004250F1\n" 
+"000041EB045170BC4FF4001C1CEB410F38BF7047002009\n" 
+"0D090570471CEB410F10D252EA43060BD0BCEB410F05D8\n" 
+"0C0DAB43661E342EB5DD02E0AB438018594170BC704770\n" 
+"BC704751EC100B00B500F003F841EC100B00BD40F2FF7C\n" 
+"0B0D4DD0634566D230B421EA035141F4801103F2FD3C5F\n" 
+"EA5C0C01D300184941890041EA907180004FF440140023\n" 
+"E202D50AB1F5100107D46D081DD2091B64190018494149\n" 
+"1BF7D56D080AD20919641B00184941491BEFD56D08F7D3\n" 
+"01E0520817D0C01861419B1AAC4100184941801AA941F4\n" 
+"D452080AD0C01AA1419B186C4100184941801AA941E9D4\n" 
+"5208F4D15B1C6C4161084FEA330001EB0C5130BC704750\n" 
+"EA0103FBD030B4B1FA81F311B9B0FA80F41B190B3BB3F1\n" 
+"20042FBF00FA04F19940C3F1200420FA04F438BF214398\n" 
+"40D3F101039DE76345E1D011F5801FDED850EA4101DBD0\n" 
+"D9430CF058BD38B5DFF8F44B40F2172200212046EDF71A\n" 
+"FE012084F88101022084F89201032084F8A301042084F8\n" 
+"B401DFF8D00BC4F82E01002084F8F10004F2151004F581\n" 
+"711322DFF795FBA320A4F8F2004FF21860C4F8F800DFF8\n" 
+"A84B0FF67905256000F0F19403E0AB840078FCDFF8A01B\n" 
+"086000F090FCDFF8981B086000F0BAFCDFF8941B086000\n" 
+"F0E7FCDFF88C1B086000F01AFDDFF8F41C0860A5600120\n" 
+"32BD7CB5050005D10FF27000BDE87640E5F7C8BBDFF84C\n" 
+"4B04F23716B168D4F8100100F04BFB05EB05110A1902F2\n" 
+"C611F3698B60336A4B60C860708BC2F8C6010020F06130\n" 
+"627083D4F81001B06004F5D27300269E605E60C4F8A461\n" 
+"DE60C4F837014868019088680090D2F8C631CA68691E0F\n" 
+"F21800E5F795FB73BD534C4D2320494458204552520000\n" 
+"0000534C4D23532053455420564D4255462025642F2564\n" 
+"2F25642F25642F2564000008B4F0B5DFF8B04AC4F82A11\n" 
+"04F58475AA601B9984F828110599C4F802119FEDAC0A0E\n" 
+"A9D1ED080A60EE800AFDEEE00A10EE901AA4F806110EA9\n" 
+"D1ED050A60EE800AFCEEE00AC4ED420ADDED0E0A20EE80\n" 
+"0ABCEEC00A85ED010AC98C29730C2194F8F02011FB0242\n" 
+"0368136094F8F02011FB02424368536094F8F02011FB02\n" 
+"418068886004F1F006287B0CF0FBF8B5EE400AF1EE10FA\n" 
+"08DD287B002805D0307B462804DA401C307301E0002030\n" 
+"73297BDFF80C7A97F9040010F1010F02D00A4690420AD0\n" 
+"062901D0082903D10FF29800E5F712FB95F90C00387128\n" 
+"7B062801D008280ED14FF21860B0607088642803D00FF2\n" 
+"8400E5F700FB64207080A868706017E04FF21860B06071\n" 
+"68A86800F080FA4EF6612188420CD37088A32803D00FF2\n" 
+"6400E5F7E9FAA3207080A86870600020307394F8F00040\n" 
+"1C84F8F000C0B2142804DB002084F8F00001207070B868\n" 
+"8047054604F2151004F581711322DFF768FA2846F0BC5D\n" 
+"F808FB534C4D20572652205550202564000000534C4D20\n" 
+"4357203100000000534C4D20435720312E360000DFF8AC\n" 
+"0C90F829017047000010B586B00446C9B20846401E0528\n" 
+"2ED8DFE800F0030A11181F2600A8DFF8201B1122DFF737\n" 
+"FA2CE000A8DFF87C1C1122DFF730FA25E000A8DFF8081B\n" 
+"1122DFF729FA1EE000A8DFF8641C1122DFF732FA17E000\n" 
+"A8DFF8581C1122DFF71BFA10E000A8DFF8501C1122DFF7\n" 
+"14FA09E00FF6A040E5F773FA00A8DFF82C1C1122DFF709\n" 
+"FA204600A91122DFF704FA06B010BD012906D015D30329\n" 
+"10D006D3042909D07047DFF8141C08617047DFF87018C1\n" 
+"F833017047DFF8001C88607047DFF8F81B48607047DFF8\n" 
+"DC1BC1F82E017047DFF8D41B81F83201704727E110B500\n" 
+"2403E0204600F022F9641C062CF9DB10BD10B5DFF8B04B\n" 
+"1822002104F25110EDF735FC1122002104F5EB70EDF72F\n" 
+"FC1122002104F2E710F1940370AF8400EDF729FC94F829\n" 
+"01052807D1D4F81001C4F83F01C4F80502C4F8650110BD\n" 
+"00000000C8422DE9F04100270A2802D00B286CD0B2E001\n" 
+"2930D03DD303291FD002D304290ED037E0DFF8485B05F2\n" 
+"921405F21B10816905F58470806800F081F907462FE0DF\n" 
+"F82C5B05F5DA7405F21B10016A05F58470806800F073F9\n" 
+"074621E0DFF8105B05F2A31405F21B10C16905F5847080\n" 
+"6800F065F9074613E0DFF8F45A05F2811405F21B10816A\n" 
+"05F58470806800F057F9074605E0DFF8F84A0FF65830E5\n" 
+"F7C3F9C4F80D70DFF8C85AD4F80100D5F802110818D5F8\n" 
+"1511401AC4F80100D4F80500D5F808110818D5F81B1140\n" 
+"1AC4F80500D4F8090005F584714968081805F21B114968\n" 
+"401AC4F8090046E0DFF8805A04290FD105F5DA7405F21B\n" 
+"16D6F82480414605F58470806800F01AF90746C6F82080\n" 
+"1BE0032913D1D5F8A421D5F8B0110FF6E820E5F780F905\n" 
+"F2A31405F21B10C16905F58470806800F002F9074605E0\n" 
+"05F2C5140FF6D420E5F76EF9C4F80D7005F21B16D4F801\n" 
+"00F18E10FA81F0C4F80100D4F80900B16B0818C4F80900\n" 
+"D4F80500F16B0818C4F80500BDE8F08110B501280CD036\n" 
+"D303280ED003D3052813D028D310BDDFF8FC090021C185\n" 
+"10BDDFF8F4090021016310BDDFF83C460020A4F84B01C4\n" 
+"F84D0110BDDFF82C461822002104F25110EDF737FB1122\n" 
+"002104F5EB70EDF731FB1122002104F2E710BDE81040ED\n" 
+"F729BB12220021DFF8AC09BDE81040EDF721BB10BD10B5\n" 
+"012806D036D303281CD00ED3042825D010BDDFF8644911\n" 
+"22002104F28110EDF70EFB012084F8810110BDDFF84C49\n" 
+"1122002104F5C970EDF702FB04F281100221417410BDDF\n" 
+"F830491122002104F2A310EDF7F5FA032084F8A30110BD\n" 
+"DFF818491122002104F5DA70EDF7E9FA04F2A310042141\n" 
+"7410BDF8B50446012C25D02BD3032C13D01AD3052C08D0\n" 
+"25D2DFF8600500F23311D0F8100188601DE0DFF8500500\n" 
+"F23311D0F81001C86015E0DFF8400500F23311D0F81001\n" 
+"48600DE0DFF83005D0F81011C0F8331106E0DFF8240500\n" 
+"F23311D0F810010861DFF81405D0F810613046EEF735FA\n" 
+"0022DFF8B838FBF70EFCFBF720FB0546EDB2DFF8AC0800\n" 
+"FB15663046EEF725FA0022DFF8A038FBF7FEFBFBF710FB\n" 
+"0746FFB24EF6602000FB1760EEF716FADFF88828DFF888\n" 
+"38EEF71EFAFBF700FBC0B200903B462A4621460FF6FC00\n" 
+"E5F775F8F1BD10B40022884201D3421A08E00B1ADFF860\n" 
+"48A34203D3DFF85C281018421A104610BC704770B50128\n" 
+"1BD01FD303280DD0F1940300B3840011D3052805D019D2\n" 
+"DFF83C08816804241DE0DFF83408C168052418E0DFF828\n" 
+"084168032413E0DFF85004D0F8F91102240DE0DFF81408\n" 
+"0169012408E00FF69800E5F73AF8DFF83004D0F8101107\n" 
+"24DFF82804D0F81001FFF7BBFF0546EEF7BCF90022DFF8\n" 
+"C837FBF795FBFBF7A7FAC0B2DFF8BC1701FB10552846EE\n" 
+"F7ADF90022DFF8B037FBF786FBFBF798FA0646F6B24EF6\n" 
+"602000FB1650EEF79EF9DFF89827DFF89837EEF7A6F9FB\n" 
+"F788FAC0B20346324621460FF63000BDE87040E4F7FCBF\n" 
+"DFF8BC1388607047DFF8AC03032180F82911D0F81011C0\n" 
+"F8FD11DFF8B00300687047DFF89403022180F82911D0F8\n" 
+"1011C0F8F911DFF88C0300687047DE48012180F82911D0\n" 
+"F81011C0F80912DE4800687047D948052180F82911D0F8\n" 
+"1011C0F80512C0F86511DA480068704780B5D248042180\n" 
+"F82911D0F81011C0F80112C0F86F110FF2B870E4F7B7FF\n" 
+"DFF8B404006802BD00000020DFF8A81691F8F110012900\n" 
+"D0704780B5FFF7BCFFFFF7A9FF0220FFF7C5FE012002BD\n" 
+"80B502210A20FFF789FD00F08FFA02280ED10120FFF73F\n" 
+"FE0220FFF72FFFFFF7B1FFFFF791FF0120FFF7ADFE0720\n" 
+"02BD00F0CCF801280ED10320FFF72CFE0220FFF71CFFFF\n" 
+"F784FFFFF77EFF0320FFF79AFE042002BD092002BDDFF8\n" 
+"7806704780B501210A20FFF759FD00F05FFA002801D011\n" 
+"2002BD0220FFF70DFE0120FFF7FDFEFFF772FFFFF75FFF\n" 
+"0220FFF77BFE022002BDDFF84006704710B500F0CAF804\n" 
+"4603210A20FFF739FD092C10D00A2C1DD10520FFF7EFFD\n" 
+"0320FFF7DFFEFFF76CFFFFF741FF0520FFF75DFE052010\n" 
+"BD0220FFF7E0FD0320FFF7D0FEFFF745FFFFF732FF0220\n" 
+"FFF74EFE022010BD0E2010BDDFF8E805704710B5002400\n" 
+"F00EF905281BD009280AD00B2822D10320FFF7C2FDFFF7\n" 
+"1DFFFFF717FF0F2419E00220FFF7B9FD0520FFF7A9FEFF\n" 
+"F71EFFFFF70BFF0220FFF727FE03240AE00420FFF7AAFD\n" 
+"0520FFF79AFEFFF734FFFFF7FCFE0624204610BDDFF888\n" 
+"05704738B5002400F094F9054604210A20FFF7D7FC032D\n" 
+"06D0042D13D0072D20D0082D20D020E00220FFF788FD04\n" 
+"20FFF778FEFFF7EDFEFFF7DAFE0220FFF7F6FD082411E0\n" 
+"0320FFF779FD0420FFF769FEFFF7D1FEFFF7CBFE0320FF\n" 
+"F7E7FD082402E00A2400E00B24204632BDDFF81C057047\n" 
+"10B5DFF8B844B4F87B11112908DB0FF2B450E4F7AFFE00\n" 
+"20A4F87B01012010BD04F58170807C00280CD094F83221\n" 
+"012A08D10FF29C50E4F79DFE0020A4F87B01012010BD00\n" 
+"2803D10020A4F8F1940390B684007B0109E0D4F81501D4\n" 
+"F80221824203D05118081AA4F87B01002010BD70B5DFF8\n" 
+"504404F2F200817A462903DB94F81421002A0AD1B4F84B\n" 
+"210A2A06DA94F814311D46062D01D0082D1AD194F81431\n" 
+"1D46062D01D0082D04D10FF23450E4F764FE07E0462905\n" 
+"DB002B03D00FF23050E4F75BFE0020A4F84B01C4F84D01\n" 
+"0A2070BDD4F84D1141F28835A94206D30020A4F84B01C4\n" 
+"F84D01092070BD002B08D10020A4F84B01D4F82A014018\n" 
+"C4F84D0118E00021C4F84D110169D4F81551A94203D194\n" 
+"F82761B3420CD0B4F8F230808A834204D28818401BA4F8\n" 
+"4B0102E00020A4F84B01002070BD000094C98800C02709\n" 
+"0010278800ACCB8800B0CB8800B4CB8800B8CB8800F8B5\n" 
+"0024D94D05F58476377B002F35D005F58170808805F21B\n" 
+"11097B002922D1012191FBF0F0EDF783FF2246DFF89C33\n" 
+"EDF796FFFBF78EF8D5F81511D5F802218A4202D3511A48\n" 
+"4307E0EDF77BFF2246DF4BEDF785FFFBF77DF8D5F86111\n" 
+"4018C5F861010AE0B5F8F210814206D2D5F86101D5F82A\n" 
+"110818C5F86101D5F81511D5F802218A4237D0062F01D0\n" 
+"082F03D105F26110B368436005F25310B5F8F23005F581\n" 
+"77BF88BB420BD20389D3185B1A03819BB20B2B06DB05F2\n" 
+"6113B7685F6001E023460381B5F85131D218511AA5F851\n" 
+"114168D5F808215118D5F81B21891A4160D5F853017168\n" 
+"081805F21B114968401AC5F8530105E0002F03D105F253\n" 
+"102146018105F261104168B068FFF716FDD5F8F8108842\n" 
+"1CD303210B20FFF770FBD5F8D701D5F8E8110818B5F851\n" 
+"1110FA81F1D5F86121307B002805D10FF26430E4F770FD\n" 
+"092404E00FF26C30E4F76AFD0B24D5F86101D5F82E1188\n" 
+"4204D304210B20FFF74DFB05242046F2BDBCCB880070B5\n" 
+"7E4C04F588700579D4F81501D4F80211814221D02A4606\n" 
+"2A01D0082A03D1D4F81021C4F86F21B4F8F220B4F80631\n" 
+"9A420DD2B4F869218918081AA4F8690180B20B2807DBD4\n" 
+"F81001C4F86F0102E00020A4F86901072605E0002D02D1\n" 
+"0020A4F869010826D4F86F11D4F81001FFF7ADFCD4F8F8\n" 
+"1088420CD3002D05D10FF2DC20E4F717FD032604E00FF2\n" 
+"E020E4F711FD0426304670BD15CB880037CB880010B400\n" 
+"20DFED5B0A9FED5A1ADFED591A9FED582A9FED570ADFED\n" 
+"562A024612E00C2313FB02110B6803EE103A70EE830A4B\n" 
+"6803EE103A31EE031A8B6803EE103A71EE831A521C4549\n" 
+"142AE9DBB3EE043AC0EE830A81EE031AC1EE831A024627\n" 
+"E00C2313FB02131C6803EE104A33EE603A1C6803EE904A\n" 
+"73EEE03A03EEF1940320BA8400232A5C6803EE104A33EE\n" 
+"413A5C6803EE904A73EEC13A03EE230A9C6803EE104A33\n" 
+"EE613A9C6803EE904A73EEE13A43EE232A521C142AD5DB\n" 
+"F3EE040AC2EEA00A9FED2E1AF3EE041AC2EE211AF4EE41\n" 
+"1AF1EE10FA26D5F3EE041A80EE210AB4EE410AF1EE10FA\n" 
+"1DD5F4EE410AF1EE10FA18D5C1F8470191F82901022806\n" 
+"D1D1F8FD00D1F82A211018C1F8FD00D1F8FD002D4A9042\n" 
+"04D30020C1F8FD0002201CE001201AE0D1F84721D1F82A\n" 
+"319A18C1F8472191F82931012B02D140F6B83301E04FF4\n" 
+"7A73934207D20246C1F8FD20C1F8472181F8012100E001\n" 
+"2010BC7047000094C9880026CB880048CB88006ACB8800\n" 
+"7BCB8800C7CA880000000000CDCCCC3D59CB8800E1CA88\n" 
+"00FDCA880040774B4180EE3600004CED40FCA9F1D24D62\n" 
+"503FA1780F05005C26058DCB880079B48400D9B4840013\n" 
+"B5840071B58400D5B584000000244000001C40C0270900\n" 
+"534C4D204D6574686F642043616C6C2045525220256400\n" 
+"00534C4D204D6574686F642043616C6C20455252203100\n" 
+"0000534C4D2353204E4D2025642F25640000534C4D204D\n" 
+"6574686F642043616C6C204552522033000000534C4D20\n" 
+"4D44202F25642F25643A25643A256400534C4D23532053\n" 
+"455420545320455200534C4D23532044552025642F2564\n" 
+"3A2564000000534C4D2053542048500A0000534C4D2042\n" 
+"52202564000000534C4D204252205354000000534C4D20\n" 
+"474F20564D2F3100534C4D20474F20564D2F3200534C4D\n" 
+"235320564D2053544F502025642F256400534C4D235320\n" 
+"564D20534C4F572025642F256400534C4D235320504D20\n" 
+"53544F50000000534C4D235320504D20534C4F57000000\n" 
+"40F244720021DFF8100BECF79CBD002803D0DFF8041BC9\n" 
+"6801607047FEB5DFF8D42D02F10C031C79DD79DE7AB542\n" 
+"18D11D7AAC4215D15D795E7AB54211D19D799E7AB5420D\n" 
+"D1157B0678AE4203D0042E07D0042D05D00D785F78BD42\n" 
+"0ED0042E0CD19D7902955B790193009492F833370A7801\n" 
+"780FF20800E4F75EFBF7BD000041435648202564202564\n" 
+"2025642025642025642025640A0010B5DFF8584DC82201\n" 
+"2104F2D940ECF74EFDC820608300202083E061C8220121\n" 
+"04F2A150ECF743FDC8206084002020846062C822012104\n" 
+"F26960ECF738FDC820608500202085E06210BDF8B40025\n" 
+"2C46C68837468DF802708D2E01D301260E70DB89032B04\n" 
+"D0042B02D0D2B2012A01D122460A700288652A2FD28288\n" 
+"C3884088984214D30978904208D301291BD001258D281D\n" 
+"D2652820D3F19403B0BD84002C461EE0012912D002258D\n" 
+"2A14D2652A17D3012415E09A4206D204258D2B0BD2652B\n" 
+"0ED301240CE00878012801D1042507E002258D2A01D302\n" 
+"2402E0652A00D301248DF800508DF801400098F2BC7047\n" 
+"DFF8941991F83020002A0AD191F83120002A06D102680A\n" 
+"6042684A608068886070479FED110ADFED110A90ED001A\n" 
+"21EE201AD1ED001A01EE801A81ED001A90ED011A21EE20\n" 
+"1AD1ED011A01EE801A81ED011A90ED021A61EE200A91ED\n" 
+"021A41EE000AC1ED020A7047CCCC4C3ECDCC4C3F2DE9F8\n" 
+"432DED0E8BB0EE40BAB0EE608AF0EE418A6BEE0BBA28EE\n" 
+"08CA68EEA8CA3BEE8C0A30EE2C0A10EE100AEDF7FCFC41\n" 
+"EC100BFEF7ECFDDFF8EC7897F88C0207EB800451EC100B\n" 
+"EDF716FDC4F8900297F88C02401C87F88C02C0B2802802\n" 
+"D1002087F88C0207F1180807F2984698F81800002840F0\n" 
+"CA8098F8190007EB800080ED0DBA98F8190007EB800080\n" 
+"ED3F8A98F8190007EB8000C0ED718AD7F8980400EE100A\n" 
+"30EE0B0A07F2984080ED000AD6ED010A30EE888A86ED01\n" 
+"8AD6ED020A70EEA88AC6ED028AD6ED030A30EEAB9A86ED\n" 
+"039AD6ED040A70EE8C9AC6ED049AD6ED050A30EEACBA86\n" 
+"ED05BA98F81900401C88F81900C0B2322840F085800120\n" 
+"88F81800002088F819009FEDB9AB10EE100AEDF789FC53\n" 
+"EC1A2BEDF7B3FBEDF7ABFC0BEE900A07F29840C0ED00BA\n" 
+"18EE100AEDF779FC53EC1A2BEDF7A3FBEDF79BFC08EE10\n" 
+"0A86ED018A18EE900AEDF76BFC53EC1A2BEDF795FBEDF7\n" 
+"8DFC08EE900AC6ED028A19EE100AEDF75DFC53EC1A2BED\n" 
+"F787FB04460D462BEEAB0A10EE100AEDF751FC02460B46\n" 
+"20462946FAF789FCEDF771FCF06019EE900AEDF744FC53\n" 
+"EC1A2BEDF76EFB04460D4628EE080A10EE100AEDF738FC\n" 
+"02460B4620462946FAF770FCEDF758FC30611BEE100AED\n" 
+"F72BFC53EC1A2BEDF755FB04460D4628EEA80A10EE100A\n" 
+"EDF71FFC02460B4620462946FAF757FCEDF73FFC7061C8\n" 
+"203883A8F80800A8F810000020ECE0D7F898040DEE100A\n" 
+"96ED019AD6ED029A98F8190007EB8000D0ED0DDA90ED3F\n" 
+"EAD0ED71EA9FED6FAB1DEE100AEDF7F6FB04460D463BEE\n" 
+"6D0A10EE100AEDF7EEFB53EC1A2BEDF718FB22462B46FE\n" 
+"F766FCEDF70CFC0BEE100A07F2984080ED00BA19EE100A\n" 
+"EDF7DAFB04460D4638EE4E0A10EE100AEDF7D2FB53EC1A\n" 
+"2BEDF7FCFA22462B46FEF74AFCEDF7F0FB08EE100A86ED\n" 
+"018A19EE900AEDF7C0FB04460D4638EEEE0A10EE100AED\n" 
+"F7B8FB53EC1A2BEDF7E2FA22462B46FEF730FCEDF7D6FB\n" 
+"08EE900AF1940340C18400C6ED028AF068EDF7A7FB8046\n" 
+"89462DEE0D0A0BEE4B0A10EE100AEDF79DFB04460D464D\n" 
+"EEEDBA1BEE900AEDF795FB53EC1A2BEDF7BFFA22462B46\n" 
+"FEF70DFC42464B46FEF709FCEDF7AFFB0BEE100A86ED03\n" 
+"BA3069EDF780FB8046894629EE090A08EE480A10EE100A\n" 
+"EDF776FB04460D460EEE4ECA1CEE100AEDF76EFB53EC1A\n" 
+"2BEDF798FA22462B46FEF7E6FB42464B46FEF7E2FBEDF7\n" 
+"88FB08EE100A86ED048A7069EDF759FB8046894629EEA9\n" 
+"0A08EEE80A10EE100AEDF74FFB04460D464EEEEECA1CEE\n" 
+"900AEDF747FB53EC1A2BEDF771FA22462B46FEF7BFFB42\n" 
+"464B46FEF7BBFBEDF761FB00EE100A86ED050A6BEE0B0A\n" 
+"48EE080A40EE000A10EE900AEDF72BFB41EC100BFEF71B\n" 
+"FC51EC100BEDF74BFBB0610120BDEC0E8BBDE8F2830000\n" 
+"7B14AE47E17A943F2DE9F041002425462646DFF8247597\n" 
+"F8310007EB800191ED0D0AD1ED3F0A91ED711AF0EE401A\n" 
+"B0EE602AF0EE412A07F2904898ED023AD8ED033A98ED04\n" 
+"4AF0EE404AB0EE605AF0EE415AB0EE406AF0EE606AB0EE\n" 
+"417A01212BE0B4EE414AF1EE10FA04D5F4EE442AF1EE10\n" 
+"FA09D4B4EE441AF1EE10FA15D5B4EE624AF1EE10FA10D5\n" 
+"641C9FEDA02AF4EE421AF1EE10FA08DB6D1C9FEDD32AF4\n" 
+"EE421AF1EE10FA00DB761CF0EE401AB0EE602AF0EE412A\n" 
+"491C322980F0A180401CC0B2322800D1002007EB800292\n" 
+"ED0D0AD2ED3F0A92ED711AF4EE404AF1EE10FA02D5F0EE\n" 
+"404A06E0B4EE460AF1EE10FA01D5B0EE406AB4EE605AF1\n" 
+"EE10FA02D5B0EE605A06E0F4EE660AF1EE10FA01D5F0EE\n" 
+"606AF4EE415AF1EE10FA02D5F0EE415A06E0B4EE471AF1\n" 
+"EE10FA01D5B0EE417A70EE617AF5EE407AF1EE10FA01D5\n" 
+"71EEC07AB4EE403AF1EE10FA04D5F4EE431AF1EE10FA09\n" 
+"D4B4EE430AF1EE10FA15D5B4EE613AF1EE10FA10D5641C\n" 
+"DFED671AF4EE617AF1EE10FA08DB6D1CDFED9A1AF4EE61\n" 
+"7AF1EE10FA00DB761C70EEC21AF5EE401AF1EE10FA01D5\n" 
+"72EE601AF4EE603AF1EE10FA04D5B4EE632AF1EE10FA09\n" 
+"D4F4EE630AF1EE10FA15D5F4EE423AF1EE10FA10D5641C\n" 
+"9FED502AF4EE421AF1EE10FA08DB6D1C9FED832AF4EE42\n" 
+"1AF1EE10FA00DB761C71EE621AF5EE401AF1EE10FA7FF5\n" 
+"33AF72EEC11A2FE734EEC60A88ED090A75EE660AC8ED0A\n" 
+"0A35EEC71A88ED0B1A20EE000A00EEA00A01EE010A10EE\n" 
+"100AEDF705FA41EC100BFEF7F5FA51EC100BEDF725FAC8\n" 
+"F83000A7F89044A8F80250A8F80460BDE8F081000010B5\n" 
+"0020B74CD4F8C01400EE101ADFEDB10AB4EE600AF1EE10\n" 
+"FA07D5F19403D0C48400B4F83617322906DA491CA4F836\n" 
+"1702E00146A4F83617B4F83617322909DB94F833070128\n" 
+"01D1FFF70FFC0120002184F83317207410BD000038B500\n" 
+"24A24D05F23370D5F8B01400EE101ADFED9C0AB4EE600A\n" 
+"F1EE10FA0ADAD5F8C01400EE101ADFED970AB4EE600AF1\n" 
+"EE10FA05DB4179142907D2491C417104E04179002901D0\n" 
+"491E41714079002806D0012495F83307002801D1FFF7D8\n" 
+"FB6C74204632BD00009A99993E10B5D6B0874CDFF8F409\n" 
+"0078002802D10020A0745DE094F83100002858D1002036\n" 
+"A904E0D2F8442241F82020401C202808DA434204EB8302\n" 
+"F4D4D2F8C42141F82020F3E72020ADF81000DFF8B40905\n" 
+"901020ADF800001420ADF80C00DFF8A4090290DFF8A409\n" 
+"0190002306AA00A80BF0D3F8202226A906A80BF0F0F826\n" 
+"A8D0ED010A012102220CE050F8223000EE103AB4EE600A\n" 
+"F1EE10FA02DBF0EE400A1146521C102AF0DBC9B20D290F\n" 
+"DB9FED5C0AF4EE400AF1EE10FA08DB0120A07494F83307\n" 
+"002804D1FFF76DFB01E00020A074A07C56B010BD000001\n" 
+"00003FDFF820140078042816D191F83307002812D1B1F8\n" 
+"3407B0F5AF7F03DA401CA1F834077047B0F5AF7F09DB01\n" 
+"2081F833070020A1F8340770470020A1F8340770470278\n" 
+"042A0ED1DFF8DC2392F83337002B08D1B2F83427B2F5AF\n" 
+"7F03D201220270002008707047DFF8BC23B2F83E370078\n" 
+"04281DD10878002803D0022814D00AD317E0180003D04C\n" 
+"2801DA5B1E11E04C280FDB4B230DE018464B2801DA5B1C\n" 
+"08E04C2806DB4B2304E0AF2B02D25B1C00E000239BB218\n" 
+"46322802DA0020087006E0962802DA0120087001E00220\n" 
+"0870A2F83E377047D34B007804281AD10878002817D193\n" 
+"F83307012813D1B3F83A0742F2283188420DDAB2F13C01\n" 
+"00D54942052903DAC01CA3F83A0706E0401CA3F83A0702\n" 
+"E00020A3F83A07B3F83A0742F22831884208DB002083F8\n" 
+"3307A3F83A070FF21C00E3F719BE70477F8CB93E010048\n" 
+"430100F0410100A040CC5088005B414356485D204C6F63\n" 
+"6B204F6666002DE9F24F96B0FFF725FBAF4C94ED021AD4\n" 
+"ED010A94ED000AFFF754FB002800F0508194F8310004EB\n" 
+"80002168416394F8310004EB80006168C0F8FC1094F831\n" 
+"0004EB8000A168C0F8C41194F83100401C84F83100C0B2\n" 
+"322802D1002084F83100FFF72CFDBDF85800FFF74EFE82\n" 
+"46FFF775FE0546FFF7A8FE06464FF00008C1460BA803F0\n" 
+"B5FE5746012F04D14FF001084FF00209B4E056EA050040\n" 
+"F09B8094F8D80400EB040B9BF8D9048DF8000000F03BF9\n" 
+"0146F1940360C884008BF8D91404F118029DF8000000F0\n" 
+"04F90BAB524604F2317104F11800FFF771FA02909BF8A1\n" 
+"058DF8000000F0BDF98BF8A10504F1200201469DF80000\n" 
+"00F0ECF80BAB524604F2327104F12000FFF759FA01909B\n" 
+"F869068DF8000000F061FB8BF8690604F1280201469DF8\n" 
+"000000F0D4F80BAB524604F2337104F12800FFF741FA00\n" 
+"9094F8D804401C84F8D804C0B2C82802D1404684F8D804\n" 
+"9DF80000002832D09DF8080004280CD19DF80410042908\n" 
+"D19DF80010042904D04FF004084FF0010921E09DF80010\n" 
+"042904D14FF004089DF8019018E0012809D19DF8042001\n" 
+"2A05D1012903D14FF00108C1460CE0012805D09DF80400\n" 
+"012801D0012902D14FF0010801E04FF0020894F8330700\n" 
+"2804D1002084F8310784F8320794F83307E07415E094F8\n" 
+"3307012803D1042084F83C070DE094F8D8040119643804\n" 
+"D591F8CD0684F83C0703E091F8050684F83C0700208DF8\n" 
+"290094F8330701280CD145EA0700304308D104208DF828\n" 
+"00B8F1040F0FD18DF829900CE0012D01D0012E04D194F8\n" 
+"3C078DF8280003E08DF828808DF829900AA8FFF72EFE0D\n" 
+"F129010AA8FFF749FEBDF858200DF129010AA8FFF78CFE\n" 
+"0DF129010AA8FFF750FEBDF8580000F0FFFD054609950B\n" 
+"A982B068462C22DDF771FC0CBC0DF129010AA800F035FC\n" 
+"09950BA982B068462C22DDF764FC0CBC0DF129010AA800\n" 
+"F012FD0DF129010AA8FFF71FF99DF8280020739DF82900\n" 
+"60732069606117B0BDE8F08FCC508800042913D8DFE801\n" 
+"F003070B120F001188491C11800AE05188491C518006E0\n" 
+"9188491C918002E0D188491CD180042813D8DFE800F003\n" 
+"070B120F001088401E108070475088401E508070479088\n" 
+"401E90807047D088401ED08070470000DFF83C0BB0F890\n" 
+"1400F29040828890ED050AD0ED060A90ED071A102A39DB\n" 
+"2F2901DB042070479FED3A0AB4EE401AF1EE10FA23DB21\n" 
+"2A01DB04207047202901DB012070479FED330AB4EE401A\n" 
+"F1EE10FA0EDB1D290ADB9FED300AF4EE400AF1EE10FA01\n" 
+"DB0120704702207047022070471B2901DB012070470220\n" 
+"70479FED270AB4EE401AF1EE10FA01DB04207047012070\n" 
+"47DFED231AF4EE610AF1EE10FA35DBDFED200AB4EE601A\n" 
+"F1EE10FA28DB1B290EDB9FED1D0AB4EE401AF1EE10FA05\n" 
+"DB222901DB012070470220704701207047172913DBDFED\n" 
+"150AB4EE601AF1EE10FA01DB02207047DFED120AB4EE60\n" 
+"0AF1EE10FA01DB022070470120704702207047092A01DB\n" 
+"02207047022070470120704724622A3ED3DF1B3FE981EF\n" 
+"3DF19403F0CB840090C2F53C37C5833D2E3AB93D170F1B\n" 
+"3F431E193F75B04E3EDFF8080AB0F8901400F290404288\n" 
+"838890ED050AD0ED060A90ED071AD0ED091A90ED0A2AD0\n" 
+"ED0B2A2029C0F208819FEDAD3AF4EE430AF1EE10FAC0F2\n" 
+"E8802F292DDB162A01DB042070479FEDA70AF4EE402AF1\n" 
+"EE10FA0EDB9FEDA40AF4EE400AF1EE10FA05DB142A01DB\n" 
+"0420704701207047012070479FED9E0AF4EE401AF1EE10\n" 
+"FA0ADB9FED9B0AF4EE400AF1EE10FA01DB042070470120\n" 
+"7047042070479FED963AF4EE431AF1EE10FA6FDBDFED93\n" 
+"2AB4EE622AF1EE10FA16DB0F2B05DB242901DB04207047\n" 
+"02207047DFED8D0AB4EE600AF1EE10FA01DB0120704708\n" 
+"2B01DB04207047012070479FED862AF4EE421AF1EE10FA\n" 
+"25DB9FED841AB4EE410AF1EE10FA0ADB9FED810AF4EE40\n" 
+"1AF1EE10FA01DB04207047012070479FED7D0AF4EE400A\n" 
+"F1EE10FA0ADB9FED7A0AF4EE401AF1EE10FA01DB012070\n" 
+"4702207047012070479FED750AF4EE400AF1EE10FA01DB\n" 
+"042070479FED710AB4EE401AF1EE10FA09DB2C2905DB07\n" 
+"2B01DB0420704701207047012070479FED6A0AF4EE401A\n" 
+"F1EE10FA01DB04207047012070479FED650AF4EE400AF1\n" 
+"EE10FA01DB042070479FED620AF4EE401AF1EE10FA01DB\n" 
+"012070479FED5E0AF4EE402AF1EE10FA01DB012070479F\n" 
+"ED5B0AF4EE400AF1EE10FA01DB042070479FED570AF4EE\n" 
+"401AF1EE10FA01DB012070479FED540AB4EE402AF1EE10\n" 
+"FA01DB042070479FED500AB4EE402AF1EE10FA01DB0120\n" 
+"7047042070479FED4C1AF4EE410AF1EE10FA0EDB2F2901\n" 
+"DB04207047DFED470AB4EE600AF1EE10FA01DB01207047\n" 
+"04207047012070479FED423AF4EE430AF1EE10FA24DB17\n" 
+"2920DBDFED3E0AB4EE601AF1EE10FA01DB02207047DFED\n" 
+"3B0AB4EE600AF1EE10FA01DB02207047192901DB012070\n" 
+"479FED350AF4EE402AF1EE10FA01DB0120704702207047\n" 
+"022070479FED300AF4EE400AF1EE10FA1CDB9FED2D0AF4\n" 
+"EE401AF1EE10FA13DB9FED2B0AB4EE402AF1EE10FA0ADB\n" 
+"9FED280AB4EE402AF1EE10FA01DB012070470420704701\n" 
+"20704704207047012070470000CA8AE13BB58C1F4012A5\n" 
+"3D3DA7B2503FD9D04D3D15053A3FDB56DD3FF33C383D71\n" 
+"79823F91DAD43EE5D54940AEDB203E42F01440910F3A3D\n" 
+"6687F83C60CB4B3F6631B13CF0C6163F50701E40CD0443\n" 
+"3C4089BF3E8770C43ED89DBE3E7864AC3B3A24353BB6A1\n" 
+"823D99BA1B3F172D503EEC531D40371A403CC5210B3FA4\n" 
+"3B983F446F9F3F4E888900D45C86003C5C8600BC598600\n" 
+"F1940380CF8400DFF89006B0F8901400F2904042888388\n" 
+"90ED050AD0ED060A90ED071AD0ED091A90ED0A2AD0ED0B\n" 
+"2A90ED0C3A232AC0F2A9802F2A28DB332A01DB04207047\n" 
+"9FEDA70AF4EE402AF1EE10FA0EDB082B0ADB9FEDA30AF4\n" 
+"EE401AF1EE10FA01DB0120704704207047012070479FED\n" 
+"9E0AF4EE401AF1EE10FA05DB0D2B01DB04207047012070\n" 
+"4704207047DFED970AF4EE601AF1EE10FA3BDBDFED950A\n" 
+"B4EE602AF1EE10FA0EDB0F2B01DB04207047DFED900AB4\n" 
+"EE600AF1EE10FA01DB0120704704207047DFED8C0AF4EE\n" 
+"601AF1EE10FA13DBDFED890AB4EE600AF1EE10FA0ADB9F\n" 
+"ED870AF4EE402AF1EE10FA01DB01207047042070470120\n" 
+"7047DFED810AB4EE600AF1EE10FA01DB04207047012070\n" 
+"479FED7D0AB4EE402AF1EE10FA2DDB9FED7A0AF4EE402A\n" 
+"F1EE10FA05DB092B01DB04207047012070479FED750AB4\n" 
+"EE402AF1EE10FA01DB042070479FED710AF4EE401AF1EE\n" 
+"10FA01DB012070472A2901DB042070479FED6C0AB4EE40\n" 
+"2AF1EE10FA01DB0420704701207047282A01DB04207047\n" 
+"01207047DFED642AF4EE620AF1EE10FA51DB9FED622AB4\n" 
+"EE423AF1EE10FA29DB172A25DBDFED5E0AB4EE601AF1EE\n" 
+"10FA13DBDFEDC20AB4EE600AF1EE10FA0ADB9FEDBF0AF4\n" 
+"EE401AF1EE10FA01DB012070470220704702207047DFED\n" 
+"BA0AB4EE600AF1EE10FA01DB0220704701207047022070\n" 
+"479FEDB40AB4EE403AF1EE10FA17DB19290ADB9FEDB10A\n" 
+"B4EE401AF1EE10FA01DB02207047012070479FEDAC0AF4\n" 
+"EE400AF1EE10FA01DB022070470120704704207047DFED\n" 
+"A72AF4EE620AF1EE10FA49DBDFEDA42AF4EE621AF1EE10\n" 
+"FA1CDB9FEDA20AF4EE400AF1EE10FA13DB9FED9F0AB4EE\n" 
+"403AF1EE10FA01DB012070479FED9C0AF4EE401AF1EE10\n" 
+"FA01DB012070470420704701207047DFED961AF4EE610A\n" 
+"F1EE10FA13DBDFED940AB4EE602AF1EE10FA01DB042070\n" 
+"47DFED900AB4EE600AF1EE10FA01DB0120704704207047\n" 
+"9FED8C0AB4EE401AF1EE10FA01DB042070470120704701\n" 
+"2070478BC71F4036054D40F9A78E3F55A85A3FDB56DD3F\n" 
+"3886403D7179823F9E48D83E79977440753E3C3D3BAEAE\n" 
+"3E350D1F4082742D3FA43C173F9BAEE73EB6A1823D878C\n" 
+"6F4099BA1B3F0CB470B5ADF5A36D0646DDF85405012840\n" 
+"F0BD80D64D95F83100002802D13078042805D005F5E860\n" 
+"4078012840F0AF8005F5E86002214170002010E095F88C\n" 
+"1241188A1101EB5262D211A1EBC21105EB8101D1F89012\n" 
+"C6AA42F82010401C8028ECDB8020ADF81000DFF88006F1\n" 
+"940310D3840005904020ADF800003820ADF80C00DFF874\n" 
+"060290DFF870060190002306AAC6A900A80AF02BFA8022\n" 
+"86A906A80AF048FA86A8D0ED010A90ED020A30EE800A90\n" 
+"ED031A30EE010A90ED041A30EE010A90ED051A30EE010A\n" 
+"9DED8C1A30EE010A9DED8D1A30EE010A9DED8E1A30EE01\n" 
+"0A9DED8F1A30EE011A05F2C44101220A7102220CE050F8\n" 
+"223000EE103AB4EE600AF1EE10FA02DBF0EE400A0A7152\n" 
+"1C0A2AF0DB80EE810A05F2C44080ED000A0C79042C01D0\n" 
+"052C17D1DFED920AB4EE600AF1EE10FA10DB10EE100AEC\n" 
+"F75EFA02460B4621460FF2DC50E2F7E7FF022085F84007\n" 
+"0020A8731DE010EE100AECF74DFA41EC100B3078042853\n" 
+"EC102B214609D10FF2C450E2F7D1FF042085F840070220\n" 
+"A87307E00FF2C850E2F7C7FF012085F84007A8730DF5A3\n" 
+"6D70BC5DF80CFB6F69453ECC9E2A408DBA663E8C504440\n" 
+"9948D13E81B6953D7313B53B63D5083FDCF93E3DCDED25\n" 
+"40D064833F21CB023CD274E63EDF57E53B7B6A753D0CB4\n" 
+"70B5ADF5A36D0646DDF85405022840F0BC80614D95F831\n" 
+"00002802D13078042805D005F5E8604078012840F0AE80\n" 
+"05F5E86002214170002010E095F88C1241188A1101EB52\n" 
+"62D211A1EBC21105EB8101D1F89012C6AA42F82010401C\n" 
+"8028ECDB8020ADF81000DFF8AC0405904020ADF8000038\n" 
+"20ADF80C00DFF8A0040290DFF89C040190002306AAC6A9\n" 
+"00A80AF041F9802286A906A80AF05EF986A8D0ED010A90\n" 
+"ED020A30EE800A90ED031A30EE010A90ED041A30EE010A\n" 
+"90ED051A30EE010A9DED8C1A30EE010A9DED8D1A30EE01\n" 
+"0A9DED8E1A30EE010A9DED8F1A30EE011A05F2C4410122\n" 
+"0A7102220CE050F8223000EE103AB4EE600AF1EE10FA02\n" 
+"DBF0EE400A0A71521C0A2AF0DB80EE810A05F2C44080ED\n" 
+"000A0C79E01E042817D2DFED1F0AB4EE600AF1EE10FA10\n" 
+"DB10EE100AECF775F902460B4621460FF24C40E2F7FEFE\n" 
+"022085F840070020A8731DE010EE100AECF764F941EC10\n" 
+"0B3078042853EC102B214609D10FF23440E2F7E8FE0420\n" 
+"85F840070220A87307E00FF23840E2F7DEFE012085F840\n" 
+"07A8730DF5A36D70BC5DF80CFB0000AF47613ECC508800\n" 
+"EC51383E2DE970432DED068B143800D54042062801DB00\n" 
+"20A3E10024D94D05F522700079002804D1D5F88C0409EE\n" 
+"900A03E005EB8000D0EDA39A95F8310005F28C469FEDD1\n" 
+"8B9FEDD29A002875D195ED3E0A80EE290A10EE100AECF7\n" 
+"11F941EC100B0AF0BFF9B0EE40AAF0EE60AA96ED100A20\n" 
+"EE090A10EE100AECF701F98046894653EC1A2B51ECF194\n" 
+"03A0D68400180BECF727F842464B46FDF775F9ECF71BF9\n" 
+"306495ED700A80EE290A10EE100AECF7EAF841EC100B0A\n" 
+"F098F9B0EE40AAF0EE60AA96ED110A20EE090A10EE100A\n" 
+"ECF7DAF88046894653EC1A2B51EC180BECF700F842464B\n" 
+"46FDF74EF9ECF7F4F8706495EDA20A80EE290A10EE100A\n" 
+"ECF7C3F841EC100B0AF071F9B0EE40AAF0EE60AA96ED12\n" 
+"0A20EE090A10EE100AECF7B3F88046894653EC1A2B51EC\n" 
+"180BEBF7D9FF42464B46FDF727F9ECF7CDF8B0647EE005\n" 
+"EB800090ED0C0A80EE290A10EE100AECF799F841EC100B\n" 
+"0AF047F9B0EE40AAF0EE60AA96ED100A20EE090A10EE10\n" 
+"0AECF789F88046894653EC1A2B51EC180BEBF7AFFF4246\n" 
+"4B46FDF7FDF8ECF7A3F8306495F8310005EB800090ED3E\n" 
+"0A80EE290A10EE100AECF76EF841EC100B0AF01CF9B0EE\n" 
+"40AAF0EE60AA96ED110A20EE090A10EE100AECF75EF880\n" 
+"46894653EC1A2B51EC180BEBF784FF42464B46FDF7D2F8\n" 
+"ECF778F8706495F8310005EB800090ED700A80EE290A10\n" 
+"EE100AECF743F841EC100B0AF0F1F8B0EE40AAF0EE60AA\n" 
+"96ED120A20EE090A10EE100AECF733F88046894653EC1A\n" 
+"2B51EC180BEBF759FF42464B46FDF7A7F8ECF74DF8B064\n" 
+"96ED100AB5EE400AF1EE10FA02D5F1EE400A01E0F0EE40\n" 
+"0A96ED121AF3EE041AF4EE610AF1EE10FA27D5D6ED110A\n" 
+"F5EE400AF1EE10FA20DD9FED4A2AF4EE420AF1EE10FA19\n" 
+"D5B5EE401AF1EE10FA14DDDFED420AB4EE601AF1EE10FA\n" 
+"0DD543484078002809D1D6ED070AB0EE0C2AF4EE420AF1\n" 
+"EE10FA00D50224B5EE401AF1EE10FA01D5B1EE411AB4EE\n" 
+"611AF1EE10FA31D5B5EE400AF1EE10FA02D5F1EE400A01\n" 
+"E0F0EE400A9FED2E1AF4EE410AF1EE10FA20DBB5EE400A\n" 
+"F1EE10FA01D5B1EE400ADFED280AB4EE600AF1EE10FA12\n" 
+"D5D6ED110AF5EE400AF1EE10FA0BDD9FED220AF4EE400A\n" 
+"F1EE10FA04D51F480078012800D101240020A873FCF7A5\n" 
+"FF95F831100F22114201D1022801D0012807D195F84107\n" 
+"002806D1012085F8410702E0002085F84107EC732046BD\n" 
+"EC068BBDE870830E49087070470C49487070470000D45D\n" 
+"8600645C86003C5A8600CC5088000000002017EB164066\n" 
+"66663F0000B4420100A0410000AA42000082424E888900\n" 
+"4143564820504320572025642025302E32660000414356\n" 
+"48205043204250562025642025302E3266000000004143\n" 
+"5648205043204250532025642025302E32660000000041\n" 
+"43564820485620572025642025302E3266000041435648\n" 
+"204856204250562025642025302E326600000000F19403\n" 
+"30DA840041435648204856204250532025642025302E32\n" 
+"66000000000FB400B5ADB001208DF80400AA208DF80200\n" 
+"3C208DF803000020ADF8B0000A208DF85A000DF15B0000\n" 
+"A95522DCF73CFC00208DF8580003208DF8590016A8EBF7\n" 
+"DBFCEFF776FD5248002181600170417001202DB05DF814\n" 
+"FB00B597B00020ADF858000DF101000A21417000218170\n" 
+"C17001208DF8000003208DF8010000A8EBF7BBFC012017\n" 
+"B000BD70B54248456C404CE068867A267000F06AF80128\n" 
+"1ED1002E05D0EFF742FDA1684018A06010E0EFF73CFDA0\n" 
+"6005F10C06727D04F10801F068EB68C018E6F770FF0120\n" 
+"B0740020A060EFF72FFD002000F047F81AE06078B04217\n" 
+"D0002E15D1A068002812D005F10C06727D04F10801F068\n" 
+"EB68C018E6F754FF0120B0740020A060EFF713FD002000\n" 
+"F02BF820786070012070BD10B51C4CEBF781FB6060E2F7\n" 
+"AFFBE06060681A49C0F8A81600F2A86019494160194981\n" 
+"600FF21101C1600FF265010161012010BD000000200F49\n" 
+"4A6892F89126002A03D00978002900D10CE070470E4908\n" 
+"7070470D480078704780B5002000F006F8012002BD0948\n" 
+"90F9000070470749087070470000EC818800EC03880049\n" 
+"DA8400A1DA8400D1DA84006E8889006D88890018B440F2\n" 
+"49120B7812FB030301241C700B7812FB03035C700B7812\n" 
+"FB030323249C700B7812FB03000022C2700878401C0870\n" 
+"11BCC8E700000FB400B5ADB001208DF80400AA208DF802\n" 
+"003C208DF803000020ADF8B0000A208DF85A000DF15B00\n" 
+"00A95522DCF74AFB00208DF8580003208DF8590016A8EB\n" 
+"F7E9FBEFF789FC01202DB05DF814FB00B597B00020ADF8\n" 
+"58000DF101000A21417000218170C17001208DF8000003\n" 
+"208DF8010000A8EBF7CEFB012017B000BD38B52848046B\n" 
+"00F03EF8012816D101208DF800000FF2E400E2F779FB04\n" 
+"F10C056A7D00A9E868E368C018E6F78CFE0120A8740020\n" 
+"00F024F8EFF74FFC012032BD80B5EBF7BEFA1849086018\n" 
+"49C0F8E81500F2E85017494160174981600FF21101C160\n" 
+"0FF25D010161012002BD00000E48006890F8D105002801\n" 
+"D1002070470BE00E49087070470C480078704780B50020\n" 
+"00F006F8012002BD094890F900007047074908707047EC\n" 
+"038800FC8188002DDC84007BDC8400ABDC840070888900\n" 
+"6F88890018B440F249120B7812FB030301241C700B7812\n" 
+"FB03035C700B7812FB03031F249C700B7812FB03000022\n" 
+"C2700878401C087011BCC9E7000053442D45000000000F\n" 
+"B480B50FF26041032008F081FD0298C1038820F19403C0\n" 
+"DD84000AF08DF80398C103882009F0BEFE05A808F017FD\n" 
+"092205A9DFF82404E6F708FE0AF00AFD00A80BF03AF89D\n" 
+"F800000AF02EFD002811D19DF800200421039808F007FD\n" 
+"0BF047F8042008F040FE08F02FFF08F028FF08F030FF00\n" 
+"2002BC5DF814FB10B5044608F0EDFC09222146DFF8D003\n" 
+"E6F7DEFD002010BDF8B506460C4640F6CA00610090FBF1\n" 
+"F5E12090FBF5F72A4621460FF2FC300BF035F8B6F5805F\n" 
+"2CD1C82C16D11E200AF0DEFD0F200AF0EAFD05200AF0F8\n" 
+"FD0F2008F0B4FD0F2008F0CDFD2D2008F0E6FDDE480021\n" 
+"08F03CFE10E068000AF0C7FD28460AF0D3FD28460AF0E1\n" 
+"FD384608F0F1FDD74880FB040108F02AFED5488560C460\n" 
+"0020F2BD10B5D24C6269002902D00243626101E0824362\n" 
+"610A4601460FF29C300AF0F3FF606944F20101084203D0\n" 
+"01200AF0F3FC05E02069002802D100200AF0ECFC207D80\n" 
+"0704D50120BDE810400AF010BD2069C00404D40020BDE8\n" 
+"10400AF008BD10BD38B5054600208DF80000B84C206900\n" 
+"2801D10AF0B9FC206945EA0001216162690FF250300AF0\n" 
+"BFFFE80408D501200AF0C2FC01200AF0EBFC01200AF00D\n" 
+"FDA80406D501200AF02FFD012102200AF026FF20690028\n" 
+"01D00AF095FC00AB0122122168200AF0ADFFD4E90001A1\n" 
+"4A002380185941C4E90001184632BD38B504469B4DE004\n" 
+"14D500200AF0E7FC686944F20101084202D100200AF08E\n" 
+"FC287D800702D400200AF0B4FC286920F480502861A004\n" 
+"14D500200AF0F7FC686944F20101084202D001200AF077\n" 
+"FC286920F400502861002102200AF0E2FE00280BD12869\n" 
+"002801D10AF051FC6A6929690FF298200AF05AFF002032\n" 
+"BD3EB4002100AA0B460C460D4638C21FE001EB4102754B\n" 
+"D418D256B0F9003012FB03F294F90130B0F9025013FB05\n" 
+"2294F90230B0F9044013FB042200AB43F82120B2F5004F\n" 
+"03DB47F6FF7243F82120491C0329DDDB002105E000AA52\n" 
+"F8212020F81120491C0329F7DB00203EBC70477EB40021\n" 
+"00AA0B460C460D4638C214E001EB41025A4BD418D25603\n" 
+"6894F901504668754303FB025294F90230846804FB0322\n" 
+"00AB43F82120491C0329E8DB002105E000AA52F8212040\n" 
+"F82120491C0329F7DB00207EBC704770B58EB004460D46\n" 
+"0020ADF816000146CDE90601ADF80C00ADF8140009A80A\n" 
+"4606C00B460EC0084604900890ADF80E000DF116000AF0\n" 
+"45FD3E4E0AF083FC009006AB05AA03A904A80BF07AFBD6\n" 
+"E90023F06836494843C11710185941C6E90001CDE90601\n" 
+"BDF80C00400411D509A80BF000FF09A8FFF7F1940350E1\n" 
+"840061FF00200290DDE90601CDE9000100231A46114609\n" 
+"A808F0D9FC002C0AD00295DDE90601CDE9000100232246\n" 
+"1946084608F0CCFCBDF80C00000411D50BA80BF0D1FE0B\n" 
+"A8FFF775FF00200290DDE90601CDE9000100231A460BA9\n" 
+"104608F0B6FCBDF80C00C00510D506F118000BF0AEFE00\n" 
+"200290DDE90601CDE9000106F1180300221146084608F0\n" 
+"A1FC0DF10E0108A80AF00EFEDDE90623BDF90E1008980A\n" 
+"F037F80498002800D08CD101200EB070BD7C27880000C2\n" 
+"EB0B40420F005827880000CA9A3B4F4E4C59204C494345\n" 
+"4E53454420544F2053414D53554E4720464F5220555345\n" 
+"205749544820444154412046524F4D2049434D32303630\n" 
+"3500000000696E765F7365745F6F6472203A2076616C75\n" 
+"65203D2025642C206F64723D256400000000696E765F73\n" 
+"65745F6578745F73656E736F72203A2025782025640000\n" 
+"5B494E564E5D20737461727420257820257800005B494E\n" 
+"564E5D2073746F70202578202578000000002848BF4042\n" 
+"704738B500200246DFF8A44403E004EB80018A63401C09\n" 
+"28F9DB1046E066A066642020606060DFF88804A060B5EE\n" 
+"000A84ED030A84ED040A84ED050A84ED060A84ED070ADF\n" 
+"F87004206205206062A062104603E004EB80018A63401C\n" 
+"0928F9DB10466067A067E06704F180057C2201462846EA\n" 
+"F749FA0C22002104F12C00EAF743FA256731BD2DE9F041\n" 
+"06460F4690461C46DFF8185485ED0B0AF0EE601AF1EE61\n" 
+"1AC5ED0C1AB1EE410A85ED0D0A0A2205F12C01286F00F0\n" 
+"04FA00F040F8022801D004280ED1A86F401CA867142198\n" 
+"FBF1F1884202DB0020E8670CE0E86F401CE86708E00828\n" 
+"01D0102804D1E86F401CE8670020A867142096FBF0F0A9\n" 
+"6F814201DB01206867142097FBF0F0E96F814201DB0220\n" 
+"6867686F012803D0022801D000206867696F080005D021\n" 
+"700021A967E967696701E000212170BDE8F0812DE9F843\n" 
+"2DED048B9FED9F8AD84C002020666066E06E461CE666A7\n" 
+"6ED74D0A2F36DAD4F870900A220021484600F0C3F98046\n" 
+"0A220121484600F0BDF904EB870106EB860292008A6301\n" 
+"2F1FDB98ED000AD0ED000A30EE600AD8ED010A90ED011A\n" 
+"70EEC10A98ED021AD0ED021A31EE611A05EB870020EE00\n" 
+"0A00EEA00A01EE010A80ED060A8A6B496B511AC163781C\n" 
+"A0660A2E01DA03202867A06E0A28C0F2DD80401EA0660A\n" 
+"221146206F0CF06DFC85ED040A0A221146206F0CF084FC\n" 
+"85ED050A0A221146206F0CF09BFC85ED060A002006E005\n" 
+"EB8001D1ED070A38EE208A401C0928F6DBF19403E0E484\n" 
+"00D5ED040AB2EE041AC0EE818AD5ED050A80EE819AF2EE\n" 
+"040AC0EE209AE06E0A2805DBC5ED018A85ED029AC5ED03\n" 
+"9A00260FE00A22C6F1090109B2206F00F049F995ED031A\n" 
+"D5ED020A95ED010A00F0ACF8761C0A2EEDDB606A216E88\n" 
+"423ADAA06B2978002908D1686601212970C5ED018A85ED\n" 
+"029AC5ED039AA16A626E91420CDA697800290BD1A86601\n" 
+"216970C5ED018A85ED029AC5ED039A01E0002169702168\n" 
+"AA6E821A914208D26A78002A05D00020A870E870012028\n" 
+"674CE06A6E801A814246D22878002843D00020A870E870\n" 
+"022028673FE0C5ED018A85ED029AC5ED039A0020287068\n" 
+"70A878002801D10120A8709FED640A28EE000AB5EE400A\n" 
+"F1EE10FA03DC9FED610A28EE000AD4ED020AB3EE041A60\n" 
+"EE810AF4EE400AF1EE10FA07D5E878002806D1A06BE866\n" 
+"0120E87001E00020E8706068A0F5FA70A16BEA6E891A88\n" 
+"4205D2E878002802D00420286701E00320286700200CE0\n" 
+"04EB8001CA6B8A63082805DA05EB80010A6ACA614A6C0A\n" 
+"64401C0928F0DB286F012806D00DD3032807D004D30428\n" 
+"06D007E0022006E0042004E0082002E0102000E00020BD\n" 
+"EC048BBDE8F28300000000D0ED001A31EEC00A3A4981ED\n" 
+"000AD0ED011A71EEE00AC1ED010AD0ED021A31EEC11A81\n" 
+"ED021AB5EE400AF1EE10FA03D5B1EE400A81ED000AF5EE\n" 
+"400AF1EE10FA03D5B1EE600A81ED010AB5EE401AF1EE10\n" 
+"FA03D5B1EE410A81ED020A91ED000A2048D0ED030AB4EE\n" 
+"600AF1EE10FA13D5D1ED010A90ED041AF4EE410AF1EE10\n" 
+"FA0AD5D1ED020A90ED051AF4EE410AF1EE10FA01D50122\n" 
+"00E00022D0ED060AB4EE600AF1EE10FA14D591ED010AD0\n" 
+"ED070AB4EE600AF1EE10FA0BD591ED020AD0ED080AB4EE\n" 
+"600AF1EE10FA02D5416E491C4166016E51180166704700\n" 
+"0000007A4400007AC4C8598800000040413333B33EC45A\n" 
+"8800385B88000388934201D30023038003885B1C03809B\n" 
+"B2934201D300220280028802EB420300EB8300001D91EC\n" 
+"030A80EC030A01207047B0F90030591A09B2002901D511\n" 
+"FA82F109B201EB410200EB8200001D70472DE9F04140F6\n" 
+"CC020021DFF8940AE9F7F2FFDFF8904A1C22002104F130\n" 
+"00E9F7EAFFDFF8845A0020A860E8602861DFF87C6A3064\n" 
+"70646861A861B064F064E064E861286268620120A86200\n" 
+"20306570654FF0FF30E862286300206863B0652065F065\n" 
+"60657066B066F0663067A065308670862C220146301DE9\n" 
+"F7BDFF42F21070B083F0830020308270820220B0820020\n" 
+"70602085DFF8187A0C2201463846E9F7F1940370E88400\n" 
+"AAFFDFF8100A7860DFF80C0A38604FF0FF303881002030\n" 
+"70A86328806880B086E065706760852066F0863087E066\n" 
+"B067E86306F184082C22311D4046E6F7A0F8C5F8408000\n" 
+"206864A8642067E8646067A067686528652866E865A865\n" 
+"0120E866A86668660020A86768672867282201462046E9\n" 
+"F770FF0020E067062070870020B087C6F88000F067E867\n" 
+"DFF8580D60660020A0660120E8800620F0870C20A08500\n" 
+"2030664022014607F10C00BDE8F041E9F751BF10B584B0\n" 
+"DFF854490C22214600A8E6F75DF8FFF74BFF0C2200A920\n" 
+"46E6F756F81FBD00002DE9F84F2DED0C8B84B000200290\n" 
+"82460446DFF8185995ED1E8AD5ED148AC5ED1E8ADFF810\n" 
+"69D6ED169AC5ED149ADFF8007997ED0D9AB8EE490ADFED\n" 
+"AC0A80EE80AA86ED16AAD7F81CB0F86AABEB0000FA30FA\n" 
+"21B0FBF1F1FA2202FB11081FFA88F8B8F14C0F02DAB86A\n" 
+"012805D12046F08630870220B88097E1D6F85490B9F104\n" 
+"0F30D3F4EE698AF1EE10FA2BD5F4EE4A9AF1EE10FA26D5\n" 
+"1AEE100AEAF758FF02460B46CDE9002318EE900AEAF750\n" 
+"FFDFF8542DDFF8583CEAF778FEDDE90023F7F79EFE0FD2\n" 
+"9FED8A0AB4EE40AAF1EE10FA08DBC6ED169AC5ED148A85\n" 
+"ED1E8A0320B880B0E1D6ED10AAC6ED11AA96ED12BA86ED\n" 
+"13BA404600EE100AB8EE400AD7ED040AC0EE800A97ED06\n" 
+"1A81EE001A20463064B064F86A21461FE0401C80B2FA28\n" 
+"00D12046DFF8002802EB8002D2ED261A71EEE01A96ED10\n" 
+"2A01EEA12A86ED102AD2F8802401EE902A71EEC11A96ED\n" 
+"122A01EEA12A86ED122A491C89B24145DCDBD6ED100AC0\n" 
+"EE80BAC6ED10BAD6ED120A80EE80CA86ED12CAD5ED1DCA\n" 
+"C5ED1CCA97ED110AD7ED120A30EE60DA85ED1DDA404600\n" 
+"F0F2FE012803D12046F086308702E1B9F1000F05D1F08E\n" 
+"052802DB04465046F086B9F1000F05D1308F052802DB04\n" 
+"195046308719FA84F0002830D19FEDBE8B3CEE0B0A10EE\n" 
+"100AEAF7B8FE53EC182BEAF7E2FD5246DFF8B03CF7F707\n" 
+"FE16D33BEEAA0A10EE100AEAF7A8FE53EC182BEAF7D2FD\n" 
+"5246DFF8943CF7F7F7FD06D3B3EE040AB4EE40DAF1EE10\n" 
+"FA07D5F08E401CF086C7F830B00620B880BBE0F08E0028\n" 
+"02D004195046F08619FA84F0002819D1B7EE000AB4EE40\n" 
+"AAF1EE10FA02D50720B880A7E09FED9E0AB4EE40AAF1EE\n" 
+"10FA05DB308F401C30870820B8809AE05046308703E030\n" 
+"8F041950463087B0EE6B1AF0EE4C0AB0EE4A0A4146A4B2\n" 
+"204600F020FF012808D1C6ED169A86ED12BAC5ED1DCAC6\n" 
+"ED10AA7DE09FED8A0AB4EE40AAF1EEF1940300EC840010\n" 
+"FA02DBDFF8E40BB0655046F086B9F1000F13D196ED160A\n" 
+"86ED170A85ED150AC7ED05BA85ED13CA87ED13DA00F0E0\n" 
+"FD52E000BF00007A4401004040B6EE008A484600F0D5FD\n" 
+"012818D196ED160AF0EE000A20EE200A86ED160A4FF001\n" 
+"0A6BEE880AC6ED100A2CEE081A86ED121AC6ED110A86ED\n" 
+"131A85ED140A641C96ED160AD5ED140A70EE200A60EE88\n" 
+"0AC6ED170A96ED101AD6ED111A31EE211A21EE081A87ED\n" 
+"051A96ED121AD6ED131A31EE211A21EE081A85ED131AB4\n" 
+"EE600AF1EE10FA02D4BAF1010F01D185ED150A3CEE8D0A\n" 
+"20EE080A87ED130A96ED170A204680B200F0A0F800F05A\n" 
+"F8C7F830B001200290F8630298012802D10120288001E0\n" 
+"B8882880A4B26C6085ED029AA5F80C80B08EE881306C28\n" 
+"61B06C6861B06DA8617869E861E86C2862F06D6862C7F8\n" 
+"2CB0002078633861B861B8621C22014605F13000E9F741\n" 
+"FD0020E867708A00281BD1D6F8800000280CD0306DB168\n" 
+"401A718FB0EB510F02DB0020B0820DE00120B0820AE0F0\n" 
+"8E318F11FA80F0032802DB0120B08201E00220B082DFF8\n" 
+"CC0868660020A866029804B0BDEC0C8BBDE8F28F38B500\n" 
+"25DFF8D8440120C4F8800000F0FBFE6060606D618F8842\n" 
+"15D3206DA060606E2062A06E6062206EE060E06EA062A0\n" 
+"6FE062208E2082608E60820120E0672846C4F880000125\n" 
+"284632BDDFF89004816801650021416501824182022181\n" 
+"82002101864186416A8166C16A81670021C0F880107047\n" 
+"0000000000000000E03F676616400100A0402DE9F14F2D\n" 
+"ED048B82B0DFF84C44656D05F10F0000F00F01E81D00F0\n" 
+"07000090002210469FEDBF8A8646DFF8308408EB810383\n" 
+"ED030ABDF81830002B15D003460FE04E1EF61A1036F710\n" 
+"06EB17773F11B6EB071603D408EB860686ED030A5B1C1B\n" 
+"B2BDF81860B342EBDB102D02D2294609B200E00F219FED\n" 
+"AB9ADFEDAA0ADFEDAA8AB0EE681A03461BE008EB8106D6\n" 
+"ED031AF5EE401AF1EE10FA10DD39EE219AF4EE610AF1EE\n" 
+"10FA01D5F0EE610AF4EE411AF1EE10FA01D5B0EE611A5B\n" 
+"1C491E09B20029E1D51BB2194603290BDB79EE600A70EE\n" 
+"C10A891E01EE101AB8EEC11A80EE819A07E0012905DB00\n" 
+"EE903AF8EEE00A89EE209AB5EE409AF1EE10FA01D0002B\n" 
+"01D1B0EE409A84ED189A9FEDCA0AB4EE409AF1EE10FA02\n" 
+"D59FEDC89A08E09FEDC70AB4EE409AF1EE10FA01DBB1EE\n" 
+"029AB0EE040AB4EE409AF1EE10FA08D494ED1D0AF0EE08\n" 
+"0AB4EE600AF1EE10FA02D50321218601E004212186266D\n" 
+"06F00707DFF8E89207EB090C218EF1940390EF84008CF8\n" 
+"8818BDF81830002B0AD0731E03F007034B4406F0070ACA\n" 
+"449AF888A883F888A808230BE0BAF1040F01D10EF1010E\n" 
+"7F1E3FB2002F00D508375B1E1BB2012B15DB3FB207EB09\n" 
+"0A9AF988A8BAF1030F01D1401C03E0BAF1040F00D1521C\n" 
+"062BE6DBBAF1030FDED1AEF1010EE0E7638E9C4F3B8592\n" 
+"B2934680B20BEB000707EBD77A4FEA6A0A82450BDBDA45\n" 
+"04DA4FF0040CA4F832C015E00FFA8EFEBEF1000F04D54F\n" 
+"F0030CA4F832C00BE0BEF1010F04DB4FF0040CA4F832C0\n" 
+"03E09CF988C8A4F832C0B4F832A0BAF1040F00D1104653\n" 
+"4509D00020A082608A00281CD1042D1AD30120A08217E0\n" 
+"052F10DB00EE100AB8EE400A00EE907AF8EEE00A80EE20\n" 
+"0AF6EE080AB4EE600AF1EE10FA02D50120A08201E00220\n" 
+"A08249B2B0EE490A404600F0D4FADFED6C0AB4EE600AF1\n" 
+"EE10FA01D5B0EE600A84ED190ABDF81800471C00EE907A\n" 
+"F8EEE09AD4ED1A0A49EE800AC4ED1A0A20EE090ADFED60\n" 
+"0A20EE200A009909EB810101F6680181ED000ABDF81810\n" 
+"002916D0002312E00099491EC91A08318A1001EB5272D2\n" 
+"10B1EBC20105D409EB810101F6680181ED000A5B1C1BB2\n" 
+"8342EADB082D02D2284600B200E007209FED011A002121\n" 
+"E0000000000000C84209EB8002D2F8682800EE902AF5EE\n" 
+"400AF1EE10FA10DD38EE208AB4EE601AF1EE10FA01D5B0\n" 
+"EE601AF4EE680AF1EE10FA01D5F0EE608A491C401E00B2\n" 
+"0028DFD509B2084603280BDB78EE410A70EEE80A801E01\n" 
+"EE100AB8EEC11A80EE818A07E0012805DB00EE901AF8EE\n" 
+"E00A88EE208AB5EE408AF1EE10FA01D0002901D1B0EE40\n" 
+"8AD4ED1B0A70EE800AB6EE001A60EE810AC4ED1C0A84ED\n" 
+"1B0A224880ED168A514649B2404600F0ADFA10EE100AEA\n" 
+"F74BFB8046894619EE100AEAF745FB0022DFF8EC39EAF7\n" 
+"6EFA02460B460020DFF8E419F7F737FC42464B46EAF763\n" 
+"FAEAF75BFB1049C866084690ED1B0AD4ED1E0A49EE800A\n" 
+"C4ED1E0AB81920657819606502B0BDEC048BBDE8F18F00\n" 
+"006766A63F6666A63F01009040CDCC4C3E00007042A866\n" 
+"8800EC018800BC0088003C018800746F88000000354300\n" 
+"00904270B52DED088B0646B0EE408A49B2032940F0C380\n" 
+"9FEDE70AB4EE408AF1EE10FA01DBB0EE408AD6ED018A9F\n" 
+"EDE30AF4EE408AF1EE10FA2ADB18EE100AEAF7E6FADFF8\n" 
+"3829DFF83839EAF70EFADFF83429DFF83439FBF75AFB04\n" 
+"460D4618EE900AEAF7D4FADFF82429DFF82439EAF7FCF9\n" 
+"DFF85024DFF81C39FBF748FB22462B46EAF7F2F9EAF7EA\n" 
+"FA08EE100A84E1DFEDCB0AF4EEF1940320F38400608AF1\n" 
+"EE10FA59DBF4EE408AF1EE10FA54D59FEDC60A38EE800A\n" 
+"DFEDC50A20EE20AA18EE900AEAF7A7FA41EC190B18EE10\n" 
+"0AEAF7A1FADFF8B028DFF8B038EAF7C9F9DFF8AC28DFF8\n" 
+"AC38FBF715FB41EC1B0B53EC192BDFF8A008DFF8A018EA\n" 
+"F7B9F9DFF8CC23DFF89838FBF705FB53EC1B2BEAF7AFF9\n" 
+"EAF7A7FA00EE100A20EE0A8A53EC192BDFF8780CDFF878\n" 
+"1CEAF7A1F9DFF8742CDFF8743CFBF7EDFA53EC1B2BEAF7\n" 
+"97F9EAF78FFA00EE100AF7EE000A70EECA0A00EE208A23\n" 
+"E118EE100AEAF75AFADFF82028DFF82038EAF782F9DFF8\n" 
+"1C28DFF81C38FBF7CEFA04460D4618EE900AEAF748FA22\n" 
+"462B46EAF772F9DFF8202CDFF8203CEAF76CF9EAF764FA\n" 
+"08EE100AFEE0D6ED018A9FED860AF4EE408AF1EE10FA41\n" 
+"DB18EE100AEAF72CFA41EC190B53EC192BDFF8F00BDFF8\n" 
+"F01BEAF750F953EC192BEAF74CF904460D4653EC192BDF\n" 
+"F8DC0BDFF8DC1BEAF742F902460B4620462946F7F74CFA\n" 
+"DFF8CC2BDFF8CC3BFBF788FA04460D4618EE900AEAF702\n" 
+"FADFF88027DFF88037EAF72AF9AB4ADFF87C37FBF777FA\n" 
+"22462B46EAF721F9EAF719FA08EE100AB3E0DFED620AF4\n" 
+"EE608AF1EE10FA70DBF4EE408AF1EE10FA6BD59FED5D0A\n" 
+"38EE800ADFED5C0A20EE20AA18EE100AEAF7D6F941EC19\n" 
+"0B53EC192BDFF8440BDFF8441BEAF7FAF853EC192BEAF7\n" 
+"F6F804460D4653EC192BDFF8300BDFF8301BEAF7ECF802\n" 
+"460B4620462946F7F7F6F9DFF8202BDFF8203BFBF732FA\n" 
+"41EC1B0B18EE900AEAF7ACF941EC190B53EC192BDFF8CC\n" 
+"06DFF8CC16EAF7D0F87E4ADFF8C836FBF71DFA53EC1B2B\n" 
+"EAF7C7F8EAF7BFF900EE100A20EE0A8A53EC192BDFF8A8\n" 
+"0ADFF8A81AEAF7B9F8DFF8A42ADFF8A43AFBF705FA53EC\n" 
+"1B2BEAF7AFF8EAF7A7F900EE100AF7EE000A70EECA0A00\n" 
+"EE208A3BE018EE100AEAF772F941EC190B53EC192BDFF8\n" 
+"7C0ADFF87C1AEAF796F853EC192BEAF792F804460D4653\n" 
+"EC192BDFF8680ADFF8681AEAF788F802460B4620462946\n" 
+"F7F792F9DFF8582ADFF8583AFBF7CEF904460D4618EE90\n" 
+"0AEAF748F922462B46EAF772F8DFF8202ADFF8203AEAF7\n" 
+"6CF8EAF764F908EE100AB6F90800022803D19FEDA20A28\n" 
+"EE008AB0EE480ABDEC088B70BD00BF9A99194000002A43\n" 
+"00001643000016C3CDCC4C3D00007A44CCCCFC3F38B52D\n" 
+"ED028BB0EE408A0C46002549B2FFF70EFEF0EE408A64B2\n" 
+"042C2FD19FED900AB4EE408AF1EE10FA18DBF1EE020AB4\n" 
+"EE608AF1EE10FA11D518EE100AEAF7FDF82C4ADFF8703C\n" 
+"FBF778F92A46DFF86C3CEAF7F19403B0F6840021F8F7F7\n" 
+"19F9C51D3EE0B4EE408AF1EE10FA01D5072537E0B1EE02\n" 
+"0AB4EE408AF1EE10FA30DB12252EE0B7EE080AB4EE408A\n" 
+"F1EE10FA18DB9FED750AB4EE408AF1EE10FA11D518EE10\n" 
+"0AEAF7CDF82A46DFF8183CFBF748F92A46DFF80C3CE9F7\n" 
+"F1FFF7F7E9F805460EE0B7EE080AB4EE408AF1EE10FA07\n" 
+"D49FED650AB4EE408AF1EE10FA00DB0625DFF8E40B00EB\n" 
+"850090ED000A28EE800ABDEC028B31BD0000CDCCCCCC70\n" 
+"B52DED028B06460C4610EE100AEAF799F841EC100B9FED\n" 
+"A78B64B2042C53EC102BDFF8AC0B0CD1DFF8A81BE9F7B8\n" 
+"FF53EC182BFBF706F9EAF7ACF800EE100A0BE0DFF8941B\n" 
+"E9F7ABFF53EC182BFBF7F9F8EAF79FF800EE100A10EE10\n" 
+"0AEAF771F8DFF8782BDFF8783BE9F799FF04460D463068\n" 
+"EAF766F822462B46E9F790FFEAF788F800EE100ABDEC02\n" 
+"8B70BD000000C06240000054400000A040F8B52DED028B\n" 
+"0027DFF83C6B96ED168AF06DEAF749F84FF06632DFF830\n" 
+"3BE9F771FF02460B4614461D4618EE100AEAF73BF82246\n" 
+"2B46F6F78FFF04D2B08E022801DB012719E09FED760AB4\n" 
+"EE408AF1EE10FA12D5DFF8F80A90ED120ADFED710AB4EE\n" 
+"600AF1EE10FA07DBDFED6F0AB4EE600AF1EE10FA00D501\n" 
+"27012F1FD196ED1D0AF0EE000AB4EE600AF1EE10FA0AD5\n" 
+"9FED660AB4EE408AF1EE10FA03DBB08E022800DB0027DF\n" 
+"F8A80A90ED190ADFEDC00AB4EE600AF1EE10FA00D50027\n" 
+"3846BDEC028BF2BD00003333733F676606409A99394070\n" 
+"B52DED048B04460026DFF8685A688E03281FDA95ED160A\n" 
+"DFED4F0AB4EE600AF1EE10FA16DB95ED100AF2EE040AB4\n" 
+"EE600AF1EE10FA0DD595ED120ADFEDA40AB4EE600AF1EE\n" 
+"10FA04D5DFF8080D04218180012695ED128A9FED9E9B95\n" 
+"ED130A38EE000A10EE100AE9F7B4FF53EC192BE9F7DEFE\n" 
+"0022DFF8883CF6F703FF21D3D5ED108A95ED110A38EE80\n" 
+"0A10EE100AE9F7A0FF53EC192BE9F7CAFE0022DFF8903C\n" 
+"F6F7EFFE0DD3B3EE040AB4EE408AF1EE10FA06D4B1EE04\n" 
+"0AF4EE408AF1EE10FA04D5DFF88C0C05218180012695ED\n" 
+"160ADFED900AB4EE600AF1EE10FA2DDBDFF8980990ED11\n" 
+"0AD0ED120A80EE200ADFED890AB4EE600AF1EE10FA1EDB\n" 
+"00EE104AB8EE400AD0ED0F0AC0EE800AB6EE001AF4EE41\n" 
+"0AF1EE10FA0FD5D0ED100A80EE800AF6EE000AB4EE600A\n" 
+"F1EE10FA04D5DFF8200C1521818001263046BDEC048B70\n" 
+"BD0000000000000C409A99993F010020420000C8420100\n" 
+"00402DE9F0410026DFF81079796D4018DFF8E88B022819\n" 
+"D397ED160ADFED690AB4EEF1940340FA8400600AF1EE10\n" 
+"FA10DB97ED130AD7ED120A80EE200ADFED630AB4EE600A\n" 
+"F1EE10FA03DB0921A8F80410012602281BD39FED5E0AD7\n" 
+"ED130A97ED121AC0EE810AF4EE400AF1EE10FA0EDBD7ED\n" 
+"110A97ED101AC0EE810AF4EE400AF1EE10FA03DB0A21A8\n" 
+"F80410012600281BD0D8F84C00E9F7F3FE4FF03332DFF8\n" 
+"583CE9F71BFE02460B4614461D46DFF87808406FE9F7E4\n" 
+"FE22462B46F6F738FE03D20B20A8F80400012697ED160A\n" 
+"DFED410AB4EE600AF1EE10FA08DA97ED170ADFED3D0AB4\n" 
+"EE600AF1EE10FA1BDB97ED120ADFED3A0AB4EE600AF1EE\n" 
+"10FA0BD497ED100ADFED360AB4EE600AF1EE10FA02D4B8\n" 
+"8E022806DB788E032803DB0C20A8F80400012698ED050A\n" 
+"DFED2C0AB4EE600AF1EE10FA08D497ED1D0AF1EE040AB4\n" 
+"EE600AF1EE10FA15D5D8F85000D8F854100818E9F7AAFD\n" 
+"0022DFF8303CE9F7BDFD0122DFF8283CF6F7FAFD03D80D\n" 
+"20A8F8040016463046BDE8F08100002042000000000000\n" 
+"E03FCDCC4C3F0020DFF890170A6D12F10A0F0FD29FED12\n" 
+"0AD1ED1A0AF4EE400AF1EE10FA06DAD1ED1E0AF4EE400A\n" 
+"F1EE10FA00DB012070470000010040403433333F010060\n" 
+"400100A0400100704101009040010080400000C8430000\n" 
+"16438096184B00004E400000F03F7958A835CD3BBE3F9E\n" 
+"5E29CB10C7E23F79E9263108AC5C3FCCCCE43F2DE9F24F\n" 
+"82B004460020009000F0B1FCDFF8E0590020E8636864A8\n" 
+"64A8806F6EDFF8686B96ED150AD4ED000A70EEC00A01EE\n" 
+"107AB8EEC11A60EE810AF5EE400AF1EE10FA17D5D5ED1C\n" 
+"0A30EE600A10EE100AE9F70FFE21F00041DFF8342BDFF8\n" 
+"A436F6F777FD02D8A86D401CA865706D286778426866AF\n" 
+"6E96ED160AD4ED010A70EEC00A01EE107AB8EEC11A60EE\n" 
+"810AF5EE400AF1EE10FA17D5D5ED1D0A30EE600A10EE10\n" 
+"0AE9F7E5FD21F00041DFF8E02ADFF85036F6F74DFD02D8\n" 
+"E86D401CE865B06D68677842A866EF6E96ED170AD4ED02\n" 
+"0A70EEC00A01EE107AB8EEC11A60EE810AF5EE400AF1EE\n" 
+"10FA17D5D5ED1E0A30EE600A10EE100AE9F7BBFD21F000\n" 
+"41DFF88C2ADFF8FC35F6F723FD02D8286E401C2866F06D\n" 
+"A8677842E866DFF8F4753878052805D10120A862002038\n" 
+"7028806880686BBDF8081010FA81F06863D5F81C80E86A\n" 
+"804501D10120A862D5F8209009EB49004FEA800A20684A\n" 
+"F806000AEB060B6068CBF80400A068CBF80800BDF80810\n" 
+"204600F05BF9B8619BED020ADBED010A5AF8060001EE10\n" 
+"0A21EE011A00EEA01A00EE001A11EE100AE9F76AFD41EC\n" 
+"100BFAF75AFE51EC100BF19403D0FD8400E9F78AFD00EE\n" 
+"100AD5F824A0BAF1000F10D1002004E006EB810181ED18\n" 
+"0A401C80B201460729F6DBF1EE0C0A60EE200AC5ED020A\n" 
+"06EB8900D0ED180A70EE600A95ED021A70EE810AC5ED02\n" 
+"0A80ED180A06EB880BCBED260A95ED040A30EE200A85ED\n" 
+"040A90ED1F0A30EEC00A0BF2804181ED000AC0ED1F0A95\n" 
+"ED060ADBF8800400EE900A30EE200A85ED060A06F15400\n" 
+"94EC030A80EC030AE86F012806D10120A8620020387028\n" 
+"80688072E0A86B401CA8633978012901D0032937D10228\n" 
+"2AD2798E042927DA786D002862D195ED030ADFED630AB4\n" 
+"EE600AF1EE10FA08D5DBF8800401EE100AB4EE601AF1EE\n" 
+"10FA0FDAF9EE0C0AB4EE600AF1EE10FA49DBDBF8800400\n" 
+"EE100AB4EE600AF1EE10FA40D50120A8623DE0272808D3\n" 
+"2988002903D010FA81F04B2801D30120A862DBF8800400\n" 
+"EE900A95ED030A00F01CFA3878012827D12888002824D0\n" 
+"6988002921D0032211FA80F03D2801DB0120A862788E04\n" 
+"2800DB0222B88E824201D20120A862286D6865A86DE96D\n" 
+"0818296E0818286500202866E865A865FEF7F7FC009000\n" 
+"206880B886286BA8EB000000F1FA04E888012808D1FA20\n" 
+"B4FBF0F0FA2101FB104096280CD107E0FA20B4FBF0F0FA\n" 
+"2101FB1040642803D100F042FB0120E863FA20B4FBF0F0\n" 
+"FA2101FB1046642E03D100F074FB0120E863788A002808\n" 
+"D0322E0BD04B2E0CD10020B8820120E86307E0388A0028\n" 
+"04D07D2E02D10120B882E863DBF88004E86008F10100E8\n" 
+"61FA2801D10020E86109F101002862072801D100202862\n" 
+"0AF101006862E86B002807D007F184042C22391D2046E4\n" 
+"F7ECFC2C640098BDE8FE8F613255302AA9633FA4703D0A\n" 
+"D7A3E03F0100E040B8ED221C1818783FCA54C1A8A44ED8\n" 
+"3FDF4F8D976E12FD3FDE718A8EE4720A4010B4DFF85837\n" 
+"90ED000AD3ED150A30EE600AD0ED010A93ED161A70EEC1\n" 
+"0A90ED021AD3ED171A31EE611AB5EE400AF1EE10FA02DD\n" 
+"F0EE401A01E0F1EE401AF5EE400AF1EE10FA02DDB0EE60\n" 
+"2A01E0B1EE602AB5EE401AF1EE10FA02DDF0EE412A01E0\n" 
+"F1EE412A71EE821A71EEA21AB5EE400AF1EE10FA02DDB0\n" 
+"EE402A01E0B1EE402A9A4AD2ED0F2A32EE822A82ED0F2A\n" 
+"F5EE400AF1EE10FA02DDB0EE602A01E0B1EE602AD2ED10\n" 
+"2A32EE822A82ED102AB5EE401AF1EE10FA02DDB0EE412A\n" 
+"01E0B1EE412AD2ED112A32EE822A82ED112A92ED122A32\n" 
+"EE212A82ED122A92ED0C2AD0ED002A32EE222A82ED0C2A\n" 
+"92ED0D2AD0ED012A32EE222A82ED0D2A92ED0E2AD0ED02\n" 
+"2A32EE222A82ED0E2AF1940360018500DFF8B404406A00\n" 
+"2812D1002006E003EB840404F69004C4ED001A401C80B2\n" 
+"04460F2CF4DBB2EE0E2A21EE822A82ED172A508D03EB80\n" 
+"03D3F8904802EE104A31EEC22AD2ED172A32EE222A82ED\n" 
+"172A03F69003C3ED001AF2EE0E1AC2EE211A5E4BC3ED1D\n" 
+"1ADFF8F03593ED012A22EE202AD3ED002A62EE802AF5EE\n" 
+"402AF1EE10FA0DD4B5EE402AF1EE10FA08D493ED023A23\n" 
+"EE013AB5EE403AF1EE10FA5AD593ED023A23EE013AF4EE\n" 
+"422AF1EE10FA0AD5F4EE432AF1EE10FA02D5F0EE623A0C\n" 
+"E0F0EE433A09E0B4EE432AF1EE10FA02D5F0EE423A01E0\n" 
+"F0EE433AF5EE403AF1EE10FAF4EE422A15DDF1EE10FA0A\n" 
+"D5F4EE432AF1EE10FA02D5B0EE622A21E0B0EE432A1EE0\n" 
+"B4EE432AF1EE10FA19D4B0EE432A16E0F1EE10FA0AD5F4\n" 
+"EE432AF1EE10FA02D5B0EE622A09E0B0EE432A06E0B4EE\n" 
+"432AF1EE10FA01D4B0EE432AB1EE422AD2ED1F2AF4EE42\n" 
+"2AF1EE10FA01D582ED1F2A83ED000AC3ED010A83ED021A\n" 
+"92ED190AF4EE401AF1EE10FA01D5C2ED191A92ED1A0AB4\n" 
+"EE610AF1EE10FA01D5C2ED1A1A9FEDC20AF4EE401AF1EE\n" 
+"10FA04D5136E13FA81F1116601E000211166401C508580\n" 
+"B20F2801D100205085106E10BC7047CCCC00C000001440\n" 
+"0000F8BF6C0288009A9999999999C93F9999B93F7B14AE\n" 
+"47E17A743F3C0188006666E63FEC01880070B52DED048B\n" 
+"B0EE408AF0EE608A9FEDAE9ADFF85464708E042801DBB0\n" 
+"EE009AB5EE408AF1EE10FA07DBF5EE408AF1EE10FA02D5\n" 
+"B08E401CB0863078002807D0022800F08B8047D3032800\n" 
+"F0B480FCE019EE100AE9F77EFA41EC100B53EC102B0020\n" 
+"DFF81414FAF7F5FA41EC190B18EE100AE9F76FFA02460B\n" 
+"4651EC190BF6F7D9F912D818EE900AE9F764FA02460B46\n" 
+"51EC190BF6F7B6F907D28E48816B1029C0F0C180002181\n" 
+"63BDE08A48C169DFF8BC0300EB8101D1F8800400EE100A\n" 
+"DFF8BC13D1ED010AB4EE600AF1EE10FA40F1BC8081ED01\n" 
+"0AB8E07E48C169DFF88C2302EB8101D1F8801400EE101A\n" 
+"DFF88C13D1ED000AF4EE400AF1EE10FA01D581ED000AB7\n" 
+"EE000AB4EE408AF1EE10FAC0F29C80F4EE408AF1EE10FA\n" 
+"40F19680816B01800021816319EE100AE9F713FA02460B\n" 
+"460020DFF84813F6F74AFA02460B4614461D4618EE900A\n" 
+"E9F704FA22462B46F6F758F923D30220307076E019EE10\n" 
+"0AE9F7F8F941EC100B0020DFF8141353EC102BF6F72DFA\n" 
+"41EC190B18EE100AE9F7E9F953EC192BF6F755F95ED818\n" 
+"EE900AE9F7E0F953EC192BF6F734F955D2032030704C48\n" 
+"C069B14901EB8000F19403F0048500D0F88004B2494860\n" 
+"49E04748C169AC4A02EB8101D1F8801400EE101AAC49D1\n" 
+"ED010AB4EE600AF1EE10FA01D581ED010A9FED930AB4EE\n" 
+"408AF1EE10FA2FD5F4EE408AF1EE10FA2ADB816B418000\n" 
+"21816318EE900AE9F7A8F902460B4614461D4619EE100A\n" 
+"E9F7A0F90022984BFAF71CFA22462B46F6F7F0F80FD201\n" 
+"203070944929480A6842644A688264C0698C4A02EB8000\n" 
+"D0F88004086001E0002030703078BDEC048B70BD854800\n" 
+"787047002804D03C49096C2C22D9F7B3BE70477F48416D\n" 
+"002904D1C18E008F10FA81F0704700207047000000003E\n" 
+"4080B513480021416200F062F800F022F8744805210170\n" 
+"022181822C22011D8430BDE80840E4F700BAEC51383E00\n" 
+"002440002806D0724942684A6002680A60008908817047\n" 
+"000000006E48006E70470000BC00880010B5634C608E21\n" 
+"8E002904D0002802D00020A08206E0084302D00120A082\n" 
+"01E00220A082002060652067A062E06020822086E08620\n" 
+"87E0652066402201465D48E8F7B3F8D4F88000012801D1\n" 
+"FEF7BEFBA08F002808D0E18F814201D2608700E0618700\n" 
+"20A087E067E06F012801D1E08F60870020E06710BDBC00\n" 
+"880010B5444C608E218E002904D0002802D00020A08206\n" 
+"E0084302D00120A08201E00220A0820020A062E0600822\n" 
+"01464348E8F77DF8002060866082E060E0862087D4F880\n" 
+"00012801D1FEF782FBE06F012801D1E08F608710BD80B5\n" 
+"39480121C167FFF7CEFFFFF78EFFBDE801402CE0344800\n" 
+"21C167704700003333D33F2548418F406D081A00D50020\n" 
+"704738B5044629482049012C04D10622CA870C22828503\n" 
+"E00722CA870F228285254DEA88A24209D04A8F082A03DA\n" 
+"C88F00F010F802E0808D00F00CF8EC8031BD1A48808D11\n" 
+"49498F814200D202E07047FEFF7FBF0D494A6D4B8F9A42\n" 
+"03D248870020C86770478887704780B5002801D1002002\n" 
+"BD542201461048E4F729F9012002BD00000000E03F0080\n" 
+"4B403C018800A86688009B999999C06F880000001C40CC\n" 
+"6F880000001CC0746F8800EC018800806F8800306F8800\n" 
+"BC0088006C02880038B5DFF82C4B0020A065E065206660\n" 
+"66A066A081DFF8A05B4FF42072014605F14000E7F7E0FF\n" 
+"4FF42072002105F53070E7F7D9FF9022002105F5B860E7\n" 
+"F7D3FF402200212846E7F7CEFF40220021DFF86C0BE7F7\n" 
+"C8FF40220021DFF8640BE7F7C2FF40220021DFF85C0BE7\n" 
+"F7BCFF4022002105F5A860E7F7B6FF4022002105F5B060\n" 
+"E7F7B0FF4022002104F11800E7F7AAFF40220021DFF8C0\n" 
+"0BE7F7A4FF4022F19403800885000021DFF8B80BE7F79E\n" 
+"FF05220021DFF8B00BE7F798FF05220021DFF8D40BE7F7\n" 
+"92FF052200212046E7F78DFFDFF8CC0B002101810846E0\n" 
+"666067A067E0672061A0602067C4F880000220A0730846\n" 
+"E07331BDDFF8A80BDFF8A81B0161DFF8501C4161816132\n" 
+"2141814FF4967181814B21C1814FF496710FF20800DFF7\n" 
+"5DBD00004C5420496E697453524120256400000080B50F\n" 
+"F21400DFF74FFDDFF8F4090021017301BD000000004C54\n" 
+"2053746F70007047DFF8481B4FF47A725043086101460F\n" 
+"F20400DFF738BD4C5420535044202564000000DFF8242B\n" 
+"4FF47A7148435061014691610FF20400DFF726BD4C5420\n" 
+"57504420256400000010B5DFF8004B6081E8F7AAFE0022\n" 
+"DFF83C3CE8F7B3FEF5F795FFE08161890FF20C00BDE810\n" 
+"40DFF70BBD00004C5420535220256400000000DFF8C81A\n" 
+"888101460FF20400DFF7FCBC4C54205341522053544120\n" 
+"25640000000EB410B587B0DFF8A44ABDF86E0000281CD1\n" 
+"DFF8C40CD0E90023CDE90223D4E90001CDE90001DDE902\n" 
+"2300F09BFD21694FF47A724243914206D201460FF22800\n" 
+"DFF7D2FC01200AE0002008E004A8DFF770FF204604A905\n" 
+"22D9F762FC002007B010BC5DF810FB00004C5420535420\n" 
+"436B20256400DFF8C8080121C165816500214166816670\n" 
+"47DFF8B8080121016681657047DFF8AC08806D7047DFF8\n" 
+"A408002181650FF20800DFF79FBC00004C542052455345\n" 
+"545F434D4452440000DFF880080021C1650FF20400DFF7\n" 
+"8EBC4C542052455345545F504F5352455100DFF8600800\n" 
+"2101660FF20400DFF77EBC4C542052455345545F504F49\n" 
+"41434B00DFF84008012141660021816601727047DFF830\n" 
+"080121816670472DE9F04106460F469046DFF8A848DFF8\n" 
+"A058204629464022D9F707FC85ED000B85ED021B85ED04\n" 
+"2B85F8296085F82A7085F82B80D4E90423002001460AF0\n" 
+"8FFE10D1D4E900230AF08AFE0BD1D4E902230AF085FE06\n" 
+"D1204629464022BDE8F041D9F7E3BBBDE8F08110B5DFF8\n" 
+"BC47606E01280AD1DFF84408DFF838184022D9F7D4FB00\n" 
+"206066012010BD002010BD10B5DFF89847606E01280AD1\n" 
+"DFF82008DFF810184022D9F7C1FB00206066012010BD00\n" 
+"20606610BD0020DFF870178A6E012A01D1886601207047\n" 
+"0FB400B59DB0DDE92E23F5F7ACFECDE90C01DDE92001DD\n" 
+"E93023F5F7A4FECDE90E010CA984B068464022D9F79AFB\n" 
+"0FBC00F037FC53EC102B0020DFF8541CE8F782FD41EC10\n" 
+"0B1DB05DF814FB00000FB470B52DED048B9EB0DFF80857\n" 
+"687A002801D1F19403100C8500002075E00A2801DB0A26\n" 
+"00E0AE7A9FED678B002422E0DFF8701701EB801000F530\n" 
+"710CA84022D9F76BFB26A984B068464022D9F765FB0FBC\n" 
+"FFF7B1FFB0EE409AF0EE609A51EC190B53EC182BF5F774\n" 
+"FD03D2B0EE498AF0EE698A641CE4B22046B042D8DBDFF8\n" 
+"04088089E8F72DFD02460B4651EC180BF5F75FFD30D226\n" 
+"A982B068464022D9F73CFB0CBC0EA800F0FCFDDFF8F446\n" 
+"94F969058DF8700004F2695090F901108DF8711090F902\n" 
+"008DF87200B4F86C05ADF87300DDE90E23DDE91C0100F0\n" 
+"30FC00F04DF8C4F87805402204F5A86105F11800E3F783\n" 
+"FE002008E053EC182B0FF21800DFF75FFB0120C5F88000\n" 
+"1EB0BDEC048B70BC5DF814FB4C54205341204F55542025\n" 
+"66000000001FB5DFF8784694F969058DF8000004F26950\n" 
+"90F901108DF8011090F902008DF80200B4F86C05ADF803\n" 
+"00DFF86009D0E90023CDE90223DDE9000100F0EDFB00F0\n" 
+"0AF8C4F87805402204F5A861DFF8D80CE3F740FE1FBD70\n" 
+"B5DFF8CC4ADFF89455E97B04FB01062A6D96420DD2901B\n" 
+"DFF8BC1C884208D331460FF21000DFF70EFBA619E87B40\n" 
+"1CE873304670BD4C5420646966666F6C64202564202564\n" 
+"0000000000000000006AF8400FB42DE9F8432DED088B86\n" 
+"B0DFF89C46DFF8D098D9E90001CDE90401D4E90001CDE9\n" 
+"0201DDE9042300F0A2FBDFF81C55A97ADFF8A06506EB81\n" 
+"129DED160B82EDB00B02F530739DED188B83ED028B9DED\n" 
+"1A9B83ED049B237882F8E93202F2E92367785F70A7789F\n" 
+"7000B2C2F8F802481CA872C0B20A2801D10020A872687A\n" 
+"471C6F72FFB2781EE8F73BFC41EC1A0B06F2405853EC1A\n" 
+"2BD8E90201E8F749FC53EC182BF9F797FD41EC180B53EC\n" 
+"1A2BD8E90401E8F73DFC53EC192BF9F78BFD41EC190B38\n" 
+"46E8F726FC41EC1B0B53EC1A2B06F5A86041680068E8F7\n" 
+"2AFCDDE91623F9F778FD53EC1B2BF5F7F2FD06F5A862C2\n" 
+"E9000151EC180B53EC1B2BF5F7E8FDC8E9020151EC190B\n" 
+"53EC1B2BF5F7E0FDC8E9040106F26950012F0AD1217886\n" 
+"F8691561784170A1788170B4F80310A6F86C1596F96915\n" 
+"8DF8001090F901108DF8011090F902008DF80200B6F86C\n" 
+"05ADF80300D9E90001CDE90201DDE90223DDE9000100F0\n" 
+"05FBFFF722FFC6F878054022414605F11800E3F759FD68\n" 
+"7A012806D10120A8730FF2C830DFF734FA05E00320A873\n" 
+"0FF2D010DFF72DFA06B0BDEC088BBDE8F1035DF814FB0F\n" 
+"B42DE9F0472DED0A8B86B0DFF82CA7DAE90001CDE90401\n" 
+"DFF8B804D0E90023CDE90223DDE90423DDE9020100F0CC\n" 
+"FA8046DC4CF19403A00F8500A07A461E36B2002E01D50A\n" 
+"3636B2607AE8F792FB41EC180BDFF8DC5305EB861653EC\n" 
+"182B05F5A86041680068E8F792FBD6E9B023F5F79EFC41\n" 
+"EC190B06F5307705F2405953EC182BD9E90201E8F782FB\n" 
+"D7E90223F5F78EFC41EC1A0B53EC182BD9E90401E8F776\n" 
+"FBD7E90423F5F782FC41EC1B0B9FEDE4CBD6E9B023DDE9\n" 
+"1801F9F7BAFC53EC1C2BE8F764FBC6E9B001D7E90223DD\n" 
+"E91A01F9F7AEFC53EC1C2BE8F758FBC7E90201D7E90423\n" 
+"DDE91C01F9F7A2FC53EC1C2BE8F74CFBC7E90401C7F838\n" 
+"8053EC1A2BD7E90201F9F794FC41EC1A0B51EC1B0BD7E9\n" 
+"0423F9F78CFC41EC1B0B51EC190BD6E9B023F9F784FC53\n" 
+"EC182BF5F7FEFC05F5A862C2E9000151EC1A0B53EC182B\n" 
+"F5F7F4FCC9E9020151EC1B0B53EC182BF5F7ECFCC9E904\n" 
+"0195F969058DF8000005F2695090F901108DF8011090F9\n" 
+"02008DF80200B5F86C05ADF80300DAE90001CDE90201DD\n" 
+"E90223DDE9000100F01EFAFFF73BFEC5F8780540224946\n" 
+"04F11800E3F772FC0320A0730FF21400DFF750F906B0BD\n" 
+"EC0A8BBDE8F0075DF814FB00004C542041522053540000\n" 
+"00000FB42DE9F8432DED0A8B86B09FED998BDDE91823DD\n" 
+"E92801F9F724FC53EC182BE8F7CEFA41EC190BDDE91A23\n" 
+"DDE92A01F9F718FC53EC182BE8F7C2FA41EC1A0BDDE91C\n" 
+"23DDE92C01F9F70CFC53EC182BE8F7B6FA41EC180BAC4C\n" 
+"DFF81895D9E90001CDE90401D4E90001CDE90201DDE904\n" 
+"2300F0C5F9594DA97ADFF8106B06EB811282EDB09B02F5\n" 
+"307383ED02AB83ED048B237882F8E93202F2E92367785F\n" 
+"70A7789F70B4F80330A2F8EC32C2F8F802481CA872C0B2\n" 
+"0A2801D10020A872687A471C6F72FFB2781EE8F762FA41\n" 
+"EC1B0B06F2405853EC1B2BD8E90201E8F770FA53EC1A2B\n" 
+"F9F7BEFB41EC1A0B53EC1B2BD8E90401E8F764FA53EC18\n" 
+"2BF9F7B2FB41EC180B3846E8F74DFA41EC1C0B53EC1B2B\n" 
+"06F5A86041680068E8F751FA53EC192BF9F79FFB53EC1C\n" 
+"2BF5F719FC06F5A862C2E9000151EC1A0B53EC1C2BF5F7\n" 
+"0FFCC8E9020151EC180B53EC1C2BF5F707FCC8E9040106\n" 
+"F26950012F0AD1217886F8691561784170A1788170B4F8\n" 
+"0310A6F86C1596F969158DF8001090F901108DF8011090\n" 
+"F902008DF80200B6F86C05ADF80300D9E90001CDE90201\n" 
+"DDE90223DDE9000100F02CF9FFF749FDC6F87805402241\n" 
+"4605F11800E3F780FB687A012805D10120A8730FF21800\n" 
+"DFF75BF806B0BDEC0A8BBDE8F1035DF814FBA03088004C\n" 
+"5420415220494E000000000FB418B4DFF89C09C16E01EB\n" 
+"C1021A4BF194033013850003EBC20202F5B8639DED020B\n" 
+"83ED000B9DED040B83ED020B04AC94ED020B83ED040B9D\n" 
+"F8313082F8E93502F2E9530DF1310464785C700DF13104\n" 
+"A4789C70BDF83430A2F8EC3502F2EC520DABDB6853613E\n" 
+"4B5C8914839B895383002901D10121C16611BC04B07047\n" 
+"3031880080378800C037880000388800000000000000E0\n" 
+"3F0FB410B5DFF80C09C16E01EBC102DFF8003903EBC202\n" 
+"02F5B8639DED020B83ED000B9DED040B83ED020B04AC94\n" 
+"ED020B83ED040B9DF8313082F8E93502F2E9530DF13104\n" 
+"64785C700DF13104A4789C70BDF83430A2F8EC3502F2EC\n" 
+"520DABDB6853611A4B5C8914839B895383022901D2491C\n" 
+"C166022181730FF21800DEF7C4FF10BC5DF814FB000040\n" 
+"3888008038880064C988004C54204152204F5500000000\n" 
+"0FB480B59DED041B9DED020BE9F798FE01BC5DF814FBDF\n" 
+"F85C08C06D704700006CC98800DFF84C08006E704774C9\n" 
+"8800E093040010B5DFF838484022002104F5A860E7F798\n" 
+"F94022002104F5B060E7F792F9DFF820484022002104F1\n" 
+"1800E7F78AF940220021DFF81008E7F784F900206072A0\n" 
+"722061DFF80408002101810846E0730FF20C00BDE81040\n" 
+"DEF76DBF00004C542052455345545F41535000000000DF\n" 
+"F8D007C06E704780B5DFF8C41701F5B06001F5A8614022\n" 
+"D8F702FFDFF8B4070021C16601BDC9B201EBC102DFF8A0\n" 
+"1701EBC20101F5B8614822D8F7F1BE000060E316003FB5\n" 
+"81B04FF47A704EF66022DFF88C379DF904109DF9054054\n" 
+"4303FB01419DF9064014FB0011BDF9074001FA84F19DF9\n" 
+"0C409DF90D506A4303FB04229DF90E3013FB0020BDF90F\n" 
+"2000FA82F0441A42F20F721319934205D200240FF23800\n" 
+"DEF711FF07E0DFF83827944203DADFF834271018441A20\n" 
+"46E8F78BF8DFF82C27DFF82C37E8F79DF805B0BDE83040\n" 
+"F5F77CB90000F83F41542D4C5420646966662054696D65\n" 
+"2052657365740000002DE9F64383B08146BDF90F404EF6\n" 
+"6025DFF8DC669DF90C009DF90D10694306FB00109DF90E\n" 
+"104FF47A7211FB020000FA84F10C98412808D15F18DFF8\n" 
+"C80687420BD3DFF8C406C71907E0994204D2DFF8A80640\n" 
+"18C71A00E0CF1A3846E8F74CF80022DFF8A836F5F725FA\n" 
+"F5F737F980465FFA88F806FB18763046E8F73DF80022DF\n" 
+"F88C36F5F716FAF5F728F9C0B28DF8008001468DF80110\n" 
+"05FB1060E8F72CF8DFF85826DFF85836E8F734F8F5F716\n" 
+"F98DF80200ADF80340484600A90522D8F727FE05B0BDE8\n" 
+"F0835CC9880010B40020DFF81016D1F88020012A04D101\n" 
+"200022F19403C0168500C1F880201AE0DFF8B41DD1F878\n" 
+"25D1F8B8359A4211D191F8692591F8A9359A420BD101F2\n" 
+"A95201F269514B785478A34203D189789278914200D001\n" 
+"2010BC704700B58DB0DFF8BC05407A00280BD0DFF8701D\n" 
+"84B068464022D8F7FAFD0FBCFFF7FFFD012004E00FF20C\n" 
+"00DEF745FE00200DB000BD4C54204E6F20535000000000\n" 
+"30B583B0DFF87C45217B61732073401E052874D8DFE800\n" 
+"F0031D2335445F00A8DFF7CFF8DFF81C5D284600A90522\n" 
+"D8F7BFFDA86968610020E0720FF2CC00DEF71BFE6969DF\n" 
+"F8000D03B0BDE83040DEF713BE0FF2C000BDE83E40DEF7\n" 
+"0DBE00A8DFF7AFF8DFF8DC5C284600A90522D8F79FFD60\n" 
+"6FE8610FF2A800BDE83E40DEF7FBBD00A8DFF79DF8DFF8\n" 
+"B80C00A90522D8F78EFD0FF29800BDE83E40DEF7ECBD00\n" 
+"202061DFF89C5C288140220146DFF8D804E6F7E8FF00A8\n" 
+"DFF783F8284600A90522D8F775FD606FE8610FF27400BD\n" 
+"E83E40DEF7D1BD00A8DFF773F8DFF8645C284600A90522\n" 
+"D8F763FD606FE861002020720FF25800BDE83E40DEF7BD\n" 
+"BD37BD00408F40805101004C542D434B5F535400000000\n" 
+"4C542D4745543153540000004C542D434B5F55535F4D4F\n" 
+"56000000004C542D434B5F474554324E44000000004C54\n" 
+"2D434B5F554C454156004C542D5041555345000000000C\n" 
+"B400B583B09DF939108DF800100DF1390191F901108DF8\n" 
+"01100DF1390191F902108DF802100021ADF8031000A905\n" 
+"22D8F712FD0EBC5DF80CFB00002DE9F84F2DED0A8B9CB0\n" 
+"82469FED568BDFF8DC83B8F81000B8F81290814502D25F\n" 
+"FA89F901E0C0B28146DFF8CC03B0F90800461E00D50A36\n" 
+"DFF8B0B30BEB861797ED109B97ED12AB97ED14BB01243C\n" 
+"E0301A00D50A300BEB801505F140010CA84022D8F7EBFC\n" 
+"07F1400184B068464022D8F7E4FC0FBCFFF730F9B0EE40\n" 
+"CAF0EE60CA51EC180B53EC1C2BF4F7F3FE03D2B0EE4C8A\n" 
+"F0EE6C8A53EC1B2BD5E91401F9F710F841EC1B0B53EC19\n" 
+"2BD5E91001F9F708F841EC190B51EC1A0BD5E91223F9F7\n" 
+"00F841EC1A0B641CE4B220464845BEDB4846E7F796FE41\n" 
+"EC1C0B51EC1B0B53EC1C2BF5F76CF8CAE9040151EC190B\n" 
+"53EC1C2BF5F764F8CAE9000151EC1A0B53EC1C2BF5F75C\n" 
+"F8CAE90201B8F81000B8F8121088421ED207F140010CA8\n" 
+"4022D8F78CFCDFF8901A84B068464022D8F785FC0FBCFF\n" 
+"F7D1F8B0EE40CAF0EE60CA51EC180B53EC1C2BF4F794FE\n" 
+"03D2B0EE4C8AF0EE6C8AB0EE480AF0EE680A1CB0BDEC0A\n" 
+"8BBDE8F18F0000000000000000B8308800714301000FB4\n" 
+"2DE9F19403501A8500F8432DED068BA2B030A982B06846\n" 
+"4022D8F756FC0CBC0EA8FFF716FFDFF8201A82B0684640\n" 
+"22D8F74BFC0CBC10A8FFF70BFFDDE91023DDE90E01FFF7\n" 
+"53FD1E28C0F20A818D4EB6F90840DFF8249209EB841040\n" 
+"3030A94022D8F732FC601C308100B20A2801D100203081\n" 
+"824D288A0A2801DA401C2882688A401C6882288A0A2801\n" 
+"DA002700E0377A7B4CD4E900230020014609F0AFFE2FD1\n" 
+"D4E9022309F0AAFE2AD1D4E9042309F0A5FE25D109EB87\n" 
+"16DFF8908996F9690088F8000006F2690090F9011088F8\n" 
+"011090F9020088F80200B6F86C00A8F80300DFF8600906\n" 
+"F140014022D8F7EDFB204606F140014022D8F7E7FB0020\n" 
+"A063AFE012A8FFF7C3FEB0EE408AF0EE608ADFF83C89B0\n" 
+"89E7F7BCFD53EC182BF4F7F0FD28D209EB871696F96900\n" 
+"88F8000006F2690090F9011088F8011090F9020088F802\n" 
+"00B6F86C00A8F80300DFF8F80806F140014022D8F7B8FB\n" 
+"204606F140014022D8F7B2FB0020A06368820FF61010DE\n" 
+"F7FFFB75E0D8E90001CDE90001DDE90E23FFF7B4FC0746\n" 
+"39460FF60010DEF7F0FB70694FF47A717943884261D26E\n" 
+"8A304604285DDBA16B00290DD19DED120B84ED000B9DED\n" 
+"140B84ED020B9DED160B84ED040BA7633AE0401EE7F758\n" 
+"FD41EC190B3046E7F75DFD41EC1A0B51EC190BD4E90023\n" 
+"E7F763FDDDE93023F8F7B1FE53EC1A2BF4F72BFFC4E900\n" 
+"0151EC190BD4E90223E7F753FDDDE93223F8F7A1FE53EC\n" 
+"1A2BF4F71BFFC4E9020151EC190BD4E90423E7F743FDDD\n" 
+"E93423F8F791FE53EC1A2BF4F70BFFC4E90401A7632146\n" 
+"84B068464022D8F740FB0FBCFFF797F8A06B009053EC18\n" 
+"2B698A0FF64000DEF788FB22B0BDEC068BBDE8F1035DF8\n" 
+"14FB7047DFF8DC07807B704730318800A0308800403888\n" 
+"0074C9880080EE3600F1D8FFFF005C2605FCA9F1D24D62\n" 
+"503F015C260500A4D9FA40774B41004CED40062821D8DF\n" 
+"E800F004080C1014181C000FF2F470DEF756BB0FF2F870\n" 
+"DEF752BB0FF60000DEF74EBB0FF60800DEF74ABB0FF61C\n" 
+"00DEF746BB0FF62800DEF742BB0FF63C00DEF73EBB7047\n" 
+"00000EB42DE9F8412DED028B9EB00646DFF84857686F08\n" 
+"18686700A8DEF7D2FDDFF83C87404600A90522D8F7C2FA\n" 
+"404690F90100294691F90110401A00D54042022801D03A\n" 
+"2806D1287BFFF7B4FFD8E90001C5E900013D9804280AD1\n" 
+"E86F401CE8677043DFF8FC168842A441E443E40F02E000\n" 
+"20E8670446686FA96F411A332900DBA867297B062900F2\n" 
+"5083DFE811F007000D009100E3008E0135022C03FFF752\n" 
+"FBF19403E01D85000120FFF7ADFC40E327A983B0684658\n" 
+"22D8F78EFA0EBC304680B2FEF7E9FD002843D0002C41D1\n" 
+"D8E90001CDE903014D200090DFF870060369DDE903010A\n" 
+"46014601A8FFF7DDFBDFF87C0601A90522D8F75FFADFF8\n" 
+"481682B068464022D8F768FA0CBC1CA8FFF728FDD8E900\n" 
+"01CDE90001DDE90023DDE91C01FFF76CFB0446B4F5967F\n" 
+"07DD21460FF22870DEF7A5FAFEF7E9FD06E00120686621\n" 
+"460FF22070DEF79BFA0220FFF75CFCEFE2686E012840F0\n" 
+"EC8200206866DFF8E465314684B068464022D8F735FA0F\n" 
+"BCFEF7A8FE2867012811D10020286706F5A86184B06846\n" 
+"4022D8F726FA0FBCFFF773FAFFF7DBFA0FF2DC60DEF771\n" 
+"FA002C40F0C782314684B068464022D8F714FA0FBCFFF7\n" 
+"AFFDBCE2FEF72DFE002836D00320FFF721FC687A002822\n" 
+"D0DFF8A065314684B068464022D8F7FEF90FBCFEF771FE\n" 
+"2867012814D100202867DFF8581584B068464022D8F7EF\n" 
+"F90FBCFFF73CFAFFF7A4FA0FF27C60DEF73AFA0120FFF7\n" 
+"FBFB002C40F08D82DFF8541584B068464022D8F7D9F90F\n" 
+"BCFFF774FD81E2FEF719FE002800F07D82287A401C2872\n" 
+"C0B2032803DB0620FFF7DFFB02E00120FFF7DBFB0FF240\n" 
+"60DEF713FA6AE2686E012858D100206866687A002822D0\n" 
+"DFF8D464314684B068464022D8F7AEF90FBCFEF721FE28\n" 
+"67012814D10020286706F5A86184B068464022D8F79FF9\n" 
+"0FBCFFF7ECF9FFF754FA0FF2FC50DEF7EAF90120FFF7AB\n" 
+"FBDFF8BC64002C08D1314684B068464022D8F789F90FBC\n" 
+"FFF724FDDFF874140CA84022D8F780F9314684B0684640\n" 
+"22D8F77AF90FBCFEF7C6FDB0EE408AF0EE608ADFF85804\n" 
+"4089E7F752FB53EC182BF4F786FB06D20FF2AC50DEF7B9\n" 
+"F90120FFF77AFBDFF83474D8E90001CDE90201D7E90001\n" 
+"CDE90001DDE90223FFF766FA696FFA69891AFA898A4207\n" 
+"D20FF28450DEF79EF90120FFF75FFBF2E179694FF47A72\n" 
+"5043814280F0EC81DFF8E81382B068464022D8F738F90C\n" 
+"BC1CA8FFF7F8FBD8E90001CDE90001DDE90023DDE91C01\n" 
+"FFF73CFA0446B4F5967F07DDFEF7BEFC21460FF24050DE\n" 
+"F773F906E00120686621460FF24050DEF76BF90420FFF7\n" 
+"2CFBBFE1FEF743FD002800F08380DFF8B473394684B068\n" 
+"464022D8F706F90FBCFEF779FD2867012820D100202867\n" 
+"DA4984B068464022D8F7F8F80FBCFFF745F9FFF7ADF90F\n" 
+"F20050DEF743F90120FFF704FB002C40F09681394684B0\n" 
+"68464022D8F7E3F80FBCFFF77EFC8BE1D54E39460CA840\n" 
+"22D8F7D9F8314684B068464022D8F7D3F80FBCFEF71FFD\n" 
+"F1940370218500B0EE408AF0EE608AC2484089E7F7ACFA\n" 
+"02460B4651EC180BF4F7DEFA1FD2687B0528394608D184\n" 
+"B068464022D8F7B8F80FBCFEF7E3FE0CE00CA84022D8F7\n" 
+"B0F8314684B068464022D8F7AAF80FBCFEF7B9FFFEF748\n" 
+"FC0520FFF7BAFA4DE153EC182B0FF26440DEF7EFF80120\n" 
+"FFF7B0FA002C40F04281394684B068464022D8F78FF80F\n" 
+"BCFFF72AFC37E1FEF7CFFC002800F03381297A0FF23C40\n" 
+"DEF7D5F8287A401C2872C0B2032803DB0620FFF790FA23\n" 
+"E1A349974841610FF22C40DEF7C4F80320FFF785FA18E1\n" 
+"0320A873686E01285CD1002068668D4E314684B0684640\n" 
+"22D8F75EF80FBCFEF7D1FC2867012820D10020286706F5\n" 
+"A86184B068464022D8F74FF80FBCFFF79CF8FFF704F90F\n" 
+"F2F030DEF79AF80120FFF75BFA002C36D1874984B06846\n" 
+"4022D8F73BF80FBCFFF7D6FB2CE031460CA84022D8F732\n" 
+"F87E4984B068464022D8F72CF80FBCFEF778FCB0EE408A\n" 
+"F0EE608A6F484089E7F705FA53EC182BF4F739FA11D20F\n" 
+"F25C30DEF76CF80120FFF72DFA002C08D1704984B06846\n" 
+"4022D8F70DF80FBCFFF7A8FB614FD8E90001CDE90201D7\n" 
+"E90001CDE90001DDE90223FFF70FF9696FFA69891AFA89\n" 
+"8A4207D20FF25830DEF747F80120FFF708FA9BE07A694F\n" 
+"F47A73584382423ED215293CD34E4E96F929008DF87000\n" 
+"06F2290090F901108DF8711090F902008DF87200D8E900\n" 
+"01CDE90001DDE90023DDE91C01FFF7E0F80446B4F5967F\n" 
+"07DDFEF762FB21460FF20430DEF717F806E00120686621\n" 
+"460FF20430DEF70FF80420FFF7D0F9E87A401CE872C0B2\n" 
+"03285EDBB869410079610FF20010DDF7FFFF56E0012C2F\n" 
+"D12E4E96F929008DF8700006F2290090F901108DF87110\n" 
+"90F902008DF87200D8E90001CDE90001DDE90023DDE91C\n" 
+"01FFF7A1F80446B4F5967F07DDFEF723FB21460FF28420\n" 
+"DDF7D8FF06E00120686621460FF28420DDF7D0FF0120FF\n" 
+"F791F924E0FEF77CFC21E0174FF989FA69801A81420BD2\n" 
+"0FF27420DDF7BFFF0FF28020DDF7BBFF0120FFF77CF90F\n" 
+"E0686E012807D10FF27420DDF7B0FF0120FFF771F904E0\n" 
+"687B042801D1FEF759FC287B1EB0BDEC028BBDE8F2015D\n" 
+"F810FB0000303188007036880074C98800B42485008038\n" 
+"8800803788006CC98800A03088005CC98800C1D4010064\n" 
+"C98800C037880000388800E09304004C542D5750204348\n" 
+"414E4745202564004C542052455345545F474150000000\n" 
+"004C54204741204D546D202564000000004C5420535020\n" 
+"534741522025642C2025662C2025640000004C542D53F1\n" 
+"940300258500535F494E495400004C542D434845434B5F\n" 
+"53544F500000004C542D53535F4745545F464952535400\n" 
+"4C542D53535F434845434B5F555345525F4D4F56454D45\n" 
+"4E540000004C542D53535F4745545F5345434F4E440000\n" 
+"00004C542D53535F434845434B5F555345525F4C454156\n" 
+"494E47000000004C542D53535F50415553455F53544159\n" 
+"494E475F53454E53494E47004C54205245512D46202564\n" 
+"004C542045584953542D317374202564004C5420536176\n" 
+"65205341554D000000004C5420537461794F75742D4650\n" 
+"0000004C54204E4F54204F4B203173740000004C542053\n" 
+"54204F75742D554D000000004C542D4D44206F76657220\n" 
+"25660000004C542D445354204F56202564000000004C54\n" 
+"205245512D326E642025640000004C542045584953542D\n" 
+"326E64202564004C542053544F55202D5350004C542D4D\n" 
+"44204F56202566004C542D5053204E4F54204F4B20326E\n" 
+"64202564004C542D5750204348414E47453A5053204E47\n" 
+"2025640000004C542053544F552D554C00004C542D4453\n" 
+"204F56202564004C54205245512D554C20256400000000\n" 
+"4C542045584953542D554C20256400004C542053532041\n" 
+"4741494E2042592053540000004C542D434B5F53544F50\n" 
+"00004C5420535320414741494E204259205053000000B0\n" 
+"F5803F5EDBB0F1807F35DBB0F1805F15DBB0F1804F0CDB\n" 
+"DFF8381C884202DB4BF20450704701160FF2F802895C09\n" 
+"0211E081150FF2EC02895CC9010BE00FF2E401B0F1806F\n" 
+"03DB0215515C890102E08214515C490190FBF1F2511849\n" 
+"1C491090FBF1F25118491C491001FB01F2904200DA491E\n" 
+"084670470FF2A801B0F5801F0ADBB0F5800F03DB021451\n" 
+"5C09010DE08213515CC90009E0B0F5802F03DB0213515C\n" 
+"890002E08212515C490090FBF1F25118491C491001FB01\n" 
+"F2904200DA491E08467047FF2823DD0FF25801B0F5805F\n" 
+"0BDBB0F5804F03DB0212515C491C10E08211515C490849\n" 
+"1C0BE0B0F5806F04DB0211515C8908491C03E08210515C\n" 
+"C908491C11FB01F2904200DA491E08467047002804D40F\n" 
+"F20C01405C000970474FF0FF3070470010161B2023272A\n" 
+"2D30323537393B3D4041434547494B4C4E505153545657\n" 
+"595A5B5D5E60616263656667686A6B6C6D6E7071727374\n" 
+"75767778797A7B7C7D7E80808182838485868788898A8B\n" 
+"8C8D8E8F9090919293949596969798999A9B9B9C9D9E9F\n" 
+"A0A0A1A2A3A3A4A5A6A7A7A8A9AAAAABACADADAEAFB0B0\n" 
+"B1B2B2B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFF194\n" 
+"0390288500C0C0C1C1C2C3C3C4C5C5C6C7C7C8C9C9CACB\n" 
+"CBCCCCCDCECECFD0D0D1D1D2D3D3D4D4D5D6D6D7D7D8D9\n" 
+"D9DADADBDBDCDDDDDEDEDFE0E0E1E1E2E2E3E3E4E5E5E6\n" 
+"E6E7E7E8E8E9EAEAEBEBECECEDEDEEEEEFF0F0F1F1F2F2\n" 
+"F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFBFBFCFCFDFDFE\n" 
+"FEFF2DE9F0419AB00546144620461422D7F7FFFC00210A\n" 
+"4611E0142055F8213000AF00FB067747F8223000AF00FB\n" 
+"027040F82630761C491C052EEEDB521C052A01DA1646F8\n" 
+"E70021142000E01946052980F28A8000AA00FB012252F8\n" 
+"21700D464B1C1E4606E0CEF1000CE04501DA3546774676\n" 
+"1C052E10DAB846B8F1000F01D5C8F100080DF1000C00FB\n" 
+"06CC5CF821E0BEF1000FE7D4F446E7E78D4218D000260C\n" 
+"E052F826700DF1000C00FB05CC5CF826E042F826E04CF8\n" 
+"2670761C052EF0DB54F8217054F8256044F8216044F825\n" 
+"701E4614E0002D11D052F82650AD0142F8265052F82150\n" 
+"AD110FD052F8265052F82170BF1195FBF7F542F8265076\n" 
+"1C052E52F82150E6DB002D02D14FF0FF3046E054F82160\n" 
+"96FBF5F544F821501D461EE057F826E052F826804FEAE8\n" 
+"084FEAEC0C0CFB08FCAEEBAC1C47F826C0761C00AF00FB\n" 
+"057757F821C0052EE9DB54F8256054F821700CFB176644\n" 
+"F825606D1C052DBFF674AF1E46EAE7042113E054F82100\n" 
+"01EB810200AB03EB820252F8262054F826305A43A0EB22\n" 
+"3044F82100761C052EECDB491E002901D44E1CF8E70020\n" 
+"1AB0BDE8F0812DE9F04186B000252E462C46234603AF9C\n" 
+"469E469846A7E8005100AFA7E800511F4604E0664501DB\n" 
+"66463B467F1C032F11DA002F04D10668354643461C46F5\n" 
+"E70FF28C0C17F90CC050F82CC0AC45E9DB65463C46EAE7\n" 
+"03AD012645F8236045F82460464601E0761C76B2032E04\n" 
+"DA55F82670002FF7D101960094029343460EE0AF1807EB\n" 
+"860706EB460C01EB8C0C5CF824C0C7F804C0761C032EF1\n" 
+"DB5B1C032B10DA00AC54F823400FF2240C14F90C5050F8\n" 
+"25601D01AE50012E01DA4646AE504646E9E7404606B0BD\n" 
+"E8F0810000000305002DE9F24F98B0014602A81822D7F7\n" 
+"C6FB002101E0491C49B2032913DA002004E0002342F820\n" 
+"30401C40B20328F2DA0C220EAB12FB01328142F2D14FF4\n" 
+"804342F82030F0E70020019024E00C220EA912FB001252\n" 
+"F8241052F8253006FB01F70BFB03FCA7EBEC07BF1142F8\n" 
+"24704FEAEB07734307FB0131891142F82510401C0328E3\n" 
+"DB02A808A91822D7F788FB0198401C40B2019001980628\n" 
+"80F2DD8001200024054602270399002900D54942F19403\n" 
+"202C8500049A002A00D55242914202DA38460546012702\n" 
+"A951F82000002800D540420699002900D54942884202DA\n" 
+"0124022500270FF2881004EB440101EB000805EB450101\n" 
+"EB000915F8090002A951F8200014F8081002AA52F82110\n" 
+"401A461015F8080002A951F8200000900A2190FBF1F096\n" 
+"FBF1F1404301FB0100FFF720FD00EB80015FEA410B11D0\n" 
+"300000D54042000390FBFBF000F580504FEA600A5046FF\n" 
+"F70EFD064606FB0BF0801002D14FF0FF3082E000990903\n" 
+"91FBF0FB15F8090002A951F8200014F8081002AA52F821\n" 
+"10884201DACBF1000B0BFB0BF08011009008A802A91822\n" 
+"D7F705FB17F80800014602AA52F821107143891117F809\n" 
+"2002AB53F822200BFB02F2A1EB622108AA42F8201017F8\n" 
+"091002AA52F820000BFB00F052F821207243921102EB60\n" 
+"2008AA42F8210015F8080002A951F8200006FB0BF18911\n" 
+"4843011214F8080002AA52F820000AFB00F0C1EB203015\n" 
+"F8092053F82220009B5A4300EB223014F8082008AB43F8\n" 
+"220015F8090002AA52F820000AFB00F001EB203014F808\n" 
+"1052F82110009A514300EB213015F8091008AA42F82100\n" 
+"15F8080008A9002241F82020104613E7189A0EA902A8FF\n" 
+"F767FE002019B0BDE8F08F000102010304020405000000\n" 
+"F0B4DFF82C2C02F5217191F9013092F98442012C1BDB5C\n" 
+"1E64B2002C01D5303464B204EB440502EB8504E56C8668\n" 
+"AD1BA66C4768F61B646C0768E41B764304FB046405FB05\n" 
+"44642C01DA00202FE003EB430402EB8403443370C870C3\n" 
+"4878401C487040B2302801DB0020487092F88402401C82\n" 
+"F8840240B2302802DB302082F8840292F98402C21000EB\n" 
+"12721211B0EB02100BD191F90100C11000EB11710911A0\n" 
+"EB0110401E8041C00F00E00020F0BC7047DFF87C0B90F9\n" 
+"8412CA1001EB12710911012903D1002180F88412704710\n" 
+"2180F8841270472DE9F047B0B005460E460027DFF84C8B\n" 
+"98F9844298F88502A0EB04094FFA89F9B9F1000F03D509\n" 
+"F130094FFA89F9BA4624E009EB490008EB8000A968C26C\n" 
+"891A6A68836CD21A2B68406C181A524300FB002001FB01\n" 
+"00FFF7E2FB00A941F82A00C71909F101094FFA89F9B9F1\n" 
+"300F01D14FF000090AF1010A4FFA8AFAA245D8DB97FBF4\n" 
+"F030600022134607E000A951F82310091A01FB01225B1C\n" 
+"5BB298F984128B42F3DB92FBF1F030B0BDE8F0872DE9FE\n" 
+"4100ACE0C9E0C40C39002635462C4627460AE053F827C0\n" 
+"52F827E051F82780AEEB080E0EFB0C667F1C032FF2DB71\n" 
+"1306EB9141891322460FE053F822604E4300AFF19403B0\n" 
+"2F850057F822704FEA663C06EB9C4607EBA63600AF47F8\n" 
+"2260521C032AEDDB21460CE050F8212000AE56F8216092\n" 
+"1B53F8216002FB065502FB0244491C0329F0DB002C02D1\n" 
+"40F2011008E0280000D54042851205FB05F090FBF4F000\n" 
+"B2BDE8FE812DE9F0419AB0144600220AAD164602E045F8\n" 
+"2260521C0F2AFADB324606E005AD45F8226000AD45F822\n" 
+"60521C052AF6DB32460AAE07E00FF64425555753F82270\n" 
+"46F82570521C062AF5DB0025209A1CE005EB45060FF630\n" 
+"27F6199E5730F9157002EB051C0CEB830CDCF814C00CFB\n" 
+"07F70DF1280C4CF82670002F02D0BF124CF826705B1C03\n" 
+"2BE3DB6D1C022D01DA0023F8E70025219B00AF04E053F8\n" 
+"256047F825606D1C032DF8DB00250C261BE002EB051C0C\n" 
+"EB830CDCF814C051F823E054F82380AEEB080E0EFB0C77\n" 
+"5B1C032BEEDBBB1230F915707B4300AF07EB8507FB606D\n" 
+"1C6DB2B61C022D15DA1368002B02D14FF0FF3025E030F9\n" 
+"1570A7F58067BF0497FBF3F337467FB20DF1280C4CF827\n" 
+"3000273B46DAE705AA00A90AA8FFF7E9FB002522980AE0\n" 
+"05A951F8251040F8251054F82520511840F825106D1C03\n" 
+"2DF2DB00201AB0BDE8F0812DE9FE4F002423461D461E46\n" 
+"68C00C3802E041F825605B1C5BB21D46062DF8DB234602\n" 
+"E042F825605B1C5BB21D46032DF8DBDFF88C3803F52175\n" 
+"6E7893F88472F61B76B2002E01D5303676B2A44616E050\n" 
+"F827E006EB460803EB880808EB8708D8F84480C64440F8\n" 
+"27E07F1C032FEFDB761C76B2302E00D126460CF1010C93\n" 
+"F984724FFA8CFCBC4501DA2746EEE7264606E050F827E0\n" 
+"9EFBFCFC40F827C0761C93F984C276B23746032FF2DB6D\n" 
+"78A5EB0C0676B2350001D530356DB2A64617E005EB4508\n" 
+"03EB880808EB8708D8F8448050F82790A8EB090808FB08\n" 
+"447F1C032FEEDB6D1C6DB2302D00D100250EF1010E4FFA\n" 
+"8EFEE64501DA0027F0E794FBFCF4002E01D5303676B200\n" 
+"250FE052F827E00DF1000858F8278009FB08F80EEB680E\n" 
+"42F827E07F1C032FF0DB6D1C93F984726DB2BD424DDA00\n" 
+"2710E006EB460C03EB8C0C0CEB870CDCF844C050F827E0\n" 
+"ACEB0E0C0DF1000E4EF827C07F1C032FECDB761C76B230\n" 
+"2E00D100264FF0000B5F461AE04FFA8BFB51F82BE00DF1\n" 
+"000858F827800DF1000959F82A9009FB08EE41F82BE00C\n" 
+"F1010C0BF1010B4FFA8CFCE246BAF1030FE5DB7F1C032F\n" 
+"01DABC46F4E74FF0000C674606E00DF1000E5EF827E00E\n" 
+"FB0ECC7F1C032FF6DB0027ACEB0409A9E70020BDE8FE8F\n" 
+"000010A8FE7F2DE9F043A1B0044600200390F194034033\n" 
+"85004FF0FF35064604A8314601600BAA1AA908A8FFF700\n" 
+"FF002800F1AB800EA91AA8FFF708FC40B2002800F1A380\n" 
+"0DF110080120A8F80200DFF8A07605A802900BA801900E\n" 
+"A800901AAB08AA391D04A8FFF73EFE002800F18D8003A9\n" 
+"05A8FFF78FFD03991A29C0F2858097F9841242F2107212\n" 
+"9B93FBF1F35343DDF80CC093FBFCF393FBFCF9169B93FB\n" 
+"F1F15143624691FBF2F191FBF2F12160C4F80490A06003\n" 
+"9A2261324622753A6C22733346022201E0521E52B2002A\n" 
+"1CD497F984C24FEAEC0E0CEB1E7C4FEA2C1CACF1010C0C\n" 
+"EB4C0C4FFA8CFCBCF1070F01DB4FF0060C42FA8CFC07EB\n" 
+"8C0CDCF810C08C45E0DA531C5BB2012B24DB1A46521E52\n" 
+"B201E0521E52B2002A0CD407EB820CDCF834C04FF0640E\n" 
+"91FBFEFEF4448445F0DB531C5BB2002A44D40720207538\n" 
+"6C834208DB3B6418462073381D05A91CC91CC0012067E0\n" 
+"4FF48060A8F8020005A802900BA801900EA800901AAB08\n" 
+"AA391D04A8FFF7B7FD002806D403A905A8FFF709FD0399\n" 
+"012901DA28464CE0A06003992161B9F57A7F45DD396C00\n" 
+"2901D1B44601E0A1F1010C4FFA8CFC07EB8C01496B01EB\n" 
+"D1714FF4C87299FBF2F202EB6101814202DA6FF002002D\n" 
+"E017AB08AA05A9381DFFF736FDB446324605E049428D42\n" 
+"01DA0D469446521C032A06DA0EA901EB8201496A0029F1\n" 
+"D4F1E7BCF1000F00D10626BCF1010F00D10526BCF1020F\n" 
+"00D103262675E72803DA381D05A91CC91CC0012000E030\n" 
+"4621B0BDE8F083DFF8C0140A68002A02D16FF002007047\n" 
+"002802D16FF07F007047002206E001EB82035B689B0020\n" 
+"F81230521C032AF6DB0020704710B4DFF888140A68002A\n" 
+"02D16FF0020013E0002802D16FF07F000EE0002209E030\n" 
+"F912305C1003EB94739B1001EB82046360521C032AF3DB\n" 
+"002010BC7047DFF84C040168002902D16FF00200704700\n" 
+"6C7047DFF838140A68002A02D16FF002007047042802D3\n" 
+"6FF07F007047086400207047F0B589B00C4615460026DF\n" 
+"F810743968002902D16FF0020081E0002803D0002C01D0\n" 
+"002D02D16FF07F0078E031463BE0DFF8EC2301EB410302\n" 
+"EB4303B3F91CC0B0F900E01CFB0EFC4FF00A0E9CFBFEFC\n" 
+"B3F91E30B0F902E013FB0EF34FF00A0E93FBFEF3634401\n" 
+"EB410C02EB4C02B2F92020B0F904C012FB0CF2F44692FB\n" 
+"FCF2D2184FF47A7392FBF3F200AB43F8212000AA52F821\n" 
+"20531002EB93729210E04B03EB81031A63491C032913DA\n" 
+"30F9112047F6FF739A4202D012F5004FB8D132463A64D7\n" 
+"4A02EB8102126B920000AB43F82120DDE7F19403D03685\n" 
+"00E048FFF789FB002803D003A8FFF72AFE064600200AE0\n" 
+"00A951F8201007EB80025268A1EB820124F81010401C03\n" 
+"28F2DBFFF762FF2860002E06D516F1030F01D1FFF7C3FB\n" 
+"002000E0304609B0F0BD10B5BD4C201D00210A460B460E\n" 
+"C00FF22C313022D6F7EDFD0020206484F8840284F88502\n" 
+"01202060002010BD80B520EE000A00EEA00A01EE010A10\n" 
+"EE100AE6F79CF841EC100BF7F78CF951EC100BE6F7BCF8\n" 
+"00EE100A01BD000070B52DED068B8CB005460E46144600\n" 
+"2D00F0A380002E00F0A080002C00F09D8095ED021AD5ED\n" 
+"010A95ED000AFFF7D1FFF0EE408A96ED021AD6ED010A96\n" 
+"ED000AFFF7C7FF9FED988AF4EE488AF1EE10FA00F18380\n" 
+"B4EE480AF1EE10FA7DD4002009AA16E005EB8003D3ED00\n" 
+"0AC0EEA80AF1EE600A01EB8001C1ED000A06EB8001D1ED\n" 
+"000AC0EE800A02EB8001C1ED000A401C03A90328E5DB92\n" 
+"ED010AD1ED028A92ED021A91ED019A69EE010A48EEC00A\n" 
+"CDED000ADDED090A68EEA00ADDED031A41EEC10A00ADC5\n" 
+"ED010A9DED031A21EE001A9DED090A09EE401A85ED021A\n" 
+"9DED000AFFF776FFB4EE480AF1EE10FA34D4002008E005\n" 
+"EB8001D1ED000AC0EE800AC1ED000A401C0328F4DB95ED\n" 
+"020AD5ED019A69EEA80A40EE490ACDED060ADDED030A60\n" 
+"EE200A9DED000A40EE680A06ADC5ED010A9DED000A20EE\n" 
+"091A9DED030A09EEC01A85ED021A9DED060AFFF741FFB4\n" 
+"EE480AF1EE10FA02D56FF07F007BE0002008E005EB8001\n" 
+"D1ED000AC0EE800AC1ED000A401C0328F4DB9FED4CAB9D\n" 
+"ED000AD5ED010A70EE200A9DED060A39EEC00A07F0ABFF\n" 
+"10EE100AE5F7C1FF53EC1A2BE5F7EBFE434A434BF3F7B7\n" 
+"F8E5F7DFFF2060B1EE490A07F0D0FFB1EE400A10EE100A\n" 
+"E5F7ACFF53EC1A2BE5F7D6FE384A394BF3F7A2F8E5F7CA\n" 
+"FF60609DED030AB1EE400A07F0B9FF10EE100AE5F797FF\n" 
+"53EC1A2BE5F7C1FE2E4A2E4BF3F78DF8E5F7B5FFA060B1\n" 
+"EE680AB5EE400AF1EE10FA12D59FED290AD4ED010A70EE\n" 
+"600AC4ED010AF4EE400AF1EE10FA05D59FED2B0A30EE80\n" 
+"0A84ED010A94ED000AB5EE400AF1EE10FA05D5DFED250A\n" 
+"30EE200A84ED000A00200CB0BDEC068B70BD10B5104C16\n" 
+"48206016482061164860611648A0601648E06016486060\n" 
+"1648A0611222002104F11C00E4F7E1FE42F21070A083A0\n" 
+"84A085024800210160084610BD64CF880028CF8800BD37\n" 
+"86350000000000806640182D4454FB210940000034C31F\n" 
+"378500C9358500DD358500573585008B358500FD358500\n" 
+"7937850058CF88000000B4432C010000F19403603A8500\n" 
+"F4010000E8030000C80000002C010000F4010000C80000\n" 
+"002C010000F40100001E000000140000000F0000000001\n" 
+"02050609000003070A04080B0000002303604360C26081\n" 
+"60194603E000EB41021382491C82689142F8DB70470246\n" 
+"08469168022900DA704730B4536814688C4208DA591C51\n" 
+"6002EB430108821168491C116035E08B4201DB00215160\n" 
+"51684B1C536002EB4101088200210B4606E002EB4304B4\n" 
+"F9104001FA84F15B1C9468A342F5DB91FBF4F100231C46\n" 
+"07E002EB4405B5F910504D1B05FB0533641C9568AC42F4\n" 
+"DB93FBF5F3D2689A4202DB084600B206E0401A9A1A5043\n" 
+"90FBF3F0081800B230BC7047016000218180704770B4B0\n" 
+"F90420134604680D461E1BB54202DBE318AB4202DA8180\n" 
+"084600E0104670BC7047F8B504460D46002C01D0002D02\n" 
+"D16FF07F00F2BD244ED6F8C000002802D16FF00200F2BD\n" 
+"002712E034F91710C7EBC70006EBC000FFF782FF25F817\n" 
+"00014606EBC700A830FFF7CAFF25F817007F1C032FEADB\n" 
+"0020F2BD38B50024124D11E00FF2540050F824201421C4\n" 
+"EBC40005EBC000FFF755FF032105EBC400A830FFF7AAFF\n" 
+"641C032CEBDB0120C5F8C000002032BD06480649016006\n" 
+"49416002480021C0F8C01008467047F4D18800ECD18800\n" 
+"D53B85007F3B850090000000900000009000000000214F\n" 
+"F0804200E092089042FCD3002A09D05318984203D3401A\n" 
+"801A01EB420149089208F3E708467047002802D400F07F\n" 
+"0002E0404240F08000C0B2704700F07F01802800DB4942\n" 
+"0846704730B404460D46A54200DA2C461546A54200DA2C\n" 
+"46A34200DA1C46204630BC704730B404460D46AC4200DA\n" 
+"2C461546AC4200DA2C469C4200DA1C46204630BC704718\n" 
+"4900224A608A600861C860704770B50546144CA0682169\n" 
+"626823689A4214DB91FBF3F6266190FBF3F0FFF7A3FFA0\n" 
+"60072804DB2846FFF7E3FF002070BDE660256100216160\n" 
+"A16070BD521C626069182161E168491B01FB0100A06000\n" 
+"2070BD00000000300088000EB4F0B50999059A4A430092\n" 
+"069A4A430192089A4A4303921A465143029100A91022D6\n" 
+"F7DBFA04B05DF810FB10B40C181C19101910BC70470A78\n" 
+"22EA0000087070470A7810430870704730B583B004460D\n" 
+"460020ADF806000120009001AB224672210720DCF799FB\n" 
+"002801D100203EBD01A92846FFF7E5FF8DF806409DF804\n" 
+"008DF8070002230DF1060272210720DCF742FB002801D1\n" 
+"00203EBD01203EBD30B583B004460D460020ADF8060001\n" 
+"20009001AB224672210720DCF76FFBF19403F03D850000\n" 
+"2801D100203EBD01A92846FFF7B6FF8DF806409DF80400\n" 
+"8DF8070002230DF1060272210720DCF718FB002801D100\n" 
+"203EBD01203EBD0000DFF8D40800210170C17008214170\n" 
+"817000F00BBDDFF8C0080078032801D101207047002070\n" 
+"47DFF8B0080078042801D1012070470020704710B5DFF8\n" 
+"9C48217800290FD10F219F20FFF7AFFF06219F20FFF781\n" 
+"FF012020700020E07020710120607210BD012950D1617A\n" 
+"002952D1217900291AD1E17802290AD062785208824206\n" 
+"D30120E07000F021F9002862D010BD01295FD0A1784908\n" 
+"81425BD20220E07000F038F9002855D010BD01291ED1E1\n" 
+"7802290AD062785208824206D30120E07000F092F90028\n" 
+"0CD010BD012909D0A1784908814205D20220E07000F0A9\n" 
+"F900286BD1E078012859D000202071022020700020E070\n" 
+"0F219F20FFF757FF09219F20FFF729FF0120607210BD02\n" 
+"2955D1617A002902D00020607210BD217900291ED1E178\n" 
+"02290AD062785208824206D30120E07000F012F900280C\n" 
+"D010BD012909D0A1784908814205D20220E07000F029F9\n" 
+"002832D10020E0700120207110BD012921D1E17802290A\n" 
+"D062785208824206D30120E07000F07FF900280CD010BD\n" 
+"012909D0A1784908814205D20220E07000F096F9002811\n" 
+"D1E078012802D10020E07010BD002020710F219F20FFF7\n" 
+"FEFE032020700020E0700120607210BD38B50020ADF800\n" 
+"00DFF814472078FFF744FE9D218DF8001000ADFFF734FE\n" 
+"6870022300AA72210720DCF71DFA00280ED06078FFF732\n" 
+"FE9E218DF80010FFF723FE6870022300AA72210720DCF7\n" 
+"0CFA31BD3FB581B0DFF8C4462078032856D101A80FC8FF\n" 
+"F721FE054601A80FC8FFF72CFE2179002920D1E1780229\n" 
+"0BD06278AA4208DB0120E07001A80FC800F05DF900280D\n" 
+"D03BE001290AD0A178814207DA0220E07001A80FC800F0\n" 
+"CCF900282ED10020E0700120207129E0012921D1E17802\n" 
+"290BD06278AA4208DB0120E07001A80FC800F02FFA0028\n" 
+"0DD018E001290AD0A178814207DA0220E07001A80FC800\n" 
+"F09DFA00280BD1E078012802D10020E07005E000202071\n" 
+"042020700020E07005B030BD10B582B00020ADF80000DF\n" 
+"F804462078FFF7BBFD10F17B0F01DA002016BD9D218DF8\n" 
+"0010001FFFF7A6FD8DF801002070022300AA72210720DC\n" 
+"F78DF9002801D1002016BD012016BD10B582B00020ADF8\n" 
+"0000DFF8BC452078FFF797FD7C2801DB002016BD9D218D\n" 
+"F80010001DFFF783FD8DF801002070022300AA72210720\n" 
+"DCF76AF9002801D1002016BD0120F194038041850016BD\n" 
+"10B582B00020ADF80000DFF874456078FFF774FD10F17B\n" 
+"0F01DA002016BD9E218DF80010001FFFF75FFD8DF80100\n" 
+"6070022300AA72210720DCF746F9002801D1002016BD01\n" 
+"2016BD10B582B00020ADF80000DFF82C456078FFF750FD\n" 
+"7C2801DB002016BD9E218DF80010001DFFF73CFD8DF801\n" 
+"006070022300AA72210720DCF723F9002801D1002016BD\n" 
+"012016BD10B582B00020ADF80000DFF8E8442078FFF72D\n" 
+"FD10F17F0F01D1002016BD9D218DF80010401EFFF718FD\n" 
+"8DF801002070022300AA72210720DCF7FFF8002801D100\n" 
+"2016BD012016BD10B582B00020ADF80000DFF8A0442078\n" 
+"FFF709FD7F2801D1002016BD9D218DF80010401CFFF7F5\n" 
+"FC8DF801002070022300AA72210720DCF7DCF8002801D1\n" 
+"002016BD012016BD10B582B00020ADF80000DFF8584460\n" 
+"78FFF7E6FC10F17F0F01D1002016BD9E218DF80010401E\n" 
+"FFF7D1FC8DF801006070022300AA72210720DCF7B8F800\n" 
+"2801D1002016BD012016BD10B582B00020ADF80000DFF8\n" 
+"10446078FFF7C2FC7F2801D1002016BD9E218DF8001040\n" 
+"1CFFF7AEFC8DF801006070022300AA72210720DCF795F8\n" 
+"002801D1002016BD012016BD3FB581B000252846ADF800\n" 
+"00DFF8C44360780199884217DB6079FFF79AFC10F17A0F\n" 
+"11DBA4218DF80010001FFFF787FC00A948706071022300\n" 
+"AA72210720DCF76EF8002853D0012560780299884217DB\n" 
+"A079FFF77EFC10F17A0F11DBA5218DF80010001FFFF76B\n" 
+"FC00A94870A071022300AA72210720DCF752F8002837D0\n" 
+"012560780399884217DBE079FFF762FC10F17A0F11DBA7\n" 
+"218DF80010001FFFF74FFC00A94870E071022300AA7221\n" 
+"0720DCF736F800281BD0012560780499884219DB207AFF\n" 
+"F746FC10F17A0F13DBA9218DF80010001FFFF733FC00A9\n" 
+"48702072022300AA72210720DCF71AF8002801D1002001\n" 
+"E00125284605B030BD3FB581B000252846ADF80000B34C\n" 
+"A0780199884216DA6079FFF71EFC7B2811DAA4218DF800\n" 
+"10001DFFF70CFC00A948706071022300AA72210720DBF7\n" 
+"F3FF002850D00125A0780299884216DAA079FFF703FC7B\n" 
+"2811DAA5218DF80010001DFFF7F1FB00A94870A0710223\n" 
+"00AA72210720DBF7D8FF002835D00125A0780399884216\n" 
+"DAE079FFF7E8FB7B2811DAA7218DF80010001DFFF7D6FB\n" 
+"00A94870E071022300AA72210720DBF7BDFF00281AD001\n" 
+"25A0780499884218DA207AFFF7CDFB7B2813DAA9218DF8\n" 
+"0010001DFFF7BBFB00A948702072022300AA72210720DB\n" 
+"F7A2FF002801D1002001E00125F1940310458500284605\n" 
+"B030BD3FB581B000252846ADF80000774C607801998842\n" 
+"17DB6079FFF7A6FB10F17F0F11D0A4218DF80010401EFF\n" 
+"F793FB00A948706071022300AA72210720DBF77AFF0028\n" 
+"53D0012560780299884217DBA079FFF78AFB10F17F0F11\n" 
+"D0A5218DF80010401EFFF777FB00A94870A071022300AA\n" 
+"72210720DBF75EFF002837D0012560780399884217DBE0\n" 
+"79FFF76EFB10F17F0F11D0A7218DF80010401EFFF75BFB\n" 
+"00A94870E071022300AA72210720DBF742FF00281BD001\n" 
+"2560780499884219DB207AFFF752FB10F17F0F13D0A921\n" 
+"8DF80010401EFFF73FFB00A948702072022300AA722107\n" 
+"20DBF726FF002801D1002001E00125284605B030BD3FB5\n" 
+"81B000252846ADF80000394CA0780199884216DA6079FF\n" 
+"F72AFB7F2811D0A4218DF80010401CFFF718FB00A94870\n" 
+"6071022300AA72210720DBF7FFFE002850D00125A07802\n" 
+"99884216DAA079FFF70FFB7F2811D0A5218DF80010401C\n" 
+"FFF7FDFA00A94870A071022300AA72210720DBF7E4FE00\n" 
+"2835D00125A0780399884216DAE079FFF7F4FA7F2811D0\n" 
+"A7218DF80010401CFFF7E2FA00A94870E071022300AA72\n" 
+"210720DBF7C9FE00281AD00125A0780499884218DA207A\n" 
+"FFF7D9FA7F2813D0A9218DF80010401CFFF7C7FA00A948\n" 
+"702072022300AA72210720DBF7AEFE002801D1002001E0\n" 
+"0125284605B030BD0000508889005A888900DFF8600700\n" 
+"21C161DFF85C1700220A7701224A7700221046086381F8\n" 
+"2000C87770470FB410B5DFF83C479DF81D00411E8941C9\n" 
+"0F6177201D03A91022D5F7E4FDDFF824079DF81E104177\n" 
+"002180F8201001779DF80810002907D1217F4A1C227706\n" 
+"290EDB012101770BE000202077607F00289DF8080002D1\n" 
+"00F031F901E000F09DF810BC5DF814FB0FB438B5DFF8D4\n" 
+"469DF82400411E8941C90FE177201D05A91022D5F7B1FD\n" 
+"DFF8C0569DF82600687705A80FC8FFF776FA6061686100\n" 
+"2085F820002877E07F002804D105A80FC800F0AEF909E0\n" 
+"A07F002805A80FC802D000F0DFF901E000F018FA31BC5D\n" 
+"F814FBF8B50446DFF8785605F11C06DFF86806C17F4A1E\n" 
+"9241D20F7275407F411E8941C90FB175DFF85476387F30\n" 
+"7597F820002877284639461C22D5F76FFDB87F707005F1\n" 
+"2000DFF83C161022D5F766FD204629463422BDE8F840D5\n" 
+"F75FBD10B582B00020ADF80000A0208DF8000000AC0020\n" 
+"6070DFF80C0600210174022300AA72210720DBF7E7FD00\n" 
+"2801D1002016BDA1208DF80000FF206070022300AA7221\n" 
+"0720DBF7D8FD002801D10020F19403A048850016BD8021\n" 
+"A320FFF76AFA3C21A220FFF766FADFF8B80500218177DF\n" 
+"F8B4050163012016BD10B50446DFF8A005807F00282046\n" 
+"02D0BDE810400BE000F03AF8DFF89005C07F002803D120\n" 
+"46BDE8104054E010BD38B5DFF87845E07F012828D1DFF8\n" 
+"6C55201D291D1022D5F702FD04202070A069C7280FD120\n" 
+"1D0FC8FFF7C7F9A17F814208DA012085F8200001460FF2\n" 
+"5C50DBF742FD07E0002085F8200001460FF26450DBF739\n" 
+"FD012084F820000020E07731BD10B5DFF81845E17F0129\n" 
+"09D100F0CBF8002802D00420E07710BD0020E06210BD00\n" 
+"2909D100F0B6F8002802D00220E07710BD0020E06210BD\n" 
+"E06A411CE1620B2801DB0020E06210BD10B5044600F055\n" 
+"F8204600F05DF8204600F065F8204600F06DF8DFF8B404\n" 
+"816A01EB8102D100642291FBF2F1C26B836B9A4204DA00\n" 
+"6B052290FBF2F003E0C06A142290FBF2F0BDE8104090E0\n" 
+"38B5044600F014F8204600F01AF8DFF87454A86A00EB80\n" 
+"01C800642190FBF1F104EB8400400000F07CF801206877\n" 
+"31BDDFF854144FF4FA624A62C8228A62FFF752B9DFF840\n" 
+"14C82212FB00F2CA62322212FB00F20A6300EB80025200\n" 
+"4A638863C8630864704710B50146DFF8184404F134020A\n" 
+"2000F025F8206410BD10B50146DFF8044404F130023220\n" 
+"00F01AF8E06310BD10B50146DFF8EC4304F12C02C82000\n" 
+"F00FF8A06310BD10B5FFF723F9642101FB00F4002C02D0\n" 
+"204600F013F8204610BD10B400EBD0735B101468091900\n" 
+"FB0131441C91FBF4F11160591891FBF0F010BC704710B5\n" 
+"0146C82900DAC821DFF8944304F124020A20FFF7E3FFA0\n" 
+"6210BDDFF88813496A814201DA0120704700207047DD49\n" 
+"896A884201DA012070470020704740F2DD52904201DB40\n" 
+"F2DC500A2901DA0A2102E0652900DB64210818401D0A21\n" 
+"90FBF1F0C0B2D04948628862704780B500F004F8CB4801\n" 
+"21C17701BD0FB587B0C820019007A883B069460CC80CC1\n" 
+"0CC80CC10EBC02A8FFF7E9F8C64802A91022D5F7D2FB0A\n" 
+"20019007A883B069460CC80CC10CC80CC10EBC02A8FFF7\n" 
+"D7F8BE4802A91022D5F7C0FBBC4807A91022D5F7BBFBBB\n" 
+"4807A91022D5F7B6FB0BB000BD00BF1FB5B04CE07F0028\n" 
+"02D001280ED01FBD0020A061201D00A91022D5F7A4FB02\n" 
+"202070012084F82000E0771FBD201D00A91022D5F798FB\n" 
+"01202070A069401CA061C72807D10121AB20FFF7EEF800\n" 
+"21AB20FFF7C0F8A069C82809DB0020A0610121AB20FFF7\n" 
+"E1F80021AB20FFF7B3F8012084F820001FBD1FB5934CE0\n" 
+"7F002803D0012084F82000F19403304C850003E000A80F\n" 
+"C800F037F800A80FC800F00AF8607F002805D0206B2928\n" 
+"02DBBDE81F40C9E01FBD1FB5854CE07F012804D002280D\n" 
+"D0042817D01FBD201D00A91022D5F74EFB01202070A069\n" 
+"401CA0611FBD0020A061201D00A91022D5F741FB022020\n" 
+"700120E0771FBD042020700020E077012084F820001FBD\n" 
+"FFB585B07048016B491C016305A883B069460CC80CC10C\n" 
+"C80CC10EBC01A800F025F805A883B069460CC80CC10CC8\n" 
+"0CC10EBC01A800F03BF8694C94E80F00FFF73BF8054662\n" 
+"4E654F97E80F00FFF734F88542304604DA21461022D5F7\n" 
+"05FB03E039461022D5F700FB09B0F0BD0EB430B588B004\n" 
+"46574802900BA882B069460CC80CC10CC80CC10CBCC821\n" 
+"03A800F030F8524D284603A91022D5F7E6FA2046294610\n" 
+"22D5F7E1FA08B030BC5DF810FB0EB430B588B004464848\n" 
+"02900BA882B069460CC80CC10CC80CC10CBC0A2103A800\n" 
+"F00FF8434D284603A91022D5F7C5FA204629461022D5F7\n" 
+"C0FA08B030BC5DF810FB0CB47FB504460D460C9E324608\n" 
+"992846FFF77EFE0090321D09992846FFF778FE019006F1\n" 
+"0C020B992846FFF771FE039006F108020A992846FFF76A\n" 
+"FE0290204600A91022D5F798FA04B070BC5DF80CFB70B5\n" 
+"82B00020ADF80000214C94E80F00FEF758FF401D1C4DFF\n" 
+"2802DDFF20A87700E0A877A0208DF8000000AE686A7070\n" 
+"70782074022300AA72210720DBF711FB002801D1002076\n" 
+"BDA1208DF80000A87F7070022300AA72210720DBF702FB\n" 
+"002801D1002076BD8021A320FEF7BEFF3C21A220FEF7BA\n" 
+"FF03480121817700202863084676BDB45C8800805C8800\n" 
+"4C5D8800385D8800F85C8800185D8800085D8800285D88\n" 
+"00233E445F6C6F6E675F67657374757265203A20256400\n" 
+"0000233E525F6C6F6E675F67657374757265203A202564\n" 
+"0000000120DAF711BF00000749086808B1002070470648\n" 
+"C008C00008600549C908C900091A0160704700BF4C8589\n" 
+"0057AA890050EA8900044B9B689861DA6041F004001874\n" 
+"D2F7AEBE00BF1C27880070B506460024D2F777FC104D68\n" 
+"78401C6870306840B96878401E6870C0B208B9D2F764FC\n" 
+"204670BD3068C068017C490705D5C1682A6A891A0129B8\n" 
+"BF0124D2F7C2FD30680028EFD1E5E700BF1C27880010B5\n" 
+"0446094806F0E9FC0068010018BF8047074806F0E2FC00\n" 
+"68F0F7D9FD2046BDE81040F0F7D4BD00000000C02D8800\n" 
+"C82D880038B50446DFF8E4520020286505206865002028\n" 
+"646864A864E8649FEDB20B85ED040B85ED060B85ED080B\n" 
+"85ED0A0B85ED0C0B85EDF19403C04F85000E0B6866A866\n" 
+"05F16C00A8654FF4B6720021E3F7F8FB0C2200212846E3\n" 
+"F7F3FB94ED020AB1EE401A94ED010AF1EE400A94ED000A\n" 
+"05F1440105F1400006F076FD012032BD2DE9F04D2DED06\n" 
+"8B0E46DFF868720168396090ED010AB1EE400A87ED010A\n" 
+"90ED020AB1EE400A87ED020A1E223946B86D05F07DFE79\n" 
+"6D4A1EB86D3B6D934227DA1E22591C09B205F09BFE10EE\n" 
+"100AE4F721FCC7E90A011E22386D411C09B2B86D05F0AC\n" 
+"FE10EE100AE4F714FCC7E90C011E22386D411C09B2B86D\n" 
+"05F0BDFE10EE100AE4F707FCC7E90E01386D401C72E023\n" 
+"D11E2209B205F073FE10EE100AE4F7F9FBC7E90A011E22\n" 
+"796D09B2B86D05F085FE10EE100AE4F7EDFBC7E90C011E\n" 
+"22796D09B2B86D05F097FE10EE100AE4F7E1FBC7E90E01\n" 
+"786D4DE01E2209B205F03FFEF8651E220021B86D05F039\n" 
+"FE8046C7F86080FC6D2068E4F7CCFB02460B46D7E90A01\n" 
+"F1F704FC82468B46D8F80000E4F7C0FB52465B46F5F73C\n" 
+"FCC7E90A016068E4F7B7FB02460B46D7E90C01F1F7EFFB\n" 
+"82468B46D8F80400E4F7ABFB52465B46F5F727FCC7E90C\n" 
+"01A068E4F7A2FB02460B46D7E90E01F1F7DAFB04460D46\n" 
+"D8F80800E4F796FB22462B46F5F712FCC7E90E01786DE4\n" 
+"F7A3FA41EC180BD7E90A0153EC182BF1F783FC41EC190B\n" 
+"87ED049BD7E90C0153EC182BF1F779FC41EC1A0B87ED08\n" 
+"ABD7E90E0153EC182BF1F76FFC41EC100B87ED060BE4F7\n" 
+"93FB01EE100AB0EE418A51EC1A0BE4F78BFB00EE900AB0\n" 
+"EE481AB0EE608AF0EE418A51EC190BE4F77FFB00EE100A\n" 
+"B0EE681AF0EE480A07F14C0107F1480006F075FC386D40\n" 
+"1C38659FED190B87ED040B87ED080B87ED060B396CB86C\n" 
+"00F017F804467C66796CF86C00F011F8B86604F1280151\n" 
+"2902D22830512802D30120307001E000203070BDEC068B\n" 
+"BDE8F08D421AB52A04DB081A00F5B470424205E012F1B4\n" 
+"0F02DA00F5B470421A1046704700000000000000000000\n" 
+"082E880038B5DFF8004694F82000012801D1002032BD20\n" 
+"4606F061FE204605F0C3FE0020E08306F05DFEDFF8E455\n" 
+"E564002060651422014604F13000E3F787FA20220021DF\n" 
+"F8D805E3F781FA20220021DFF8B005E3F77BFA0020A065\n" 
+"024605E0D42101FB00510A718A71401C0128F7DB012060\n" 
+"6400F011F8DFF89005012180F83D10084606F0AAFD0020\n" 
+"A064207706F0CDFD012084F8200032BD70B401460023DF\n" 
+"F8642511E0D42504EB8304A46805FB040401262671D66D\n" 
+"05FB0300807904EB8000006A3043D0655B1CDFF8400500\n" 
+"EB4114DFF83C052579F1940350538500AB42E4DB294651\n" 
+"77237F1376002903D0DFF834355971D06470BC7047DFF8\n" 
+"10154A6D01EB82031863501C4865052803D3401E486500\n" 
+"207047012070470020DFF8F01402468A654A6D002A0BD0\n" 
+"0B6B8B65521E4A6504E001EB8002536B1363401C0428F8\n" 
+"DB704738B50024DFF8C454287F06F07CFD02E000F03CF8\n" 
+"641C287E8442F9D331BD70B50C460025DFF8A464F17F4A\n" 
+"1CF277332901DB2946F177B17F032915DB016871624168\n" 
+"B1628068F062284606F059FD307F401C3077317EC0B288\n" 
+"4203D328463077FFF7CEFFFFF7B7FFB07F411CB1776528\n" 
+"01DB3220B077B06D002805D0207001250A2801D10A2020\n" 
+"70284670BD2DE9F84300200146DFF83C440BE0D42202FB\n" 
+"01421379002B04D0937902EB8302126A1043491C0129F1\n" 
+"DB06F03FFDDFF80C5406F061FD28650020A865064640E0\n" 
+"D42202FB06F707EB040898F80400002836D0304600F04B\n" 
+"F8D5F8509098F8060008EB8000006AD9F8001008421FD0\n" 
+"98F8060008EB8000406B002806D098F8060008EB800040\n" 
+"6BFFF750FF98F80600401C88F8060098F80510C0B28842\n" 
+"07D3DFF8B403395940F82610002088F80600D9F8400000\n" 
+"2804D0D9F800100843C9F80000761C012EBCDB286D0068\n" 
+"06F017FDA86C411CA964B0F57A7F01D90020A864D648DD\n" 
+"492022BDE8F843D4F7F1BE000070B52DED068BD2490C6D\n" 
+"00222264D422D14B02FB00308279C2EBC20300EB830500\n" 
+"EB8206306A022846D1A86C012843D1286D022808D1606B\n" 
+"032803DAE86D401CE86501E00020E865286D042808D160\n" 
+"6B052803DAE86D401CE86501E00020E865286D082808D1\n" 
+"606B082803DBE86D401CE86501E00020E865286D102808\n" 
+"D1606B102803DBE86D401CE86501E00020E865E86C1422\n" 
+"90FBF2F0EA6D824206DA2068326A90432060306A206405\n" 
+"E00020E8652068326A10432060306A012840F0C48095F8\n" 
+"4800C00740F1BF80E86C420720D591ED0B0AF9EE000AB4\n" 
+"EE600AF1EE10FA0AD540F22310A1699131814204D3E169\n" 
+"9131814280F09E800020E865E86D052880F29C80206831\n" 
+"6A88432060306A20649AE0820710D591ED0B0AB5EE400A\n" 
+"F1EE10FAE9DDA0695A30B528E5D2E0695A30B528C0F07F\n" 
+"80DFE7C006DFD591ED0A9AD1ED09AAD1ED0B9A2AEEAA0A\n" 
+"09EE090A09EEA90A10EE100AE4F706F941EC100BF5F7F6\n" 
+"F951EC100BE4F726F90AEE100A9FED7A8B8AEE8A0A10EE\n" 
+"100AE4F7F4F841EC100B02F0A2F953EC102B51EC180BE4\n" 
+"F718F8E4F710F90AEE900A89EE0A0A10EE100AE4F7E0F8\n" 
+"41EC100B02F08EF9F19403E056850053EC102B51EC180B\n" 
+"E4F704F8E4F7FCF809EE100A89EE8A0A10EE100AE4F7CC\n" 
+"F841EC100B02F07AF953EC102B51EC180BE3F7F0FFE4F7\n" 
+"E8F808EE100A1AEE900AE4F7BAF821F0004100225A4BF1\n" 
+"F70CF8BFF47AAF19EE100AE4F7AEF821F000410022544B\n" 
+"F1F700F8BFF46EAF18EE100AE4F7A2F821F00041012250\n" 
+"4BF1F70CF83FF662AFE86D401CE8655FE70020E8652068\n" 
+"316A08432060BDEC068B70BD000010B43F49CA68002A04\n" 
+"D14FF48062CA600A614A6191ED040AB8EE400AD1ED0A0A\n" 
+"20EE200ADFED3E0A80EE200AD1ED010AF8EE600A30EE20\n" 
+"0ABDEEC00A10EE102A91ED050AB8EE400AD1ED0B0A20EE\n" 
+"200ADFED330A80EE200AD1ED020AF8EE600A30EE200ABD\n" 
+"EEC00A10EE103AB0F9024000EB440491ED030AB8EE400A\n" 
+"D1ED090A20EE200ADFED260A80EE200AD1ED000AF8EE60\n" 
+"0A30EE200ABDEEC00A10EE101AA180B0F9021000EB4101\n" 
+"CA80B0F9021000EB41010B814188491C418009B21E2901\n" 
+"DB1D214180012010BC704710B5002006E0D4210C4A01FB\n" 
+"002100220A71401C0128F6DB064C00206064607706F01C\n" 
+"FB0020E06584F8200010BD0000ACC888002CC88800A024\n" 
+"8800CC23880046DF617EDCA54C40000024408CC8880000\n" 
+"005440C3F51C4110B5594C002020606060A06020620520\n" 
+"60620020A061E061A062E06220636063A063E0636064A0\n" 
+"6404F14C0020644FF4B6720021E2F775FF0C22002104F1\n" 
+"0C00BDE81040E2F76DBF38B50C46464DA96C491CA96400\n" 
+"F018F8002803D0686C401C686401E000206864A86C0F28\n" 
+"0ADA686C0B2803DB01202070022032BD00202070012032\n" 
+"BD032032BD70B505460026364C94ED000AB5EE400AF1EE\n" 
+"10FA15D1D4ED010AF5EE400AF1EE10FA0ED1D4ED020AF5\n" 
+"EE400AF1EE10FA07D12868206068686060A868A0603046\n" 
+"70BDD5ED000A30EEC00AD5ED010A94ED011A70EEC10A95\n" 
+"ED021AD4ED021A31EE611AB5EE400AF1EE10FA01DAB1EE\n" 
+"400AF5EE001AB4EE610AF1EE10FA1BD5F5EE400AF1EE10\n" 
+"FA01DAF1EE600AB5EE000AF4EE400AF1EE10FA0DD5B5EE\n" 
+"401AF1EE10FA01DAB1EE411AB4EE401AF1EE10FA01D501\n" 
+"2603E00FF22C00DAF7E7FC2868206068686060A868A060\n" 
+"304670BD044800210160416081604164816470470000D8\n" 
+"5E88002323204756206661696C000010B500F032FB00F0\n" 
+"98FB00240DE020469FED151ADFED140A9FED130A00F0B4\n" 
+"FE2146052000F0BDFE641C1E2CEFDBDFF8540D00210170\n" 
+"016341638163C163016441648164052141710A21017100\n" 
+"2141708170C162F19403705A85000A2181710021C17010\n" 
+"BDDFF8241DC87070470000000000002DE9F0472DED048B\n" 
+"B0EE408AF0EE608AB0EE419ADFF8244DE078012801D100\n" 
+"2500E0052526781E2E09DA304600F076FE3146284600F0\n" 
+"7FFE701C207027E0002616E0DFF8FC1C01EB8602304692\n" 
+"ED3D1AD2ED1F0A01EB860191ED010A00F05EFE3146DFF8\n" 
+"E00C3018407800F064FE761C1D2EE6DB1D20B0EE491AF0\n" 
+"EE680AB0EE480A00F04BFE1D21284600F054FEDFF8B89C\n" 
+"032D08DA606B401C606348450BD3DFF8A80C606307E020\n" 
+"6B401C2063484502D3DFF8980C206300F0B2FDB0EE408A\n" 
+"00F076FDF0EE408A00F010FBD4F830809FEDA09B4046E3\n" 
+"F7BBFD53EC192BE3F7C5FDF0F7BDFE0646E76B3846E3F7\n" 
+"B0FD53EC192BE3F7BAFDF0F7B2FE824620790A2802D014\n" 
+"2846D05CE09FED940AB4EE408AF1EE10FA0CD5F4EE408A\n" 
+"F1EE10FA07D5032D05DA14202071780800F0F0FB48E078\n" 
+"1CE063484502D3DFF8100CE063042D3FDB00F064FAE06A\n" 
+"01283AD1B6F57A7F37D994ED090AB5EE400AF1EE10FA01\n" 
+"DCB1EE400ADFED7E0AB4EE600AF1EE10FA0DDA94ED0A0A\n" 
+"B5EE400AF1EE10FA01DCB1EE400AB4EE600AF1EE10FA19\n" 
+"DB0020E06216E09FED710AB4EE408AF1EE10FA04DAF4EE\n" 
+"408AF1EE10FA02DB0A20207107E0A06B401CA063484502\n" 
+"D3DFF88C0BA06300206070607902280AD0C0F05B810428\n" 
+"1BD074D3062800F00381C0F0E68051E1032D0FDA606B01\n" 
+"2802D12079A07149E10A2840F047810420607100F0F5FB\n" 
+"002020633FE1002060633CE1E06A012832D1207900F049\n" 
+"F901282DD140F2E930864201D2002E22D1824502D2BAF1\n" 
+"000F1DD194ED090AB5EE400AF1EE10FA01DCB1EE400ADF\n" 
+"ED460AB4EE600AF1EE10FA10D594ED0A0AB5EE400AF1EE\n" 
+"10FA01DCB1EE400AB4EE600AF1EE10FA02D5A078607001\n" 
+"E00020E062E06A002814D1B6F5C87F01D8002E08D1A078\n" 
+"002808D0BAF1FB0F05D2BAF1000F02D0A078607003E020\n" 
+"7900F046F96070032060716078A070002020636063A063\n" 
+"E06300F01DFBE2E0042D17DBB8F1010F02D100F0FFF9DA\n" 
+"E0B8F1060FC0F0D7800021404600F0D3FAA078032802D1\n" 
+"0020E06262E000F0D9FCE0625EE00020206320790A2853\n" 
+"D1E06B0A28C0F0C080002100F0BDFAA07800F0C8FCE062\n" 
+"94ED130AB5EE400AF1EE10FA02DDF0EE400A01E0F1EE40\n" 
+"0A9FEDB71AF4EE410AF1EE10FAC0F2A580D4ED140AF5EE\n" 
+"400AF1EE10FA0BDDF0EE601A0AE000BF00000000000034\n" 
+"409A99193F00002042F1EE601AF4EE411AF1EE10FAC0F2\n" 
+"8A80F5EE400AF19403005E8500F1EE10FA01DCF1EE600A\n" 
+"B5EE400AF1EE10FA01DCB1EE400AF4EE400AF1EE10FA76\n" 
+"D50520607100F096F90020A0636FE00020E0636CE0B8F1\n" 
+"060F04D3022060710020606364E0A06B012805D1E06B00\n" 
+"F0A3FA2079A0715BE0052859D3606B052856D306206071\n" 
+"0020206351E0207914284ED1E06A01282DD140F2E93086\n" 
+"4201D2002E22D1824502D2BAF1000F1DD194ED090AB5EE\n" 
+"400AF1EE10FA01DCB1EE400ADFEDB20AB4EE600AF1EE10\n" 
+"FA10D594ED0A0AB5EE400AF1EE10FA01DCB1EE400AB4EE\n" 
+"600AF1EE10FA02D5A078607001E00020E062E06A002811\n" 
+"D140F29110864201D2002E04D1824505D2BAF1000F02D0\n" 
+"A078607003E0A07900F060F86070032060716078A07000\n" 
+"2020636063E063A0636078012801D1012008E0022801D1\n" 
+"022004E0032801D1032000E00020BDEC048BBDE8F08780\n" 
+"B52DED048B00210A2808D1DFF85C0890ED100A90ED118A\n" 
+"D0ED128A11E0142808D1DFF8480890ED150A90ED168AD0\n" 
+"ED178A06E09FED810A9FED808ADFED7F8A032103291CDA\n" 
+"9FEDD59A00F035FCB4EE490AF1EE10FA11D5B0EE480A00\n" 
+"F02CFCB4EE490AF1EE10FA08D5B0EE680A00F023FCB4EE\n" 
+"490AF1EE10FA01D4012000E00020BDEC048B02BD00210A\n" 
+"280AD1DFF8DC07D0ED100A90ED111AD0ED121A9FED670A\n" 
+"13E014280AD1DFF8C007D0ED150A90ED161AD0ED171A9F\n" 
+"EDC50A06E0DFED5F0A9FED5E1ADFED5D1A032103293EDA\n" 
+"B4EE600AF1EE10FA0BD59FEDBE2AB4EE421AF1EE10FA04\n" 
+"D5F4EE421AF1EE10FA2AD4B4EE600AF1EE10FA0BD59FED\n" 
+"B62AB4EE421AF1EE10FA04DBF4EE421AF1EE10FA0BDAB4\n" 
+"EE600AF1EE10FA08D59FEDCF1AF4EE411AF1EE10FA01DB\n" 
+"01210EE0B4EE600AF1EE10FA08D59FEDC90AF4EE401AF1\n" 
+"EE10FA01D5022100E0032108467047DFF8180700218160\n" 
+"C160016170470100C03F10B52DED068BDFF8004794ED05\n" 
+"0AB5EE400AF1EE10FA13D194ED060AB5EE400AF1EE10FA\n" 
+"0CD194ED070AB5EE400AF1EE10FA05D1A0686061E068A0\n" 
+"612069E06194ED028A94ED050A38EE400A00F0F6F8F0EE\n" 
+"408A94ED039A94ED060A39EE400A00F0ECF8F0EE409A94\n" 
+"ED04AA94ED070A3AEE400A00F0E2F8F0EE40AA94ED080A\n" 
+"30EE280A00F0DAF884ED080A94ED090A30EE290A00F0D2\n" 
+"F884ED090A94ED0A0A30EE2A0A00F0CAF884ED0A0A84ED\n" 
+"058A84ED069A84ED07AABDEC068B10BDDFF84806002101\n" 
+"624162816241618161C161704700000000204200000000\n" 
+"F8B52DED048B84B01D2100A800F000FB9DED000AB5EE40\n" 
+"0AF1EE10FAF194039061850001DCB1EE400ADFEDAF0AB4\n" 
+"EE600AF1EE10FA01D50020009000AE96ED010AB5EE400A\n" 
+"F1EE10FA01DCB1EE400AB4EE600AF1EE10FA01D5002070\n" 
+"6096ED020AB5EE400AF1EE10FA01DCB1EE400AB4EE600A\n" 
+"F1EE10FA01D50020B0609FED9B8B9FED9C9BDFF8D075B8\n" 
+"68E3F74EFB04460D460098E3F749FB53EC192BE3F773FA\n" 
+"0022DFF8D435F0F73EFC53EC182BE3F76AFA22462B46F4\n" 
+"F7B8FBE3F75EFB00EE100A87ED020A00F04EF887ED020A\n" 
+"F868E3F72BFB04460D467068E3F726FB53EC192BE3F750\n" 
+"FA0022DFF89035F0F71BFC53EC182BE3F747FA22462B46\n" 
+"F4F795FBE3F73BFB00EE100A87ED030A00F02BF887ED03\n" 
+"0A3869E3F708FB04460D46B068E3F703FB53EC192BE3F7\n" 
+"2DFA0022DFF84835F0F7F8FB53EC182BE3F724FA22462B\n" 
+"46F4F772FBE3F718FB00EE100A87ED040A00F008F887ED\n" 
+"040A04B0BDEC048BF1BD9A99993EDFED640AB4EE600AF1\n" 
+"EE10FA04DBDFED620A30EE200A7047DFED600AB4EE600A\n" 
+"F1EE10FA03D5DFEDCD0A30EE200A70479A9999BECCCCCC\n" 
+"BDCDCCCC3D10B49FEDC80ADFEDC70A1F2801D31E2000E0\n" 
+"C0B20022DFF8A0440EE0C2F11D03DBB204EB830393ED1E\n" 
+"1A30EE010A93ED3C1A70EE810A521CD2B2824209DA0029\n" 
+"02D1C2F11D03EBE70129E7D1C2F11803E6E701EE100AB8\n" 
+"EE411ADFF8580480EE010A80ED130A80EE810A80ED140A\n" 
+"10BC7047DFF84004002141658165C1657047CDCCCC3ECC\n" 
+"CCCCBE30B49FEDA60ADFEDA50A9FEDA41A1F2801D31D20\n" 
+"01E0401EC0B200210DE030EE210A02EB8302D2ED1E1A70\n" 
+"EEA10AD2ED3C1A31EE211A491C89B2DFF8CC4381422ADA\n" 
+"22781E2A03DA521A531EDBB202E0C1F11D03DBB2DFF8D8\n" 
+"2352F8235001EE905A02EB830555F8045C02EE105A71EE\n" 
+"C22A9FEDC73AF4EE432AF1EE10FACEDBF5EE401AF1EE10\n" 
+"FAC9DDB5EE402AF1EE10FAC4D50B29C2DB01EE901AF8EE\n" 
+"611A80EE210A84ED150A80EEA10A84ED160A81EE210A84\n" 
+"ED170A30BC70470BD7233DF8C1631ADCA54C4000000000\n" 
+"00003440010034430000B4C3000034C3F0B4DFEDC92AB0\n" 
+"EE620AB0EE622ADFED6C0A9FED6B1ADFED6A1ACD480178\n" 
+"1E2900DB1E21026B914204D201EBD1725210D2B201E052\n" 
+"08D2B200230DE0B1EE633AB4EE443AF1EE10FA05DB71EE\n" 
+"A31AB7EE003A32EE032A5B1CDBB2934280F29F80CC1A64\n" 
+"1EE4B225466E1EF6B2B94D55F8267003EE107A05EB8407\n" 
+"D7ED003A05EB860797ED004A73EEC43AF5EE403AF1EE10\n" 
+"FA05EB8407D7ED003A02DD33EEC33A01E033EE633A05EB\n" 
+"8606D6EDF19403206585001E3A97ED1E4AD6ED1E4A34EE\n" 
+"644AB5EE404AF1EE10FA97ED1E4A02DD74EE633A01E073\n" 
+"EEC43A06F1780C9CED1E4A07F17806D6ED1E4A9CED1E5A\n" 
+"74EEC54AF5EE404AF1EE10FAD6ED1E4A02DD34EEC44A01\n" 
+"E034EE644ADFED984AB4EE643AF1EE10FA09DBF4EE643A\n" 
+"F1EE10FA04DBB4EE644AF1EE10FA3CDA55F8244003EE10\n" 
+"4AB5EE403AF1EE10FA02DDF0EE433A01E0F1EE433A9FED\n" 
+"894AF4EE443AF1EE10FA05DB70EE830AB7EE003A30EE03\n" 
+"0A97ED1E3AB5EE403AF1EE10FA02DDF0EE433A01E0F1EE\n" 
+"433AF4EE443AF1EE10FA05DB31EE031AB7EE003A72EE83\n" 
+"2AD6ED1E3AF5EE403AF1EE10FA7FF752AFB0EE633A50E7\n" 
+"80EE800A80ED100A81EE220A80ED110A81EE820A80ED12\n" 
+"0AF0BC704700000000B4430000000010B52DED028B9FED\n" 
+"688A002426E0C4F11D00C0B25E4901EB800202F1780393\n" 
+"ED1E0AD2ED1E0A51F8200001EE100A21EE011A00EEA01A\n" 
+"00EE001A11EE100AE3F70FF941EC100BF4F7FFF951EC10\n" 
+"0BE3F72FF900EE100A38EE008A641C062CD6DBB1EE080A\n" 
+"88EE000ABDEC028B10BD000010B52DED028B9FED4C8ADF\n" 
+"ED4B8A002428E0C4F11D00C0B2414901EB800202F17803\n" 
+"93ED1E0AD2ED1E0A51F8200001EE100A21EE011A00EEA0\n" 
+"1A00EE001A11EE100AE3F7D5F841EC100BF4F7C5F951EC\n" 
+"100BE3F7F5F800EE100A38EE008A40EE008A641C062CD4\n" 
+"DBB1EE080AC8EE000A88EE800A00EEE00ABDEC028B10BD\n" 
+"00009A99993E0121022812D19FED2C0A2348D0ED130AF4\n" 
+"EE400AF1EE10FA1CDBD0ED140AF4EE400AF1EE10FA15DB\n" 
+"002113E0012811D1194890ED130AFEEE000AB4EE600AF1\n" 
+"EE10FA07D590ED140AB4EE600AF1EE10FA00D500210846\n" 
+"7047104A52F82130036002EB81018A6F4260D1F8F01081\n" 
+"607047BD3786355CC38800C0B2084901EB800282ED000A\n" 
+"01EB8000C0ED1E0A80ED3C1A7047034A885470475CC388\n" 
+"00BCC3880024C5880041420F0040420F000100A040CDCC\n" 
+"4C3D000000000100003F00408F40B5EE400AF1EE10FA03\n" 
+"D5FFEE000A20EE200A7047704780B506F0E1F880B201F0\n" 
+"C9FF01BD10B504001000C9B2C0B201F073FFFA2C06D0B4\n" 
+"F5FA7F07D0B4F57A7F08D00BE0002001F09DFF0AE00120\n" 
+"01F099FF06E0022001F095FF02E0032001F091FF10BD80\n" 
+"B54FF4804102280AD0042808D0082806D0102804D05FF0\n" 
+"804090FBF1F105E05FF0005292FBF1F101FB00F1882001\n" 
+"F02EFB002002BD80B5B0F5FA6F0DD0B0F57A7F0AD0B0F5\n" 
+"FA7F07D0FA2805D05FF07A71882001F051F906E04FF400\n" 
+"4101FBF19403B068850000F1882001F049F9002002BD10\n" 
+"B508000024DFF8901306F0F9F9002802D02024200086E0\n" 
+"06F015FA0400DFF87C030021016006F03AFF00280BD006\n" 
+"F036FF9923DFF86823DFF86813FFF782FF06F02DFF6FE0\n" 
+"07F0E0FC00280BD007F0DCFC9A23DFF84823DFF84813FF\n" 
+"F772FF07F0D3FC5FE007F035FF00280BD007F031FF9B23\n" 
+"DFF82823DFF82813FFF762FF07F028FF4FE008F0F0FC00\n" 
+"280BD008F0ECFCA023DFF80823DFF80813FFF752FF08F0\n" 
+"E3FC3FE008F0E5FF00280BD008F0E1FFA123DFF8E822DF\n" 
+"F8E812FFF742FF08F0D8FF2FE00AF069F800280BD00AF0\n" 
+"65F8A223DFF8C822DFF8C812FFF732FF0AF05CF81FE00A\n" 
+"F00CFB00280BD00AF008FBA723DFF8A822DFF8A812FFF7\n" 
+"22FF0AF0FFFA0FE00220FFF744FF4FF4FA60FFF75BFF5F\n" 
+"F00071882001F087FA06F0C5F90400200010BD00B52DED\n" 
+"028B81B008EE100A01F0B9FEF8EEC80A20EE800ADFED41\n" 
+"0A20EE200ABDEEC00A10EE100A01F0A2F8002001B0BDEC\n" 
+"028B00BD000000B52DED028B81B008EE100A01F09DFEF8\n" 
+"EEC80A20EE800ADFED330A20EE200ABDEEC00A10EE100A\n" 
+"01F097F8002001B0BDEC028B00BD000000B52DED028B81\n" 
+"B008EE100A01F081FEF8EEC80A20EE800ADFED250A20EE\n" 
+"200ABDEEC00A10EE100A01F0CBF9002001B0BDEC028B00\n" 
+"BD000000B52DED028B81B008EE100A01F065FEF8EEC80A\n" 
+"20EE800ADFED170A20EE200ABDEEC00A10EE100A01F04E\n" 
+"F801F055FEF8EEC80A20EE800ADFED0F0A20EE200ABDEE\n" 
+"C00A10EE100A01F04FF801F045FEF8EEC80A20EE800ADF\n" 
+"ED070A20EE200ABDEEC00A10EE100A01F08FF9002001B0\n" 
+"BDEC028B00BD00000024744980B54FF47A720023D1F710\n" 
+"FC01F06CF9002002BD2DE9FE4F8B4616009A460E9F5FF0\n" 
+"00085FF00009DDE90C45002807D022002B0001F0EEFA00\n" 
+"2801D15FF00109BBF1000F09D022002B000021584601F0\n" 
+"96FA002801D15FF00109002E21D096ED000ABEEEED0A8D\n" 
+"ED000A96ED010ABEEEED0A8DED010A96ED020ABEEEED0A\n" 
+"8DED020A22002B0057F0200100A801F0E7FA002802D15F\n" 
+"F0010903E05FF020085FF00009BAF1000F0FD022002B00\n" 
+"4FF4A041504601F066FB002802D15FF0010903E05FF020\n" 
+"085FF00009B9F1000F02D001F045FC80464046BDE8FE8F\n" 
+"30B585B004000A0000A9200007F024FC05001022210001\n" 
+"A8DDF7F9FE029830F00100029003980390102201A92000\n" 
+"DDF7EEFE280005B030BD30B585B004000A0000A9200007\n" 
+"F0B9FB05001022210001A8DDF7DDFE029830F001000290\n" 
+"0398F19403406C85000390102201A92000DDF7D2FE2800\n" 
+"05B030BD0000606186005CE78800146186002C61860080\n" 
+"B501F09FFB002002BD80B501F086FB002002BD80B501F0\n" 
+"8DFB002002BD000010B5DFF860494FF4FA7200212046E1\n" 
+"F798FDDFF88409C4F8D80110BD2DE9F8432DED028BB0EE\n" 
+"408ADFF83849B4F8D2114118A4F8D21104F2D2156A8880\n" 
+"1868802879192803DA401C287184ED768A9FED9A0AB4EE\n" 
+"408AF1EE10FAC0F2E880D4ED760AF4EE400AF1EE10FAC0\n" 
+"F2E08028791928C0F2DC8089B2C329C0F2D88004F58C76\n" 
+"307C04EB800080ED148A84ED768A04F5EC77707C002804\n" 
+"D187ED018A87ED028A3BE097ED010ADFED840A20EE200A\n" 
+"10EE100AE2F7AEFD8046894618EE100AE2F7A8FD0022DF\n" 
+"F8A038E2F7D1FC42464B46F3F71FFEE2F7C5FD08EE100A\n" 
+"87ED018A97ED020ADFEDBC0A20EE200A10EE100AE2F78F\n" 
+"FD8046894618EE100AE2F789FD4FF00042DFF89438E2F7\n" 
+"B1FC42464B46F3F7FFFDE2F7A5FDB8606888B0F57A7F1A\n" 
+"DD94F87C0104EB8000B968C0F82C1194F87C01401C84F8\n" 
+"7C01C0B2142802D1002084F87C0104F5BE704178142901\n" 
+"DA491C417000206880327C1046717C14291DD1431C142B\n" 
+"00D1002304EB830394ED460AD3ED140A30EE600A84ED46\n" 
+"0A93ED140AD6ED010A40EE400AC6ED010A96ED020AD3ED\n" 
+"320A30EE600A86ED020A04EB800094ED460AD0ED140A30\n" 
+"EE200A84ED460A90ED140AD6ED010A40EE000AC6ED010A\n" 
+"04F1500000F060FA307C04EB800080ED320AD6ED020A30\n" 
+"EE800A86ED020A307CB96844F82010307C04EB4000B4F8\n" 
+"D211A0F8A010707C142801DA401C7074707C00EE100AB8\n" 
+"EE400AD6ED020A80EE800A86ED030A307C401C3074C0B2\n" 
+"142801D1002030740020A4F8D201BDEC028BBDE8F18380\n" 
+"B5DFF8280790F87C114A1E00D51432891F00D5143100EB\n" 
+"820292ED4B0A00EB8100D0ED4B0A30EE600A10EE100AE2\n" 
+"F7D6FC21F00041E2F7FAFC00EE100A01BD80B5DFF8E806\n" 
+"90F87C114A1E00D51432891F00D5143100EB820292ED32\n" 
+"0A00EB8100D0ED320A30EE600A10EE100AE2F7B6FC21F0\n" 
+"0041E2F7DAFC00EE100A01BD00000100FA436666663F2D\n" 
+"E9F8432DED068B044600259FED438A042C04D1DFED428A\n" 
+"9FED429A03E0DFED428A9FED429ADFF87C6606F5927778\n" 
+"7914286AD196F87D01072866DBFFF79BFFF0EE409AFFF7\n" 
+"B7FFB0EE40AAF4EE698AF1EE10FA2ED5D6F82401E2F77B\n" 
+"FC21F0004102460B469046994619EE100AE2F771FC4246\n" 
+"4B46EFF7C5FB1BD2D6F82401E2F768FC21F00041DFF820\n" 
+"26F19403D06F8500DFF82036EFF7B8FB0ED29FED260AB4\n" 
+"EE40AAF1EE10FA07D5224679793879401E00F0EEF90546\n" 
+"04E02846C6F8E401C6F8E801022D23D13879411E00D514\n" 
+"317A79801A00D5143006EB810191ED000A06EB8000D0ED\n" 
+"000A30EE600AFFEE000A20EE200A10EE100AE2F72FFCDF\n" 
+"F8BC25DFF8CC35EFF727FDE2F74FFC08EE100AB0EE480A\n" 
+"BDEC068BBDE8F1830000CDCC4C3F00000000CDCC4C3EA6\n" 
+"9B443BCDCC4C3D6F12033B0BD7A33C2DE9F0472DED088B\n" 
+"82B0B0EE409A8246894600242546DFEDCC8A9FEDCB8ADF\n" 
+"EDCA9A5FFA8AFABAF1040F04D19FED98AADFED98AA03E0\n" 
+"9FEDC5AADFEDC5AADFF8306506F5927898F80500142840\n" 
+"F0198196F87D010728C0F21481B5EE409AF1EE10FA40F3\n" 
+"0E81FFF7ECFEB0EE40BAFFF708FFF0EE40BA06F5E877B4\n" 
+"EE4BAAF1EE10FA3CD5D6F82401E2F7CAFB21F000410246\n" 
+"0B46CDE900231AEE900AE2F7C0FBDDE90023EFF714FB29\n" 
+"D2D6F82401E2F7B7FB21F00041DFF8C024DFF8C034EFF7\n" 
+"07FB1CD29FEDA30AF4EE40BAF1EE10FA15D597ED050AB5\n" 
+"EE400AF1EE10FA01D1224602E0B869A9EB0002534698F8\n" 
+"051098F80400401E00F0ADF9044602E020467861B86100\n" 
+"2C00F0B58097ED050AB5EE400AF1EE10FA04D1C7F81890\n" 
+"4FF07E507861284606E006EB4101B1F8A0104D19ADB240\n" 
+"1C80B201461429F4DB2846E2F78FFADFF84024DFF84034\n" 
+"E2F797FAE2F78FFB09EE900A19EE100AE2F761FBDFF82C\n" 
+"24DFF82C34E2F789FAE2F781FB00EE100A29EE809A98F8\n" 
+"0400411E00D5143198F80520801A00D5143006EB810191\n" 
+"ED000A06EB8000D0ED000A30EE600AFFEE000A20EE200A\n" 
+"10EE100AE2F739FBDFF8D023DFF8E033EFF731FCE2F759\n" 
+"FB09EE900AF4EE499AF1EE10FA02DBDFED5E9A11E029EE\n" 
+"090A09EEE90A10EE100AE2F71FFB41EC100BF3F70FFC51\n" 
+"EC100BE2F73FFB08EE900A96F8D00106EB800089EEA80A\n" 
+"80ED600A96F8D001401C86F8D001C0B2142802D1002086\n" 
+"F8D0017878142801DA401C7870002006E006EB800191ED\n" 
+"600A38EE008A401C79780A4680B29042F3D3B2EE040A28\n" 
+"EE000A00EE901AF8EE600A80EE200A10EE100AE2F7E1FA\n" 
+"DFF83823DFF83833E2F709FAE2F701FB09EE900A03E028\n" 
+"4686F8D0017870B0EE690A01E09FED310A02B0BDEC088B\n" 
+"BDE8F087CDCC4C3EA69B443B38B52DED048B9FED2A8A9F\n" 
+"ED290ADFED280ADFED278A00231AE0142C00DB143C01EE\n" 
+"103AB8EEC11A31EE088A50F8244001EE904A30EE210A41\n" 
+"EE210A13FB03F401EE104AB8EEC11A71EE288A5B1CDBB2\n" 
+"F19403607385000C46A34205DA141B1C19641CDDD51434\n" 
+"DEE701EE101AB8EE419A69EE200A48EE400A10EE900AE2\n" 
+"F787FA04460D4629EE280A08EE480A10EE100AE2F77DFA\n" 
+"9E4AA04BF3F7F9FA02460B4620462946EFF771FBE2F799\n" 
+"FA00EE100ABDEC048B31BD00000000CDCC4C3D6F12033B\n" 
+"0BD7A33C2DE9F8432DED088B044689464FF00008002C01\n" 
+"D5143402E0142C00DB143C45462E46042A04D19FED788A\n" 
+"DFED788A03E09FED778ADFED778A2F460CE0B4EE498AF1\n" 
+"EE10FA06D5B4EE689AF1EE10FA01D5761CB6B27F1C4846\n" 
+"FFB23946421E91423EDA201A0818401C01D5143002E014\n" 
+"2800DB1438411C142900DB1439664A02EB810191ED000A\n" 
+"02EB8000D0ED000A30EE609A19EE100AE2F717FA41EC1A\n" 
+"0B9FED6EBB18EE100AE2F70FFA53EC1B2BE2F739F90246\n" 
+"0B4651EC1A0BEFF75DF9BDD218EE900AE2F700FA53EC1B\n" 
+"2BE2F72AF953EC1A2BEFF750F9B0D26D1CADB2B9E70B2E\n" 
+"02DB4FF0010803E00B2D01DB4FF002084046BDEC088BBD\n" 
+"E8F2832DE9F0472DED088B04468A4691464FF00008002C\n" 
+"01D5143402E0142C00DB143C45462E46042B04D19FED38\n" 
+"8ADFED388A03E09FED388ADFED388A2F460CE0B4EE498A\n" 
+"F1EE10FA06D5B4EE689AF1EE10FA01D5761CB6B27F1C50\n" 
+"46FFB23946421E91423EDA201A0818401C01D5143002E0\n" 
+"142800DB1438411C142900DB1439274A02EB810191ED00\n" 
+"0A02EB8000D0ED000A30EE609A19EE100AE2F798F941EC\n" 
+"1A0B9FED2EBB18EE100AE2F790F953EC1B2BE2F7BAF802\n" 
+"460B4651EC1A0BEFF7DEF8BDD218EE900AE2F781F953EC\n" 
+"1B2BE2F7ABF853EC1A2BEFF7D1F8B0D26D1CADB2B9E7B9\n" 
+"F1070F01D20C2000E00A20B04202D24FF0010803E0A842\n" 
+"01D24FF002084046BDEC088BBDE8F08700006F12033B8F\n" 
+"C2F53C6F12833A8FC2753CB46488009A99B93F7B14AE47\n" 
+"E17A843FB81E85EBFCA9F1D24D62503F0492B06F271191\n" 
+"3F51B8BE3F9A9999999999B93F8DEDB5A000407E449999\n" 
+"C93FF7C6B03E000000000000F0BF1FB509F0FFFC212101\n" 
+"601FBD91ED000A03884069F0EE000A20EE200AD1ED010A\n" 
+"B0EE001A60EE810A30EE201AF6EE001A21EE211A82ED00\n" 
+"1A30EE600A121DF6EE000A5B1E20EE200A82ED000A01EB\n" 
+"C30C0830121D11F10801DCED001A91ED002A90ED003A00\n" 
+"1D31EEC20A9CED011AD1ED012AD0ED003A72EE211A71EE\n" 
+"220A43EE001A43EEA01AB6EE002A61EE821A32EEC11AC2\n" 
+"ED001A03EE801A121D03EE601AB6EE000A21EE000A82ED\n" 
+"000A001D121D0831ACF1080C5B1ECED17047038891EDF1\n" 
+"9403F0768500000AD1ED010A406930EE201AF6EE001A21\n" 
+"EE211A82ED001A30EE600A121DF6EE000A5B1E20EE200A\n" 
+"82ED000A01EBC30C0830121D083183B3DCED001A91ED00\n" 
+"0A90ED002A001D30EE613A9CED011AD1ED010AD0ED002A\n" 
+"30EE210A70EE813A02EE430A02EEE30AF6EE001A20EE21\n" 
+"0A82ED000A30EEC10A02EE830A121D02EE630AF6EE000A\n" 
+"20EE200A82ED000A001D121D0831ACF1080C5B1ECED170\n" 
+"47F0B5044681B0208A40080D4616461F4620805FB12046\n" 
+"FFF7A3FF3A463146204601B0BDE8F040012309F01EBF01\n" 
+"230022204609F019FF32462946204601B0BDE8F04035E7\n" 
+"F0B5144681B007460E46A5085DD0381D97ED000AD0ED00\n" 
+"0A20EE000A00EEA00A071DB5EE400AF1EE10FA04DD09F0\n" 
+"C2FF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"ABFF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"94FF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"7DFF86ED000A01E000203060361D6D1EA1D114F0030F1A\n" 
+"D004F00304381D97ED000AD0ED000A20EE000A00EEA00A\n" 
+"071DB5EE400AF1EE10FA04DD09F05FFF86ED000A01E000\n" 
+"203060361D641EE6D101B0F0BD0000D0B52DED048B82B0\n" 
+"41EC180B8DED008BDDE90023C3F30A5140F2FF72914213\n" 
+"D0002904BF190350EA113011D051EC180B00220023EEF7\n" 
+"1AFF3DBF81F0004141EC180B0824002407E0190350EA11\n" 
+"30EDD002B051EC180B60E051EC180B274A284BEEF704FF\n" 
+"1CD29FED239B51EC190B53EC182BEEF7E1FF06460F4653\n" 
+"EC182B51EC190BF3F71BF832463B46E1F7C5FEF3F791F8\n" 
+"41EC100B51EC180B53EC102B1EE00122184BEEF7E2FE2E\n" 
+"D29FED129B51EC190B53EC182BEEF7BFFF06460F4653EC\n" 
+"182B51EC190BF2F7F9FF32463B46E1F7A3FEF3F76FF884\n" 
+"F0020453EC182BEFF76BF802B02246BDEC048BBDE8D040\n" 
+"09F0E9BE00BF000000000000F03FCE3B7F669EA0E63F00\n" 
+"00F03F09F026FB2121016002B04FF0FF306FF00041BDEC\n" 
+"048BD0BD80B551EC100BFFF76BFF41EC100B01BD10B5DF\n" 
+"F860494822014604F55770DCF7E9FFD4F89803606304F5\n" 
+"6670416804F1340211658068C4F8D400032902D101200A\n" 
+"F071F9D4F8D400032802D101200AF06EF9002010BD80B5\n" 
+"4822DFF81C19DCF7C9FF002002BD80B50C220146DFF810\n" 
+"09DCF7C0FF002002BD80B50C22DFF80019DCF7B8FFF194\n" 
+"03807A8500002002BD80B50C220146DFF80009DCF7AFFF\n" 
+"002002BD80B50C22DFF8F018DCF7A7FF002002BD10B5DF\n" 
+"F8C4484FF4B072002104F51A70E0F786FE4FF41A720021\n" 
+"2046E0F780FE8820C4F8400100F0F0FD4DF295034822DF\n" 
+"F8B818DFF8B8080AF0A4F904464CF251330C22DFF8B818\n" 
+"DFF8C4080AF09AF904434CF252330C22DFF8B818DFF8B8\n" 
+"080AF090F9204310BDDFF86808406F70470023002A01D1\n" 
+"4FF48032426201F00302032A00D1012301F01802182A00\n" 
+"D1012301F0C002C02A00D10123002B00D0882101607047\n" 
+"0A460146DFF82808E0E7DFF8181888624FF47A7290FBF2\n" 
+"F2CA628A6C002A04D1DFF8F42892FBF0F088647047DFF8\n" 
+"F817886778314FF47A7290FBF2F24A600A6A002A04D1DF\n" 
+"F8D02892FBF0F008627047002809D4002905D4814201DB\n" 
+"002070470120704700207047002901D401207047884201\n" 
+"DB0020704701207047F0B40A460021002805D002282DD0\n" 
+"16D3032840D054E0DFF89807D0E95645C2E9004590F8C0\n" 
+"23D20648D5D0E95823D0E95645AB4201D1A24240D00121\n" 
+"3EE0DFF87007D0E90E45C2E9004590F8C023920734D500\n" 
+"F13802D2E90245D0E90E239D4201D194422AD0012128E0\n" 
+"DFF8440700F13803D3E91445C2E9004590F8C003C0071C\n" 
+"D5D3E91645D3E91467BD4201D1B44214D0012112E0DFF8\n" 
+"1807D0E93645C2E9004590F8C023520708D5D0E93823D0\n" 
+"E93645AB4201D1A24200D00121084602E00846C2E90001\n" 
+"F0BC7047FEB50C460021DFF8E02692F8C033DB0617D5D2\n" 
+"F8543103F41063B3F5106F10D1D2E95667C4E9006702F5\n" 
+"AC70D0E90245D2E95667BD4201D1B44200D001210846FE\n" 
+"BDD2F8D010C9053ED502F5AC710969411A0091D2F8C810\n" 
+"411A00AD6960D2F8543103F4A066B6F5A06F09D10098FF\n" 
+"F74CFF0746214607EB4700FFF75CFFFEBD02F12807BE6D\n" 
+"F6051ED53E6D861BAE6003F48853B3F5885F13D10098FF\n" 
+"F735FF0746314655F82700FFF72FFF012800D10227012F\n" 
+"00DB7F1C21463846FFF73BFFFEBDBB68DB0501D40020FE\n" 
+"BD926A801A0090FFF71AFF0746314655F82700FFF714FF\n" 
+"012800D102272146781CFFF723FFFEBD38B50C46DFF8F0\n" 
+"25D2F8543103F4A061B1F5A06F04D121460020BDE83440\n" 
+"11E702F12805A96DC90501D4002032BD296D411A03F488\n" 
+"53B3F5885F09D1D2F86821801AFFF7E9FE21464000BDE8\n" 
+"3440F9E6AB68DB0501D4002032BD926A801AFFF7DBFE21\n" 
+"464000401CBDE83440EAE6DFF87C15C1F8C800C8314FF4\n" 
+"7A7290FBF2F24A600A6A002A04D1DFF8542692FBF19403\n" 
+"107E8500F0F008627047DFF86015C1F868014FF47A7290\n" 
+"FBF2F0C1F86C017047DFF84805D0F8D000001200F00100\n" 
+"7047DFF83805006B001200F001007047DFF82C05D0F880\n" 
+"00001200F00100704730B400200146DFF8142502F13003\n" 
+"1C6DE40501D5D3E91601146BE40508D5D3E90245A94204\n" 
+"DC01DBA04201D22046294602F1D003D2F8D040E40508D5\n" 
+"D3E90245A94204DC01DBA04201D2204629461C6DE40508\n" 
+"D5D3E91645A94204DC01DBA04201D220462946D2F85431\n" 
+"DB0508D5D2E95645A94204DC01DBA04201D22046294630\n" 
+"BC70470A460146DFF8780716E60A460146DFF8700711E6\n" 
+"70B584B004460D46B4F90400C003009000AEB4F90600C0\n" 
+"037060B4F90800C003B06004F10C0300AA606A41002068\n" 
+"80B204F09BFD00982968A0EB6100009070686968A0EB61\n" 
+"007060B068A968A0EB6100B06004F1180300AA606A4100\n" 
+"206880B204F083FD206B40F0200020637FBDDFF81414C1\n" 
+"F8D400C1F8A0037047DFF80814C1F88400C1F89C037047\n" 
+"10B5002812D0D30704D50368DFF8E443C4F8B033930703\n" 
+"D54368DFF8F4436360520703D58068DFF8E82390600846\n" 
+"FFF7E0FF002210210846BDE8104009F07CBFDFF8101848\n" 
+"63C1F898037047F8B504460D46DFF80068002C11D006F5\n" 
+"69770C222146384609F082FF002808D00C2221463846DC\n" 
+"F7FFFC39463046FFF77CFF756306F56074A561D6F80801\n" 
+"002802D0C6F8800303E04FF4D810C6F880030022042108\n" 
+"4609F049FF01206060F1BDDFF8A417D1F88403012801D1\n" 
+"012000E000200022C1F88423704710B50C46002804D00C\n" 
+"22DFF82C13DCF7CEFC002C04D0DFF87407D0F880032060\n" 
+"10BD10B50C46002804D00C22DFF81C13DCF7BDFC002C04\n" 
+"D0DFF85407D0F88803206010BD2DE9F04114461D46DFF8\n" 
+"406706F150078A060FD40168B9804168F9808068388138\n" 
+"6B40F08000386306F56C713846FFF71DFF23E001F00308\n" 
+"090411D506F168030246786A4100306D80B204F0C4FC38\n" 
+"6B40F020003863C7F83480C6F89C830DE00168B9614168\n" 
+"F96180683862386B40F020003863C7F83480C6F89C8338\n" 
+"6B40F4A0703863D7E90E01C7E91001C7E90E450020BDE8\n" 
+"F08170B514461D46DFF8AC6606220146301DDCF760FC30\n" 
+"6B40F080003063D6E90E01C6E91001C6E90E4506F56971\n" 
+"3046FFF7D2FE306B40F4A0703063D6E90E01C6E91001C6\n" 
+"E90E45002070BD2DE9FE430646894614461D46DFF8FC81\n" 
+"08F1A007DFF86406814510D13068B8807068F880B06838\n" 
+"813068F86070683861B0687861386B40F08000F19403A0\n" 
+"818500386350E05FEAC9301ED53068B8807068F880B068\n" 
+"38813068C003009000A87168C9034160B168C903816008\n" 
+"F1AC0300AA786A4100D8F8A00080B204F03FFC386B40F0\n" 
+"800038632EE05FEA896016D4304600F038FA00A800F023\n" 
+"FA0098B88000A84168F9808068388108F557713846FFF7\n" 
+"70FE386B40F08000386314E00C22314608F1AC00DCF7E4\n" 
+"FB3068B8617068F861B0683862386B40F02000386309F0\n" 
+"03007863C8F8A003D7E90E01C7E91001C7E90E45386B40\n" 
+"F4A07038630020BDE8FE8330B4DFF86C4504F1F4056861\n" 
+"A4F8F410E86A40F4E070E862D4E94A01C4E94C01C4E94A\n" 
+"23002030BC70472DE9F04192B080460E4614461D460422\n" 
+"414600A8DCF7A7FBDFF82C75700421D500A9404604F0A5\n" 
+"FC102200A904A8DCF79AFBF00408A905D5D7F8400180B2\n" 
+"04F092FB03E0386880B204F08DFB00AA04A908A804F0F7\n" 
+"FB102200A907F5A270DCF782FB05E01022414607F5A270\n" 
+"DCF77BFBD7E956013205C7E95801C7E95645D7F8540107\n" 
+"D406F4CC4141F4E0710843C7F8540106E006F4D44141F4\n" 
+"E0710843C7F85401700504D522462B4600A809F02BFB30\n" 
+"0504D522462B4600A809F03CFBD7F8540100050AD504A8\n" 
+"0FF294411022D1F7DAFF22462B4604A809F053FB002012\n" 
+"B0BDE8F0810000204088007C43880020408800C4438800\n" 
+"0020DFF84C14C1F880007047D0438800537A85000D7A85\n" 
+"000020DFF83414C1F854017047757A85000020DFF82414\n" 
+"086370470000637A8500977A8500857A85002DE9F04300\n" 
+"231C4600E0641CDFF80054D5F86862B4420DDA0C2707FB\n" 
+"0455D5F86C620746BE4203D0D5F870528D42ECD1162032\n" 
+"E0142E2EDA1C46002E01D11BE0641CB44207DA04EB4407\n" 
+"05EB8707D7F870728F42F4DBB4420ED00BE00C2707FB06\n" 
+"5707F51B7C07F51877B7E80043ACE80043761EB442F1DB\n" 
+"0C2707FB0454C4F86C0204F51B7041608260D5F8680240\n" 
+"1CC5F8680200E00C231846BDE8F083000040420F0070B5\n" 
+"DFF868430020C4F8C00394F83000400602D50220C4F8C0\n" 
+"0394F88000400605D5D4F8C00340F00100C4F8C00394F8\n" 
+"D000400605D5D4F8C00340F00400C4F8C00394F8200140\n" 
+"0605D5D4F8C00340F00800C4F8C00394F85401400605D5\n" 
+"D4F8C00340F01000C4F8C00394F8A001400605D5D4F8C0\n" 
+"0340F02000C4F8C00300252E4613E006EB460004EB8001\n" 
+"D4F8C003D1F87422104208D02046D1F86C128847002802\n" 
+"D0002D00D10546761CD4F868028642E7DB00F002F82846\n" 
+"70BD10B4DFF8AC02016B4A0602D541F01001F194033085\n" 
+"8500016300F130010A6D530602D542F010020A65D0F8D0\n" 
+"20530603D542F01002C0F8D02000F1D002136D5C0602D5\n" 
+"43F010031365D0F854315C0603D543F01003C0F8543103\n" 
+"6B23F0400303630B6D23F040030B65D0F8D01021F04001\n" 
+"C0F8D010116D21F040011165D0F8541121F04001C0F854\n" 
+"1100F5AA70C16C21F04001C16410BC704738B50C461546\n" 
+"002804D00C22DFF82412DCF715FA002D05D0DFF80402D0\n" 
+"E92223C5E90023002C04D0DFF8F401D0F88400207031BD\n" 
+"70B50C461546784E0C2206F1B801DCF7FCF9002D03D0D6\n" 
+"E93601C5E90001002C09D0D6F8BC03002802D000202070\n" 
+"70BDD6F8D400207070BD6C48406B70476A48D0F8BC1300\n" 
+"2901D000207047D0F8D40070476548D0F8840070470021\n" 
+"07E0624A02EB8102D2F8CC2140F82120491C0329F5DB70\n" 
+"47000070408800C040880018B4002106E050F8212003EB\n" 
+"8103C3F8C021491C554B0329F5DBD3F82012012907D103\n" 
+"F5E672014603F5EC7018BC04F090BA002106E050F82120\n" 
+"03EB8104C4F8CC21491C0329F6DB11BC704710B5002002\n" 
+"46464C04E004EB8001C1F8FC21401C0928F8DB24220021\n" 
+"04F5EC70E0F779F800200AE004EB00114FF07E52C1F8FC\n" 
+"214FF08042C1F8D821401C0328F2DBBDE81040FFE70020\n" 
+"3549C1F8200270470000491C00EE101AB8EEC00A3049DF\n" 
+"ED300A020612D401EE100AB8EE411ADFED2D1A81EE211A\n" 
+"F7EE001A31EE211A61EE200A80EE200A81EDF10A704780\n" 
+"3801EE100AB8EEC11ADFED231A81EE211AF7EE001A31EE\n" 
+"C11A61EE200A80EE200A81EDF10A70471A4890EDF10A70\n" 
+"470000012101FA00F0FA21484300EE100AB8EEC00ADFED\n" 
+"160A20EE200A1148D0EDF10A20EE200ABDEEC00A10EE10\n" 
+"0A70470000002100F00302032A00D1012100F01802182A\n" 
+"00D1012100F0C002C02A00D10121002900D088200249C1\n" 
+"F84001704700002040880000A08C4400C09E4435FA0E4B\n" 
+"2000010088408800000000400000000000000000000000\n" 
+"0010B5DFF88842606840F400206060204609F048FD2046\n" 
+"09F007FF204600F05EF9DFF86C12884208D10020A4F894\n" 
+"070FF2682000F04BFB002002E00121A4F89417002803D0\n" 
+"0FF26C2000F040FB0020BDE8104000F06CB938B5044600\n" 
+"A800F01EFA302000F027FA00F074FF05001CD19DF80000\n" 
+"00F0FAF9382000F0D9F8382000F0E5F8382000F0F3F800\n" 
+"F0B1FF054600214FF4414000F064FC00F0A0F82146DFF8\n" 
+"EC0109F0B3FC284632BD00F077BF10B582B000A8002101\n" 
+"60084600F0B1F99DF800200321682000F0F19403C08885\n" 
+"0050FA044600AB04221021682000F007FB204616BD10B5\n" 
+"DFF8AC41D4F83017002813D121F40040C4F8300700214F\n" 
+"F4004000F0DBFC00214FF4804000F097FD0020C4F82401\n" 
+"FEF7B3F90BE041F40040C4F8300701214FF4004000F0C7\n" 
+"FC0120C4F824012046BDE8104009F010BB10B5DFF85441\n" 
+"D4F8301700280FD121F48040C4F8300700214FF4804000\n" 
+"F0AFFC0020C4F86401BDE81040FEF785B941F48040C4F8\n" 
+"30070120C4F8640101464FF48040BDE8104000F09ABC10\n" 
+"B5DFF80841D4F8301700280ED121F48070C4F830070021\n" 
+"4FF4807000F08AFC0020C4F82403FEF76CF90BE041F480\n" 
+"70C4F8300701214FF4807000F07BFC0120C4F824032046\n" 
+"BDE8104009F0C4BA012802DB012000F0CDBD002000F0CA\n" 
+"BD80B54FF0807000F0F2FD2B4800F0FAFD002000F04FFE\n" 
+"022000F0FFFD0A2000F007FE012000F00FFE072000F017\n" 
+"FE0A2000F01FFE022000F027FE082000F02FFE0020BDE8\n" 
+"024000F035BE1948D0F83007704710B504461648C0F838\n" 
+"47C0F8044109F08AFA2046C0B2BDE8104000F03BBD10B5\n" 
+"04460E48C0F83C47C0F88443C0F8444109F079FA2046C0\n" 
+"B2BDE8104000F047BD10B504460648C0F84C47C0F80443\n" 
+"09F06AFA2046C0B2BDE8104000F055BDD0ED8800EFCDAB\n" 
+"00AE47610043616E204E4F542066696E6420434F4D5041\n" 
+"5353202E2E0D0A0000004572726F7220496E697469616C\n" 
+"697A696E6720746865204D5055202E2E0D0A0002467621\n" 
+"682046E180B5002000F016F8002001F0E6F9032001F0E3\n" 
+"F900280CD1002000F093F80020FFF7EAFF1F2000F0F1F8\n" 
+"1E2000F0EEF8002002BD10B50446002000F083F8002C01\n" 
+"D0022200E000220F216820BDE810401DE110B504460020\n" 
+"00F074F801221221682000F014F9002C0ED0002000F06A\n" 
+"F801221121682000F00AF91F226621682000F005F94024\n" 
+"0DE0002000F05BF800226621682000F0FBF80022112168\n" 
+"2000F0F6F8002404F0BF020321682000F0EFF81F2000F0\n" 
+"ABF81E2000F0A8F8224603216820BDE81040E2E010B582\n" 
+"B0040001D000202080002000F035F80DF1010301221B21\n" 
+"682000F0ADF800282AD100AB01221921682000F0A5F800\n" 
+"2822D19DF80100002802D0012001F09CF9002C02D09DF8\n" 
+"0000208000AB01221821682000F091F8002C05D021889D\n" 
+"F8002041EA02212180DFF8B41203D022880B881A432280\n" 
+"00220A8016BD10B582B00446DFF8A00201788C4201D100\n" 
+"2016BD047000AB01227F21682000F06EF8002810D19DF8\n" 
+"000000F0CE0040EA04108DF800009DF8F19403508C8500\n" 
+"00207F21682000F084F8002800D1002016BD10B582B004\n" 
+"460020FFF7D5FF00AB01220521682000F04EF8002809D1\n" 
+"9DF8000020438DF8000002460521682000F068F816BD10\n" 
+"B504460020FFF7BDFF2346012205216820BDE8104034E0\n" 
+"10B582B004460020FFF7B0FF00AB01220521682000F029\n" 
+"F800280AD19DF80000A0438DF800009DF8002005216820\n" 
+"00F042F816BD10B582B004460020FFF796FF00AB012268\n" 
+"21084600F00FF800280BD19DF8000000F0E00020438DF8\n" 
+"000002466821084600F027F816BD2DE9F84304460D4616\n" 
+"461F464FF0000801E018FA89F83146884515D2A1EB0800\n" 
+"B0F5807F02D94FF4807901E0A6EB080908EB07034A4692\n" 
+"B208EB0501C9B2204600F0E2F80028E4D0BDE8F28380B5\n" 
+"8DF8002000AB012200F0B7F802BD2DE9F84304460D4616\n" 
+"461F464FF0000801E018FA89F83146884513D2A1EB0800\n" 
+"B0F5807F02D94FF4807901E0A6EB080908EB07034A4692\n" 
+"B22946204600F0B6F80028E6D0BDE8F28338B504460D46\n" 
+"00208DF80000FFF727FF00AB01221021682000F0A4F800\n" 
+"2810D1002D9DF8000003D020438DF8000002E0A0438DF8\n" 
+"000000AB01221021682000F071F832BD000038B504460D\n" 
+"46002C01D0002D01D1162032BD00AB02223921682000F0\n" 
+"60F800281CD19DF800009DF8011041EA0020288000B200\n" 
+"EE100AB8EEC00ADFED1D0A30EE200ADFED1C0A80EE200A\n" 
+"DFED1B0A30EE200ABEEEC80A84ED000A002032BD10B582\n" 
+"B0044600208DF80000002C01D1202016BD0120FFF7D0FE\n" 
+"00AB01222821682000F04DF8002803D19DF80000207000\n" 
+"2016BD000080B500A900220A6003F042FD00AA4FF49871\n" 
+"042000F0B2F802BD000000C067440080B44300000C424C\n" 
+"888900D82788000EB403B0704710B50446D7F7FEF92146\n" 
+"89B2BDE81040D7F7E8BB38B51446002B19D0734D01F07F\n" 
+"0028701946681CDBF77DFD631CDBB22A461B210020D7F7\n" 
+"2CFB002808D13D220FF2BC110FF2A810D7F751FA002032\n" 
+"BD002032BD80B5002B12D0D2B2009241F080021B210020\n" 
+"D7F74CFB002808D14E220FF28C110FF27810D7F739FA00\n" 
+"2002BD002002BD70B582B004460D4616460FF2E8100088\n" 
+"ADF80000022300AA1B210020D7F7F7FA002808D159220F\n" 
+"F250110FF23C10D7F71CFA002076BD0FF2C0100088ADF8\n" 
+"0000280A8DF80100022300AA1B210020D7F7DEFA002808\n" 
+"D15D220FF220110FF20C10D7F703FA002076BD0FF29410\n" 
+"0088ADF800008DF80150022300AA1B210020D7F7C6FA00\n" 
+"2808D160220FF2F0010FF2DC00D7F7F19403E08F8500EB\n" 
+"F9002076BDE4B200943346FD221B210020D7F7EBFA0028\n" 
+"08D163220FF2C8010FF2B400D7F7D8F9002076BD002076\n" 
+"BD70B582B004460E4615460FF234100088ADF80000300A\n" 
+"8DF80100022300AA1B210020D7F793FA002808D170220F\n" 
+"F288010FF27400D7F7B8F9002076BD0FF204100088ADF8\n" 
+"00008DF80160022300AA1B210020D7F77BFA002808D173\n" 
+"220FF258010FF24400D7F7A0F9002076BD0D4E7D203070\n" 
+"22462946701CDBF7B2FC631CDBB232461B210020D7F761\n" 
+"FA002808D176220FF224010FF21000D7F786F9002076BD\n" 
+"002076BD906088005B494E564E5D25733A25640A000000\n" 
+"00443A5C4D43555C53454E534F525F6B616C6D6961615F\n" 
+"5452454C54455F4252434D5F4E6F746550435C4D43555C\n" 
+"50726F6A6563745C5353505F53656E736F724875625C53\n" 
+"485F53656E736F724D616E616765725C7372635C52565C\n" 
+"496E76656E5F49434D32303631305C7372635C696E765F\n" 
+"6F656D5F6170692E63007F0000007E0000007C0000007E\n" 
+"0000007C000000F8B504460F46DFF840552A464C210220\n" 
+"FFF7F1FE0646002F49D1200403D5287800F07F00287060\n" 
+"0403D5287800F0BF002870A00403D5287800F0DF002870\n" 
+"E00403D5287800F0EF002870200503D5287800F0F70028\n" 
+"70A00503D5287800F0FD002870E00503D5287800F0FE00\n" 
+"2870200603D5687800F07F006870600603D5687800F0BF\n" 
+"006870E00603D5687800F0EF006870200703D5687800F0\n" 
+"F700687014F0070F4DD0687800F0F800687048E0200403\n" 
+"D5287840F080002870600403D5287840F040002870A004\n" 
+"03D5287840F020002870E00403D5287840F01000287020\n" 
+"0503D5287840F008002870A00503D5287840F002002870\n" 
+"E00503D5287840F001002870200603D5687840F0800068\n" 
+"70600603D5687840F040006870E00603D5687840F01000\n" 
+"6870200703D5687840F00800687014F0070F03D0687840\n" 
+"F0070068702A464C210220FFF7B7FE801900D10020F2BD\n" 
+"F8B504460F46DFF8F0532A4640210220FFF748FE064600\n" 
+"2F55D1200403D5287800F07F002870600403D5287800F0\n" 
+"BF002870A00403D5287800F0DF002870E00403D5287800\n" 
+"F0EF002870200503D5287800F0F7002870600503D52878\n" 
+"00F0FB002870A00503D5287800F0FD002870E00503D528\n" 
+"7800F0FE002870200603D5687800F07F006870600603D5\n" 
+"687800F0BF006870A00603D5687800F0DF006870E00603\n" 
+"D5687800F0EF006870200703D5687800F0F700687014F0\n" 
+"070F59D0687800F0F800687054E0F19403709385002004\n" 
+"03D5287840F080002870600403D5287840F040002870A0\n" 
+"0403D5287840F020002870E00403D5287840F010002870\n" 
+"200503D5287840F008002870600503D5287840F0040028\n" 
+"70A00503D5287840F002002870E00503D5287840F00100\n" 
+"2870200603D5687840F080006870600603D5687840F040\n" 
+"006870A00603D5687840F020006870E00603D5687840F0\n" 
+"10006870200703D5687840F00800687014F0070F03D068\n" 
+"7840F0070068702A4640210220FFF7F6FD801900D10020\n" 
+"F2BDF8B504460F46DFF8A4582A4642210220FFF787FD06\n" 
+"46002F18D1600403D5287800F0BF002870A00403D52878\n" 
+"00F0DF002870E00403D5287800F0EF002870E0051CD528\n" 
+"7800F0FE00287017E0600403D5287840F040002870A004\n" 
+"03D5287840F020002870E00403D5287840F010002870E0\n" 
+"0503D5287840F0010028702A4642210220FFF7AFFD8019\n" 
+"00D10020F2BD38B504460020ADF8000000AA9E210220FF\n" 
+"F7A1FD0546E22C00D3E124E12090FBF4F0401E8DF80100\n" 
+"00AABE210220FFF792FD401900D1002032BD38B5044600\n" 
+"20ADF8000000AA9A210220FFF784FD0546E22C00D3E124\n" 
+"E12090FBF4F0401E8DF8010000AABA210220FFF775FD40\n" 
+"1900D1002032BD38B504460020ADF8000000AA80210220\n" 
+"FFF767FD0546E22C00D3E124E12090FBF4F0401E8DF801\n" 
+"0000AAA0210220FFF758FD401900D1002032BD38B50546\n" 
+"0FF250000088ADF8020000AA4E210220FFF7E7FC04469D\n" 
+"F8031000A8002D9DF800209DF8023007D19A438DF80020\n" 
+"427822EA0101417005E01A438DF8002042781143417000\n" 
+"AA4E210220FFF72BFD001932BD0000080080B500A903F0\n" 
+"ADF902464FF4C4710420FFF71DFD02BD80B500A903F0A2\n" 
+"F902464FF4C6710420FFF712FD02BD80B500A903F097F9\n" 
+"02464FF4EC710420FFF707FD02BD80B500A903F08CF902\n" 
+"464FF4EE710420FFF7FCFC02BD80B500A903F081F90246\n" 
+"4FF4DC710420FFF7F1FC02BD80B500A903F076F902464F\n" 
+"F4DE710420FFF7E6FC02BD80B500A903F06BF902464FF4\n" 
+"E6710420FFF7DBFC02BD80B500A903F060F902464FF4E4\n" 
+"710420FFF7D0FC02BD80B500A903F055F902464FF4F471\n" 
+"0420FFF7C5FC02BD80B500A903F04AF902464FF4D07104\n" 
+"20FFF7BAFC02BD000046888900488889002DE9F043A1B0\n" 
+"05460C4600A88021D0F75BFD902600273846FFF7AAFAB8\n" 
+"460DE0415D00AA825C914200D07F1C401C4845F6DB4D44\n" 
+"4E44C8441FFA88F84046A04220D2B6B2F0B2C0F5807080\n" 
+"2805DAF0B2C0F580791FFA89F9F194030097850001E04F\n" 
+"F080092A4631464846FFF780FC00AA31464846FFF71AFC\n" 
+"4A4600A9284608F0E2FB0028D8D00020D4E7BFB239460F\n" 
+"F64800FFF7C6FB002F02D04FF0FF3000E0002021B0BDE8\n" 
+"F08338B503240220FFF762FA092250216820FFF702FB05\n" 
+"0016D1002251216820FFF7FBFA05000FD140F6F3410FF6\n" 
+"2400FFF796FF050002D00220FFF7A2FB641E012C01DB00\n" 
+"2DEFD1284632BD80B50020FFF73EFA002203216820FFF7\n" 
+"DEFA1F20FFF79AFA1E20FFF797FA042203216820FFF7D3\n" 
+"FA002811D10520FFF782FB842203216820FFF7C9FA0028\n" 
+"07D1C42203216820FFF7C2FA002800D1002002BD80B500\n" 
+"A80021016000AA40210220FFF70CFC00AA42210220FFF7\n" 
+"07FC00AA4C210220FFF702FC00AA4E210220FFF7FDFB00\n" 
+"2002BD2DE9F24F82B0044615460C9E0027384601908046\n" 
+"009002983946018008462880002C02D14FF0FF3046E220\n" 
+"68B0F5806F10DA814601AADFF810174118C0F5806000F0\n" 
+"85FA484420600198002802D03846206031E220680228C0\n" 
+"F2198238460090DFF8E8960DF1020200A9484600F029FA\n" 
+"8246BDF80000002813D0F143084210D12068504501DA38\n" 
+"4616E20AEB090010F8020C692805D10AEB090010F8010C\n" 
+"D22804D000F0BFFA3846206005E209F10206BDF8000000\n" 
+"0701D509F10406DFF890B6BDF8000000043CD530787178\n" 
+"090441EA0060B17840EA0120F1780843CBF82000307971\n" 
+"79090441EA0060B17940EA0120F1790843CBF82400307A\n" 
+"717A090441EA0060B17A40EA0120F17A0843CBF8280030\n" 
+"78000200B271780843CBF82000B078000200B2F1780843\n" 
+"CBF824003079000200B271790843CBF828004FF0010806\n" 
+"F20606BDF80000400415D53078717841EA0020ABF80800\n" 
+"B078F17841EA0020ABF80A003079717941EA0020ABF80C\n" 
+"004FF0010806F20606BDF8000080041ED53078000200B2\n" 
+"71780843CBF83800B078000200B2F1780843CBF83C0030\n" 
+"79000200B271790843CBF84000062231460BF15C00DBF7\n" 
+"11F84FF0010806F20606BDF80000C0041AD53078717841\n" 
+"EA0020ABF80000B078F17841EA0020ABF8020030797179\n" 
+"41EA0020ABF80400B079F17941EA0020ABF806004FF001\n" 
+"080836BDF8000000052CD530787178090441EA0060B178\n" 
+"40EA0120F1780843CBF8140030797179090441EA0060B1\n" 
+"7940EA0120F1790843CBF81800307A717A090441EA0060\n" 
+"B17A40EA0120F17A0843CBF81C0009F581610BF1140003\n" 
+"F0C6F84FF001080C36BDF8000040052DD5307871780904\n" 
+"41EA0060B17840EA0120F178F19403909A85000843CBF8\n" 
+"140030797179090441EA0060B17940EA0120F1790843CB\n" 
+"F81800307A717A090441EA0060B17A40EA0120F17A0843\n" 
+"CBF81C0009F581610BF1140003F095F84FF0010806F20E\n" 
+"06BDF80000800503D54FF0010806F20606BDF80000C005\n" 
+"2CD530787178090441EA0060B17840EA0120F1780843CB\n" 
+"F8140030797179090441EA0060B17940EA0120F1790843\n" 
+"CBF81800307A717A090441EA0060B17A40EA0120F17A08\n" 
+"43CBF81C0009F581610BF1140003F05BF84FF001080C36\n" 
+"BDF8000000060FD53078717841EA0020ABF81000B078F1\n" 
+"7841EA0020ABF812004FF0010806F20606BDF800004006\n" 
+"26D530787178090441EA0060B17840EA0120F1780843CB\n" 
+"F82C0030797179090441EA0060B17940EA0120F1790843\n" 
+"CBF83000307A717A090441EA0060B17A40EA0120F17A08\n" 
+"43CBF834004FF001080C36BDF8000080062CD530787178\n" 
+"090441EA0060B17840EA0120F1780843CBF84400307971\n" 
+"79090441EA0060B17940EA0120F1790843CBF84800307A\n" 
+"717A090441EA0060B17A40EA0120F17A0843CBF84C000C\n" 
+"2231460BF15000DAF7E5FE4FF001080C36BDF80000C006\n" 
+"02D54FF00108361DBDF8020040040BD53078717841EA00\n" 
+"20A9F80004B61C00B200F00300FEF78AF9BDF802008004\n" 
+"0AD53078717841EA002009F200414880B61C00B2FEF7A2\n" 
+"F9BDF80200C00409D53078717841EA002009F200418880\n" 
+"00B2FEF766F92068B0EB0A02226004D00AEB0901484608\n" 
+"F0DFFCB8F1000F05D13846206000F054F807000AD10298\n" 
+"002802D0BDF800100180002D02D0BDF8020028803846BD\n" 
+"E8FE8F00004A88890030B4134604220478457845EA0424\n" 
+"0C80210400D50A22610400D5921DA10400D5921DE10400\n" 
+"D50832210500D50C32610500D50E32A10500D5921DE105\n" 
+"00D50C32210600D5921D610600D50C32A10600D50C32E1\n" 
+"0600D5121D210705D58178C07840EA01201880921C1888\n" 
+"410400D5921C810400D5921CC00400D5921C104630BC70\n" 
+"478349086800220A6070472DE9F04182B00C46160001D0\n" 
+"002030607C4D2879002808D000F05DF83E202860002E18\n" 
+"D00120306015E000A800F02FF8002826D10099B1F5487F\n" 
+"08D900F04BF83E202860002E06D00120306003E0002901\n" 
+"D0C90701D5002017E0009E0027002E07E0B04641463819\n" 
+"00F089F84744B6EB080604D0032EF4DB4FF00208F2E700\n" 
+"2802D02860002000E00098BDE8F68138B5040001D11620\n" 
+"32BD0020FEF709FF00AB022270216820FEF782FF050008\n" 
+"D000F012F8544840210160F19403209E85000020206028\n" 
+"4632BD9DF80000000220609DF8011050FA81F020600020\n" 
+"32BD1CB54FF48060019000242046FEF7E5FE00AB012203\n" 
+"216820FEF75EFF002826D100E0641C0198002819D0E4B2\n" 
+"062C16D29DF8000000F0BF0203216820FEF772FF1F20FE\n" 
+"F72EFF1E20FEF72BFF38480021017101A8FFF7B0FF0028\n" 
+"E2D016BD9DF8000040F0400203216820FEF75BFF16BD10\n" 
+"B582B004460020FEF7AFFE00AB01226E216820FEF728FF\n" 
+"00280CD19DF8000000F0FC0020438DF8000002466E2168\n" 
+"20FEF740FF002016BD38B504460D460020FEF793FE2346\n" 
+"2A4692B272216820FEF739FF040006D0FFF79BFF184841\n" 
+"210160204632BD002032BD15490871704780B5002802D1\n" 
+"4FF0FF3002BD0C221149DAF760FD002002BD80B5002802\n" 
+"D14FF0FF3002BD0C220C49DAF754FD002002BD80B50028\n" 
+"02D14FF0FF3002BD06220749DAF748FD002002BD54E988\n" 
+"006CED88004CE9880080ED88008CED880074ED88004520\n" 
+"3A20636F6D70617265206572726F7220636F756E74203D\n" 
+"2025640000000000010000000000000000000000000000\n" 
+"000500000000000000000008000500FFFFF70000000000\n" 
+"0000000005000000058000800040004000200020001000\n" 
+"1000080008000400040002000200010001000080008000\n" 
+"4000400020002000100010000800080004000400020002\n" 
+"0001000100000000000000000000000000000000000000\n" 
+"000000000000000000000069D204000000000000000000\n" 
+"0000C100003804F6E8F4000008000001FFC70000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00066666663A3230193999999905CDCFE6000000000000\n" 
+"000001000000006147AE00000000000000000000000000\n" 
+"00000000000000000000000000000000000000FFFFFFFF\n" 
+"0000000000000001000000070000000000000000000000\n" 
+"020000000A0000000000000000000000020000000A0000\n" 
+"00000000000000000010000000008000FFF70000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"40000000000000000000000000000000003E0330000000\n" 
+"0000000000000000000000000200000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"6000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000F19403B0A18500000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000000000000000000000000000000000000000000C800\n" 
+"00000000020000000003E8000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000135C29000CF5C29000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000004000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000700000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000000000000000000F1940340A5850000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000010000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000400000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00004100000000000000000000000000000C000000F800\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000D8DCB8B0\n" 
+"B4F3AAF8F9D1D9889AF8F73ED8F38A9AA729D1DAF1FFD8\n" 
+"F1A4DFA5DEF3A8DED0DFF2A9F8F9D1DADEA8DEDFDFDFD8\n" 
+"F4B18DF3A8D0C0B08EC6F9F1BCB0BDBE82A1C3C5C7BCBC\n" 
+"A2DFDFDF80F2A2C3CBC5BCF190FCC300D9F409BED8F3A0\n" 
+"DFF18291A92D557DA98090FC510010FC510010FC510010\n" 
+"FCC104D9F2A0DFF409BED8F6A0FA809038F3DEDAF8F409\n" 
+"BED8F1BD95FCC004D9BDBDF409BEDABDBDD8F6BCBCBDBD\n" 
+"BEBEB5A784921AF8F9D1DB8493F76AB68796F309FFDABC\n" 
+"BDBED8F3BCBCBDBDF19403D0A88500BEBEB0B48FF4B9AF\n" 
+"D0C7BEBEB8AED0F39F75F4ADF38EC2B286F4BEB9AFD0C3\n" 
+"F1BEB8B0A3DEDFDFDFF2A381C080CDC7CFBDB4B2A38693\n" 
+"F120FD3F2CFD3F34FD3F3CFD3FBEA220FD31BCBCB08BBE\n" 
+"BEA32D557DA2869D08FD0FBCBCA3839201A99E0E161EBE\n" 
+"BE99BAA52C547CBDBDBCBCB1B68395A5F10E161EB2A785\n" 
+"952AF050788793F101DAA5DFDFDFD8A4DFDFDFB080F2A4\n" 
+"C3CBC5F1B18294A40E161EBD9EBEAF0E161EBCB28FBDBD\n" 
+"94BEBEB8A62D557DBAA42D557DBCBCB8B0B4A7889FF75A\n" 
+"F9D9F1BAA5DFDFDFB8DAF3A8F8D8889FA7F752F9D9F1BA\n" 
+"A4DFDFDFB8DAF3889DA8D064D8F78498A8D07EF0B2B6BA\n" 
+"8591A72470594469386448312D517987F1A1002C547CF0\n" 
+"81A704285078FD7FF1A787965991A1020E161EF08491A7\n" 
+"2470594469386448312D5179A2870D20597015384069A4\n" 
+"F162F0193148B8B2B6F1A682922AF050FD04F1A7849402\n" 
+"FD04B0B4869700BCBAA78661D9BCBCF40B47D8F141DABC\n" 
+"BCF40B47D8F0B8A6DEBCBCB281B691BAA704285078FD7F\n" 
+"F1A787965991A1020E161ED8D8F3BDBDBEBEB8B4B08FA8\n" 
+"C0F9AC8497F51AF1F8F9D1DAA8DED895FCC103D9A8DED8\n" 
+"BCBCF198FCC01CDB95FCC003A5DEA4DED8AC889500D1D9\n" 
+"A5F8D8A4FC80048895A4FC080420F7BCBDB5AC849FF602\n" 
+"F8F9D1DB8493F76AF9D9F3BCBCA8889218BCD8BCBCB4A8\n" 
+"889E08F4BEA1D0C1BCD8F1B281B696BAA1F8F9B9A0DAC3\n" 
+"C5C7D92D4D6DD8F3B0B4B898FCC004DAF40BF9F2D8A8F8\n" 
+"889AA701D9A8DEA4849D3CD8F3A9D0F8899BA751D9A9D0\n" 
+"DEA4849C2CD8F7A7889F52F9D9F40C1AD8F1B9A2FAF3B8\n" 
+"A9D0FA899BA779D9A9D0DFA4849C24D8F1B0B4B8A7DEF2\n" 
+"84CA97A424A594F60AA5B1829562F8F9D1D9F40C85D8F0\n" 
+"B085A4D0C0DDF2C0DCD88595A500D980F0DDF2C2CAC4DC\n" 
+"D8F28500D980F0DDF2CCC6CEDCD885000000000000B1D9\n" 
+"80F0DDF1C2C4C6DCD8B181F0DDF3C6DCD8F6B8B0B4A784\n" 
+"945AF8F9D1DAFED8F1D8F1B8B0B4A7889DF762F9D9F40D\n" 
+"80D8F1B9A586C3C5C7B1B59AFCC000DAF40D75D8F0A987\n" 
+"994C950899549510997C9538FD7EF18994A661D9A4C6C1\n" 
+"D8A671DAA4D0C6C1D88494A669F5869810D9F1A4DEDFDF\n" 
+"DFADDFAEDEF8D8ADF8F58D9D10DAAEDED8ADFAF538D9DE\n" 
+"A4DEDFDFDFABDEF9D8F19EFCC004DB9BFCC100DAF40D18\n" 
+"D8F1ADDEDFABF8F58B9B1810D9DEDFF8D8F19BFCC104D9\n" 
+"AEDEACF8DB8CFC090421FCC108D9AEDFF8F441D8F1FCC1\n" 
+"08DAF40D6BD8F1AEDE8A99A62D557DF5A686962C547CF1\n" 
+"A6889669DB7179F1940360AC8500D9ACFADAACDFD8F58C\n" 
+"9CA638D9ACDEDF8BAEC3ABDFF442D8F188A8C189AAC3C5\n" 
+"C7D8F1AAF88E9AA641DAAADED8F1FF00E54A12689FEDBC\n" 
+"0A038800EB4303B3F9043000EE903AF8EEE00A92ED001A\n" 
+"B8EE411A70EEC10A92ED031AB8EE411AC0EE810A60EE80\n" 
+"0AC1ED000AD2ED010AF8EE600A038800EB4303B3F90630\n" 
+"01EE103AB8EEC11A70EEC10A92ED041AB8EE411AC0EE81\n" 
+"0A60EE800AC1ED010AD2ED020AF8EE600A038800EB4300\n" 
+"B0F9080001EE100AB8EEC11A70EEC10A92ED051AB8EE41\n" 
+"1AC0EE810A20EE800A81ED020A012070470388934201D3\n" 
+"0023038003885B1C03809BB2934201D300220280028802\n" 
+"EB420300EB8300001D91EC030A80EC030A01207047B0F9\n" 
+"0030591A09B2002901D511FA82F109B201EB410200EB82\n" 
+"00001D7047000070B49FEDB80A0023B0F9004010E024B2\n" 
+"250008D405EB450600EB8605D5ED010A30EE200A641E24\n" 
+"B2002C00D5541E5B1C1BB28B42EBDB70BC7047000070B4\n" 
+"9FEDA90A0023B0F9004010E024B2250008D405EB450600\n" 
+"EB8605D5ED020A30EE200A641E24B2002C00D5541E5B1C\n" 
+"1BB28B42EBDB70BC7047000070B49FED9A0A0023B0F900\n" 
+"4010E024B2250008D405EB450600EB8605D5ED030A30EE\n" 
+"200A641E24B2002C00D5541E5B1C1BB28B42EBDB70BC70\n" 
+"47000010B52DED068BADF5FB6D00A80FF2282140F2D472\n" 
+"CFF760FA9FED768B9FED779B00ACB5EE400AF1EE10FA48\n" 
+"DB9FED75ABDFED760AB4EE600AF1EE10FA1AD510EE100A\n" 
+"DEF70DFD53EC192BDEF737FC53EC182BEFF785FDEBF715\n" 
+"FD54F82000DEF715FC53EC1A2BDEF729FCDEF721FD00EE\n" 
+"100A68E0F7EE000A80EE800A10EE100ADEF7EEFC53EC19\n" 
+"2BDEF718FC53EC182BEFF766FDEBF7F6FC54F82000DEF7\n" 
+"F6FB53EC1A2BDEF70AFC02460B465B485849EBF714FDDE\n" 
+"F7FCFC00EE100A43E0FFEE000AB4EE600AF1EE10FA1CDB\n" 
+"B1EE400A10EE100ADEF7C4FC53EC192BDEF7EEFB53EC18\n" 
+"2BEFF73CFDEBF7CCFC54F82000DEF7CCFB0022474BDEF7\n" 
+"E0FBDEF7D8FC00EE100A1FE080EE800A10EE100ADEF7A7\n" 
+"FC53EC192BDEF7D1FB53EC182BEFF71FFDEBF7AFFC54F8\n" 
+"2000DEF7AFFB0022394BDEF7C3FB394A3E4BEFF711FDDE\n" 
+"F7B7FC00EE100A0DF5FB6DBDEC068B10BDC3F51C4180B5\n" 
+"B0EE401AF5EE400AF1EE10FA04DD81EE200ABDE8014048\n" 
+"E7F5EE400AF1EE10FA24D581EE200AB5EE401AF1EE10FA\n" 
+"0EDBFFF73BFF10EE100ADEF767FC224A224BEFF7E3FCDE\n" 
+"F789FC00EE100A01BDFFF72CFF10EE100ADEF758FC1A4A\n" 
+"1C4BEFF7D4FCF19403F0AF8500DEF77AFC00EE100A01BD\n" 
+"B5EE401AF1EE10FA02DD9FED160A01BDB5EE401AF1EE10\n" 
+"FA02D59FED130A01BD9FED130A01BD0149086070470000\n" 
+"44C58800000000000000E03F0000000000407F40000000\n" 
+"000000503F0100803FFB21F93F000050BF0000503F182D\n" 
+"4454FB210940FB2109C0DB0FC93FDB0FC9BF00000000FB\n" 
+"21F9BF0000000002000000040000000600000008000000\n" 
+"0A0000000C0000000E0000001000000012000000140000\n" 
+"0017000000190000001B0000001D0000001F0000002100\n" 
+"0000230000002500000027000000290000002B0000002D\n" 
+"0000002F00000031000000330000003500000037000000\n" 
+"390000003B0000003D0000003F00000041000000430000\n" 
+"0046000000480000004A0000004C0000004E0000005000\n" 
+"0000520000005400000056000000580000005A0000005C\n" 
+"0000005E00000060000000620000006400000066000000\n" 
+"680000006A0000006C0000006E00000070000000720000\n" 
+"007400000076000000780000007A0000007C0000007E00\n" 
+"000080000000820000008400000086000000880000008A\n" 
+"0000008C0000008E000000900000009200000094000000\n" 
+"96000000980000009A0000009C0000009E000000A00000\n" 
+"00A2000000A4000000A6000000A8000000AA000000AC00\n" 
+"0000AE000000B0000000B2000000B4000000B6000000B8\n" 
+"000000BA000000BC000000BE000000C0000000C2000000\n" 
+"C4000000C6000000C8000000CA000000CC000000CE0000\n" 
+"00D0000000D2000000D4000000D6000000D8000000DA00\n" 
+"0000DC000000DE000000E0000000E2000000E4000000E6\n" 
+"000000E7000000E9000000EB000000ED000000EF000000\n" 
+"F1000000F3000000F5000000F7000000F9000000FB0000\n" 
+"00FD000000FF0000000101000003010000040100000601\n" 
+"0000080100000A0100000C0100000E0100001001000012\n" 
+"010000140100001601000018010000190100001B010000\n" 
+"1D0100001F010000210100002301000025010000270100\n" 
+"00290100002A0100002C0100002E010000300100003201\n" 
+"0000340100003601000038010000390100003B0100003D\n" 
+"0100003F01000041010000430100004501000046010000\n" 
+"480100004A0100004C0100004E01000050010000510100\n" 
+"00530100005501000057010000590100005B0100005C01\n" 
+"00005E0100006001000062010000640100006501000067\n" 
+"010000690100006B0100006D0100006E01000070010000\n" 
+"72010000740100007601000077010000790100007B0100\n" 
+"007D010000F1940380B385007F01000080010000820100\n" 
+"00840100008601000087010000890100008B0100008D01\n" 
+"00008E0100009001000092010000940100009501000097\n" 
+"010000990100009B0100009C0100009E010000A0010000\n" 
+"A2010000A3010000A5010000A7010000A8010000AA0100\n" 
+"00AC010000AE010000AF010000B1010000B3010000B401\n" 
+"0000B6010000B8010000B9010000BB010000BD010000BF\n" 
+"010000C0010000C2010000C4010000C5010000C7010000\n" 
+"C9010000CA010000CC010000CE010000CF010000D10100\n" 
+"00D3010000D4010000D6010000D7010000D9010000DB01\n" 
+"0000DC010000DE010000E0010000E1010000E3010000E5\n" 
+"010000E6010000E8010000E9010000EB010000ED010000\n" 
+"EE010000F0010000F1010000F3010000F5010000F60100\n" 
+"00F8010000F9010000FB010000FD010000FE0100000002\n" 
+"0000010200000302000004020000060200000802000009\n" 
+"0200000B0200000C0200000E0200000F02000011020000\n" 
+"13020000140200001602000017020000190200001A0200\n" 
+"001C0200001D0200001F02000020020000220200002302\n" 
+"0000250200002602000028020000290200002B0200002C\n" 
+"0200002E0200002F020000310200003202000034020000\n" 
+"3502000037020000380200003A0200003B0200003D0200\n" 
+"003E020000400200004102000043020000440200004602\n" 
+"000047020000480200004A0200004B0200004D0200004E\n" 
+"0200005002000051020000530200005402000055020000\n" 
+"57020000580200005A0200005B0200005C0200005E0200\n" 
+"005F020000610200006202000064020000650200006602\n" 
+"000068020000690200006A0200006C0200006D0200006F\n" 
+"0200007002000071020000730200007402000075020000\n" 
+"77020000780200007A0200007B0200007C0200007E0200\n" 
+"007F020000800200008202000083020000840200008602\n" 
+"000087020000880200008A0200008B0200008C0200008E\n" 
+"0200008F02000090020000920200009302000094020000\n" 
+"960200009702000098020000990200009B0200009C0200\n" 
+"009D0200009F020000A0020000A1020000A2020000A402\n" 
+"0000A5020000A6020000A8020000A9020000AA020000AB\n" 
+"020000AD020000AE020000AF020000B0020000B2020000\n" 
+"B3020000B4020000B5020000B7020000B8020000B90200\n" 
+"00BA020000BC020000BD020000BE020000BF020000C102\n" 
+"0000C2020000C3020000C4020000C5020000C7020000C8\n" 
+"020000C9020000CA020000CB020000CD020000CE020000\n" 
+"CF020000F1940310B78500D0020000D1020000D3020000\n" 
+"D4020000D5020000D6020000D7020000D8020000DA0200\n" 
+"00DB020000DC020000DD020000DE020000E0020000E102\n" 
+"0000E2020000E3020000E4020000E5020000E6020000E8\n" 
+"020000E9020000EA020000EB020000EC020000ED020000\n" 
+"EE020000F0020000F1020000F2020000F3020000F40200\n" 
+"00F5020000F6020000F7020000F8020000FA020000FB02\n" 
+"0000FC020000FD020000FE020000FF0200000003000001\n" 
+"0300000203000003030000050300000603000007030000\n" 
+"08030000090300000A0300000B0300000C0300000D0300\n" 
+"000E0300000F0300001003000011030000130300001403\n" 
+"000015030000160300001703000018030000190300001A\n" 
+"0300001B0300001C0300001D0300001E0300001F030000\n" 
+"200300002103000022030000230300002403000090420C\n" 
+"D141EA030C50EA4C0C07D0994205D14FF4001C1CEB410F\n" 
+"38BF8942704710EE101A10EE902AB0EEC00AC80F490052\n" 
+"00F0EEE00A28BF0C3011F1807F38BF12F1807F0CD28A42\n" 
+"38BF80F00400124214D034BF80EE800A80EE200A06F0E8\n" 
+"BE11F1807F08BF80F0040098BF12F1807F08D88A4214BF\n" 
+"00224FF07E5200EE102A06F0D6BE6FF0004100EE101A70\n" 
+"47000010EE101A4FF07E5C01EE90CAC80F31F0004122D0\n" 
+"00EE101AB1F17E5F13D871EEC00ADFF838C031EE801A61\n" 
+"EE200AF1EEE00A614586BF80F0040080EE800A80EE200A\n" 
+"06F0ADBE490011F1807F9CBF6FF0004100EE101A7BF681\n" 
+"AE7047F404353F0349044A096801B91146801A40187047\n" 
+"CCD28800C02D880010B5DFF8F8440020206000F0FCFA60\n" 
+"6105206060012010BDDFF8E004002101600120704770B5\n" 
+"2DED048B84B00C4600210391029101910091DFF8C05401\n" 
+"2C07D1296090ED008AD0ED018A90ED029A7BE069684A1E\n" 
+"68692B6893421DDA1E22591C09B2FFF7E9F985ED020A1E\n" 
+"222868411C09B26869FFF7FEF985ED040A1E222868411C\n" 
+"09B26869FFF713FA85ED030A2868401C00EE100A49E018\n" 
+"D11E2209B2FFF7CBF985ED020A1E22696809B26869FFF7\n" 
+"E1F985ED040A1E22696809B26869FFF7F7F985ED030A95\n" 
+"ED010A2FE01E2209B2FFF7A2F906461E2200216869FFF7\n" 
+"9CF995ED020AD6ED000A30EE600AD0ED000A30EE200A85\n" 
+"ED020A95ED040AD6ED010A30EE600AD0ED010A30EE200A\n" 
+"85ED040A95ED030AD6ED020A30EE600AD0ED020A30EE20\n" 
+"0A85ED030A95ED010AB8EEC00AD5ED020A80EE808AD5ED\n" 
+"040AC0EE808AD5ED030A80EE809AB0EE491AF0EE680AB0\n" 
+"EE480AF19403A0BA850001A903A800F022F80022B0EE49\n" 
+"1AF0EE680AB0EE480A00A902A800F0BCF82868401C2860\n" 
+"00F039FA039981610199C1610299016200994162022C02\n" 
+"D0012100F034FA012004B0BDEC048B70BD38B52DED068B\n" 
+"04460D46B0EE40AAF0EE608AB0EE418AB5EE408AF1EE10\n" 
+"FA40D5F1EE480AFFF73CFA9FEDBF9B10EE100ADDF7BCFE\n" 
+"53EC192BDDF7E6FDDDF7DEFE00EE100A00F02AF9BDEEC0\n" 
+"0A84ED000A2AEE0A0A08EE080A10EE100ADDF7A6FE41EC\n" 
+"100BEEF796FF51EC100BDDF7C6FE00EE900AB1EE680AFF\n" 
+"F712FA10EE100ADDF794FE53EC192BDDF7BEFDDDF7B6FE\n" 
+"00EE100A00F002F9BDEEC00A85ED000A50E0B5EE408AF1\n" 
+"EE10FA4BDDF0EE480AB1EE4A0AFFF7F4F99FED9B9B10EE\n" 
+"100ADDF774FE53EC192BDDF79EFD0022984BEEF7ECFEDD\n" 
+"F792FE00EE100A00F0DEF8BDEEC00A84ED000A2AEE0A0A\n" 
+"08EE080A10EE100ADDF75AFE41EC100BEEF74AFF51EC10\n" 
+"0BDDF77AFE00EE900AB1EE680AFFF7C6F910EE100ADDF7\n" 
+"48FE53EC192BDDF772FD0022834BEEF7C0FEDDF766FE00\n" 
+"EE100A00F0B2F8B1EE400ABDEEC00A85ED000ABDEC068B\n" 
+"31BD38B52DED048B04460D46F0EE408AB0EE609AB0EE41\n" 
+"8AB5EE409AF1EE10FA18D5F1EE490AFFF797F910EE100A\n" 
+"DDF719FE6F4A784BDDF743FDDDF73BFE00EE100A00F087\n" 
+"F8B1EE400ABDEEC00A84ED000A20E0B5EE409AF1EE10FA\n" 
+"1BDBB1EE680AFFF779F910EE100ADDF7FBFD604A694BDD\n" 
+"F725FD00225C4BEEF773FEDDF719FE00EE100A00F065F8\n" 
+"B1EE400ABDEEC00A84ED000AB5EE408AF1EE10FA28D528\n" 
+"EEA80A09EE090A10EE100ADDF7DAFD41EC100BEEF7CAFE\n" 
+"51EC100BDDF7FAFD00EE900AB0EE480AFFF746F910EE10\n" 
+"0ADDF7C8FD464A504BDDF7F2FCDDF7EAFD00EE100A00F0\n" 
+"36F8BDEEC00A85ED000A2CE0B5EE408AF1EE10FA27DD28\n" 
+"EEA80A09EE090A10EE100ADDF7ACFD41EC100BEEF79CFE\n" 
+"51EC100BDDF7CCFD00EE900AB0EE480AFFF718F910EE10\n" 
+"0ADDF79AFD2F4A394BDDF7C4FCDDF7BCFD00EE100A00F0\n" 
+"08F8BDEEC00A85ED000ABDEC048B31BD0000DFED270A9F\n" 
+"ED271AB4EE410AF1EE10FA09DBB4EE600AF1EE10FA04D5\n" 
+"DFED220A30EE200A7047B4EE600AF1EE10FA0BDBDFED1E\n" 
+"0AB4EE600AF1EE10FA04D5DFED1C0A30EE200A7047DFED\n" 
+"1A0ADFED1A1AB4EE610AF1EE10FA09DBB4EE600AF1EE10\n" 
+"FA04D5DFED150A30EE200A7047B4EE600AF1EE10FA08DB\n" 
+"DFED130AB4EE600AF1EE10FA01D530EE010A7047E6C163\n" 
+"1ADCA54C4000806640008066C0E6C1631AFFFF06C40000\n" 
+"34C4F1940330BE850000003444FFFF33C30000B4430100\n" 
+"0744010034430000B4C344C38800DCA54C400100344410\n" 
+"B500F081F806F05DFCFFF775FD454C4422002104F10C00\n" 
+"DCF7ABFC0A2200212046DCF7A6FC0A2200213F48DCF7A1\n" 
+"FC0C22002104F15400DCF79BFC3B4C4FF4B67200212046\n" 
+"DCF794FC1E20208010BD06F038BC80B506F069FCBDE801\n" 
+"40FFF757BD3148F9F762BC10B42F482D491CC81CC10C38\n" 
+"0021418010BC704710B50446FEF7DCFE2088401C2080B4\n" 
+"F9021080B2884200DB2180012010BD38B5214C256D04F1\n" 
+"54012046FFF7E9FF1E2204F154011E48FEF714FF012104\n" 
+"F15400FFF72EFDA80705D5002104F1540006F031FC04E0\n" 
+"012104F1540006F02BFC002104F10C00BDE8344007E012\n" 
+"4870470E49CA6822EA0000C86070470268114301607047\n" 
+"0B4870470C49086070470A480068002101604160816043\n" 
+"F6FF71C1600161416101210176704748C58800A8C58800\n" 
+"B4C5880054C5880020C7880010B590B014000022049290\n" 
+"ED010AB8EEC00AD1ED020AF8EEE00A20EE200AD0ED020A\n" 
+"F8EEE00A91ED011AB8EEC11A00EEC10A8DED050A90ED02\n" 
+"0AB8EEC00AD1ED000AF8EEE00A20EE200AD0ED000AF8EE\n" 
+"E00A91ED021AB8EEC11A00EEC10A8DED060A90ED000AB8\n" 
+"EEC00AD1ED010AF8EEE00A20EE200AD0ED010AF8EEE00A\n" 
+"91ED001AB8EEC11A00EEC10A8DED070A0CAA04A9200000\n" 
+"F0E3F808A9200000F034FA00AA08A90CA800F0DAF89DED\n" 
+"020AB5EE400AF1EE10FA09D19DED010AB5EE400AF1EE10\n" 
+"FA02D19FED550A07E0DDED010A9DED020AFFF700FCB1EE\n" 
+"400A10B010BD0021002305E050F82320521302FB02115B\n" 
+"1C032BF7DB0800704781FB0001400F40EAC10049177047\n" 
+"81FB0001800F40EA8100891770472DE9F04104000D0016\n" 
+"0029682068FFF7F0FF070069686068FFF7EBFF8046A968\n" 
+"A068FFF7E6FFB7EB08010F1AE968E068FFF7DFFF381A30\n" 
+"6069682068FFF7D9FF070029686068FFF7D4FF8046E968\n" 
+"A068FFF7CFFF18EB07014718A968E068FFF7C8FF381A70\n" 
+"60A9682068FFF7C2FF0700E9686068FFF7BDFF80462968\n" 
+"A068FFF7B8FFB7EB080147186968E068FFF7B1FFC019B0\n" 
+"60E9682068FFF7ABFF0700A9686068FFF7A6FF80466968\n" 
+"A068FFF7A1FF18EB07010F1A2968E068FFF79AFFC019F0\n" 
+"60BDE8F08110B403680C68E318136043684C68E3185360\n" 
+"83688C68E3189360C068C9680818D06010BC704702680A\n" 
+"60426852424A60826852428A60C0684042C86070470000\n" 
+"0000000030B591B004001500002000900C2201A8D8F718\n" 
+"FCF19403C0C185000CAA00A92000FFF76CFF08A92000FF\n" 
+"F7DEFF04AA08A90CA8FFF763FF0C2205A92800D8F705FC\n" 
+"11B030BD90ED000AD1ED000A20EE200AD0ED010A91ED01\n" 
+"1A00EEC10AD0ED020A91ED021A00EEC10AD0ED030A91ED\n" 
+"031A00EEC10A82ED000A90ED000AD1ED010A20EE200AD0\n" 
+"ED010A91ED001A00EE810AD0ED020A91ED031A00EE810A\n" 
+"D0ED030A91ED021A00EEC10A82ED010A90ED000AD1ED02\n" 
+"0A20EE200AD0ED010A91ED031A00EEC10AD0ED020A91ED\n" 
+"001A00EE810AD0ED030A91ED011A00EE810A82ED020A90\n" 
+"ED000AD1ED030A20EE200AD0ED010A91ED021A00EE810A\n" 
+"D0ED020A91ED011A00EEC10AD0ED030A91ED001A00EE81\n" 
+"0A82ED030A704790ED000AD1ED000A30EE200A82ED000A\n" 
+"90ED010AD1ED010A30EE200A82ED010A90ED020AD1ED02\n" 
+"0A30EE200A82ED020A90ED030AD1ED030A30EE200A82ED\n" 
+"030A704700009FED410ADFED400A90ED001AD0ED001A21\n" 
+"EE211AD0ED011A90ED012A01EE821AD0ED021A90ED022A\n" 
+"01EE821AD0ED031A90ED032A01EE821AB0EE410AB0EE00\n" 
+"1AB4EE410AF1EE10FA3CD5F6EE000A60EE200A20EE801A\n" 
+"F7EE081A41EE401A21EE800A20EE801AF7EE081A41EE40\n" 
+"1A21EE800A20EE801AF7EE081A41EE401A21EE800A60EE\n" 
+"800AB7EE081A00EEC01A21EE000AD0ED000A60EE800AC0\n" 
+"ED000AD0ED010A60EE800AC0ED010AD0ED020A60EE800A\n" 
+"C0ED020AD0ED030A20EE800A80ED030A08E05FF07E5101\n" 
+"6000214160002181600021C16090ED000AD0ED000A20EE\n" 
+"200AD0ED010A90ED011A00EE810AD0ED020A90ED021A00\n" 
+"EE810AD0ED030A90ED031A00EE810A70470000000010B5\n" 
+"040094ED000AD4ED000A20EE200AD4ED010A94ED011A00\n" 
+"EE810AD4ED020A94ED021A00EE810AD4ED030A94ED031A\n" 
+"00EE810A05F0A0F9B5EE400AF1EE10FA18D0D4ED000AC0\n" 
+"EE800AC4ED000AD4ED010AC0EE800AC4ED010AD4ED020A\n" 
+"C0EE800AC4ED020AD4ED030A80EE800A84ED030A08E05F\n" 
+"F07E502060002060600020A0600020E06010BD02680A60\n" 
+"90ED010AB1EE400A81ED010A90ED020AB1EE400A81ED02\n" 
+"0A90ED030AB1EE400A81ED030A704710B52DED068B84B0\n" 
+"0C0090ED000A90ED018AD0ED028A90ED039AD0ED040AD0\n" 
+"ED059A90ED06AAD0ED07AA90ED081AF7EE001A70EE211A\n" 
+"71EEA01A71EE811AB1EE002AC1EE821ACDED001AF7EE00\n" 
+"1A70EE211A71EEE01A71EEC11AB1EE002AC1EE821ACDED\n" 
+"011AF7EE001A71EEC01A71EEA01A71EEC11AB1EE002AC1\n" 
+"EE821ACDED021AF7EE001A31EEC00A30EE600A30EE010A\n" 
+"F1940350C58500F1EE000A80EE200A8DED030A9DED000A\n" 
+"B5EE400AF1EE10FA01D5002000909DED010AB5EE400AF1\n" 
+"EE10FA01D5002001909DED020AB5EE400AF1EE10FA01D5\n" 
+"002002909DED030AB5EE400AF1EE10FA01D50020039000\n" 
+"98DDF777F941EC100BEEF767FA51EC100BDDF797F90090\n" 
+"0198DDF76BF941EC100BEEF75BFA51EC100BDDF78BF901\n" 
+"900298DDF75FF941EC100BEEF74FFA51EC100BDDF77FF9\n" 
+"02900398DDF753F941EC100BEEF743FA51EC100BDDF773\n" 
+"F903909DED000ADDED010AB4EE600AF1EE10FA38DB9DED\n" 
+"000ADDED020AB4EE600AF1EE10FA2FDB9DED000ADDED03\n" 
+"0AB4EE600AF1EE10FA26DB0098009039EEEA0ADDED000A\n" 
+"B1EE001A60EE810A80EE200A8DED010A3AEE680ADDED00\n" 
+"0AB1EE001A60EE810A80EE200A8DED020A38EE490ADDED\n" 
+"000AB1EE001A60EE810A80EE200A8DED030AC4E09DED01\n" 
+"0ADDED000AB4EE600AF1EE10FA38DB9DED010ADDED020A\n" 
+"B4EE600AF1EE10FA2FDB9DED010ADDED030AB4EE600AF1\n" 
+"EE10FA26DB39EEEA0ADDED010AB1EE001A60EE810A80EE\n" 
+"200A8DED000A0198019038EE090ADDED010AB1EE001A60\n" 
+"EE810A80EE200A8DED020A3AEE280ADDED010AB1EE001A\n" 
+"60EE810A80EE200A8DED030A82E09DED020ADDED000AB4\n" 
+"EE600AF1EE10FA38DB9DED020ADDED010AB4EE600AF1EE\n" 
+"10FA2FDB9DED020ADDED030AB4EE600AF1EE10FA26DB3A\n" 
+"EE680ADDED020AB1EE001A60EE810A80EE200A8DED000A\n" 
+"38EE090ADDED020AB1EE001A60EE810A80EE200A8DED01\n" 
+"0A0298029039EEAA0ADDED020AB1EE001A60EE810A80EE\n" 
+"200A8DED030A40E09DED030ADDED000AB4EE600AF1EE10\n" 
+"FA37DB9DED030ADDED010AB4EE600AF1EE10FA2EDB9DED\n" 
+"030ADDED020AB4EE600AF1EE10FA25DB38EE490ADDED03\n" 
+"0AB1EE001A60EE810A80EE200A8DED000A3AEE280ADDED\n" 
+"030AB1EE001A60EE810A80EE200A8DED010A39EEAA0ADD\n" 
+"ED030AB1EE001A60EE810A80EE200A8DED020A03980390\n" 
+"9DED000ABEEEC10A84ED000A9DED010ABEEEC10A84ED01\n" 
+"0A9DED020ABEEEC10A84ED020A9DED030ABEEEC10A84ED\n" 
+"030A04B0BDEC068B10BD70B504000D0061686068FFF717\n" 
+"FC060021682068FFF712FC8019B0F180402860A1686068\n" 
+"FFF70AFC06002168E068FFF705FC301A6860E1686068FF\n" 
+"F7FFFB06002168A068FFF7FAFB8019A860A1686068FFF7\n" 
+"F4FB06002168E068FFF7EFFB8019E860A168A068FFF7E9\n" 
+"FB060021682068FFF7E4FB8019B0F180402861E168A068\n" 
+"FFF7DCFB060021686068FFF7D7FB301A6861E1686068F1\n" 
+"9403E0C88500FFF7D1FB06002168A068FFF7CCFB301AA8\n" 
+"61E168A068FFF7C6FB060021686068FFF7C1FB8019E861\n" 
+"E168E068FFF7BBFB060021682068FFF7B6FB8019B0F180\n" 
+"40286270BD02160A7002144A7002128A70C87008007047\n" 
+"0000DFED0C0AB4EE600AF1EE10FA04DBDFED0A0A30EE20\n" 
+"0A0BE0DFED080AB4EE600AF1EE10FA04D5DFED060A30EE\n" 
+"200AFFE770470000DB0F4940DB0FC9C0DA0F49C0DB0FC9\n" 
+"4090F90010012901DB00201EE090F90010002901D50420\n" 
+"18E090F90110012901DB012012E090F90110002901D505\n" 
+"200CE090F90210012901DB022006E090F90200002801D5\n" 
+"062000E0072080B2704738B504002000FFF7D4FF0500E0\n" 
+"1CFFF7D0FF55EAC005A01DFFF7CBFF55EA8015280080B2\n" 
+"32BD00220A6000224A6000228A600022CA6000220A6100\n" 
+"224A6100228A610022CA6100220A62420702D55FF0FF32\n" 
+"00E0012280B210F0030341F82320820602D55FF0FF3200\n" 
+"E00122C0F3C1039BB211EB8303DA60C20502D55FF0FF32\n" 
+"00E00122C0F3811080B211EB800082617047F8B504000D\n" 
+"0016001F00600702D55FF0FF3000E001202900A4B214F0\n" 
+"030256F8222000FB02F0FFF707FB3860A00602D55FF0FF\n" 
+"3000E001202900C4F3C10292B256F8222000FB02F0FFF7\n" 
+"F6FA7860E00502D55FF0FF3000E001202900C4F3811292\n" 
+"B256F8222000FB02F0FFF7E5FAB860F1BD30B58DB00C00\n" 
+"150000210BE050F8212000EE102AB8EEC00A04AA12EB81\n" 
+"0282ED000A491C0929F1DB00A904A8FFF7E0FC2A0000A9\n" 
+"2000FFF7CDFA0DB030BD10B40022026000224260002205\n" 
+"E010EB820351F822401C61521C052AF7DB10BC704780ED\n" 
+"090A80ED0A0AD0ED060AB7EE001A70EE810A90ED071A70\n" 
+"EE810A80EE200A80ED000A01684160704780ED090AD0ED\n" 
+"060A90ED001A90ED090A00EEC10AD0ED070A90ED011A00\n" 
+"EEC10AD0ED040A90ED001AF0EE401A40EE811AD0ED050A\n" 
+"90ED011A40EE811AC0ED0A1AD0ED0A0A90ED081A60EE81\n" 
+"0AC0ED0A0A0168416080ED000A90ED0A0A70472DE9F843\n" 
+"04000D001600002712E055F82810032000FB087054F820\n" 
+"00FFF75FFA10EB090918F10108B8F1030FEFDB46F82790\n" 
+"7F1C032F04DA5FF000095FF00008F2E7BDE8F18338B504\n" 
+"000D009FED2C0AD4ED000AF8EEE00A94ED001AB8EEC11A\n" 
+"DFED281A40EEC11AD4ED010AF8EEE00A94ED011AB8EEC1\n" 
+"1A40EEC11AD4ED020AF8EEE00A94ED021AB8EEC11A40EE\n" 
+"C11AF5EE401AF1EE10FA02D59FED180A1FE094ED000AF8\n" 
+"EEC00A94ED000AB8EEC01A9FED140A00EEC10AD4EDF194\n" 
+"0370CC8500010AF8EEE00A94ED011AB8EEC11A00EEC10A\n" 
+"D4ED020AF8EEE00A94ED021AB8EEC11A00EEC10A04F075\n" 
+"FDBDEEC00A85ED000A206868606068A860A068E8600020\n" 
+"32BD0000000000000000805D820707D010F8012B11F801\n" 
+"3BBAB19A42F6D014E002680B689A42A2F1013301BF9343\n" 
+"13F0803F50F8042F51F8043FF3D010F8012B11F8013B0A\n" 
+"B19A42F8D0D01A70470000704780B505F086F805F07EFF\n" 
+"002809D005F07AFF23231D4A1D49FFF7F1FF05F073FF20\n" 
+"E0FAF7BFFE002809D0FAF7BBFE2623164A1649FFF7E3FF\n" 
+"FAF7B4FE12E004F0E0FF002809D004F0DCFF28230F4A0F\n" 
+"49FFF7D5FF04F0D5FF04E0012005F0B7F80100002002BD\n" 
+"80B505F068FF002809D005F064FF4723064A0549FFF7C0\n" 
+"FF05F05DFF00E0002002BD00000C6B86001C6B8600486B\n" 
+"8600704700B510EE100ADCF77AFD0022DFF8403ADCF7A3\n" 
+"FC05F05FFFDFF8302AC2E9140100BDDFF8242AD2E91201\n" 
+"7047DFF81C1AD0E90E23C1E91223DFF8100A0121816570\n" 
+"470121026BD20501D400201AE0DFF8042AD2F88820DFF8\n" 
+"FC391B689A4201DA00200FE0D0F88000C0050AD5DFF8E8\n" 
+"09D0F8E801DFF8E0295268904203DB51F0040108007047\n" 
+"0020FCE73EB50400002519E0DFF8C00910EBC502D2E904\n" 
+"01DFF8B429D2F86022E1F77AF9DFF8A82912EB8502D2F8\n" 
+"98201204D3178018594100A941F825006D1C032DE3DBDF\n" 
+"F88C0906F0A8F90198002801D4019801E0019840420099\n" 
+"002901D4009901E000994942884207DA0098002801D400\n" 
+"9809E00098404206E00198002801D4019801E001984042\n" 
+"0299002901D4029901E002994942814206DB0298002801\n" 
+"D4029801E002984042616AFFF7E2F8B0F5481F05DBDFF8\n" 
+"1809052180F8381291E00198DFF8FC18C96A401A002805\n" 
+"D40198DFF8F018C96A401A04E0DFF8E408C06A0199401A\n" 
+"0099DFF8D828926A891A002905D40099DFF8CC28926A89\n" 
+"1A04E0DFF8C018896A009A891A884212DA0098DFF8B018\n" 
+"896A401A002805D40098DFF8A418896A451A17E0DFF898\n" 
+"08806A0099451A11E00198DFF88C18C96A401A002805D4\n" 
+"0198DFF87C18C96A451A04E0DFF87408C06A0199451A02\n" 
+"98DFF86818096B401A002805D40298DFF85818096B401A\n" 
+"04E0DFF85008006B0299401AA84211DB0298DFF8401809\n" 
+"6B401A002805D40298DFF83018096B451A04E0DFF82808\n" 
+"006B0299451A616A2800FFF764F80500022004F056FDDF\n" 
+"F81808D0F86402854206DA032100A8FAF7F0FF2000FFF7\n" 
+"ECFEDFF8F40700998162DFF8EC070199C162DFF8F19403\n" 
+"00D08500E4070299016337BD30B4D0E92623D0E9284510\n" 
+"1B73EB050130BC7047016EC26E891A426E036FD21A8A42\n" 
+"02DB416E026F891A826E436FD21A8A4202DB816E406F09\n" 
+"1A0800704780B510220021DFF8A807DBF7B9FB10220021\n" 
+"DFF8A007DBF7B3FB10220021DFF89807DBF7ADFB102200\n" 
+"21DFF89007DBF7A7FB01BD80B5DFF8740706F09CF8DFF8\n" 
+"800706F098F801BD30B4DFF85C27D2F89822002A04D1DF\n" 
+"F85027C2E9A4010CE0DFF84827D2E9A4458D4206DC01DB\n" 
+"844203D2DFF83427C2E9A401DFF82C07D0F89802401CDF\n" 
+"F82417C1F8980230BC704730B4DFF81427D2F8A822002A\n" 
+"04D1DFF80827C2E9A8010CE0DFF80027D2E9A8458D4206\n" 
+"DC01DB844203D2DFF8EC26C2E9A801DFF8E406D0F8A802\n" 
+"401CDFF8DC16C1F8A80230BC704730B4DFF8CC26D2F878\n" 
+"22002A04D1DFF8C026C2E99C010CE0DFF8B826D2E99C45\n" 
+"A94206DC01DBA04203D2DFF8A426C2E99C01DFF89C06D0\n" 
+"F87802401CDFF89416C1F8780230BC704730B4DFF88426\n" 
+"D2F88822002A04D1DFF87826C2E9A0010CE0DFF87026D2\n" 
+"E9A045A94206DC01DBA04203D2DFF85C26C2E9A001DFF8\n" 
+"5406D0F88802401CDFF84C16C1F8880230BC7047F8B505\n" 
+"000124DFF83C06FFF730FFDFF82416096C814205DA0024\n" 
+"FFF757FF2000C0B24FE02800FFF702FE0500002D03D102\n" 
+"242000C0B245E0680723D5DFF81C0605F085FD000D40EA\n" 
+"01300915DFF8F425C2E98A01DFF8E005D0E90423DFF8E4\n" 
+"05D0E98A67BB4209DC01DBB24206D20024DFF8D025D2E9\n" 
+"8A01FFF79EFFDFF8DC0505F0C5FFE8071BD5DFF8BC0505\n" 
+"F05FFDDFF8B025C2E99001DFF89C05D0E90623DFF8A005\n" 
+"D0E99067BB4209DC01DBB24206D20024DFF88C25D2E990\n" 
+"01FFF758FF2000C0B2F2BD1FB5040094F8300010F0C000\n" 
+"C02804D1DFF86C15201D05F0D2FE94F8800010F0C000C0\n" 
+"2805D1DFF86C1514F1540005F0C6FE94F8D00010F0C000\n" 
+"C02814D1002007E014EB4001B1F9A41001AA42F8201040\n" 
+"1C0328F5DBDFF840050090D4E9362301A805F012FF1AE0\n" 
+"94F8D00010F06000602814D1002008E014EB8001D1F8B8\n" 
+"10891301AA42F82010401C0328F4DBDFF808050090D4E9\n" 
+"362301A805F0F6FE1FBDD0B504000020216BC90501D400\n" 
+"209BE194F8301011F05001402900D1012094F8801011F0\n" 
+"5001402900D1012094F8D01011F05001402900D1012000\n" 
+"280BD0FFF792FEDFF898040021C0F83012DFF88C040021\n" 
+"80F83812DFF88404D0F85802E16A88423FD0DFF87404E1\n" 
+"6AC0F85812DFF86C04D0F858020A280FDADFF8F1940390\n" 
+"D385005404406B4000DFF858140860DFF84404806B401C\n" 
+"DFF84814C1F85C020CE0DFF83404406BDFF838140860DF\n" 
+"F83404DFF82414896BC0F85C12DFF82404D0F85C02D0F1\n" 
+"1000DFF81814C1F86002DFF810044FF48041C0F8641264\n" 
+"20DFF8F813896B8840DFF8F0130864DFF8F403D0F86802\n" 
+"E16F884227D0DFF8E803E16FC0F86812DFF8DC03D0F868\n" 
+"020A280FDADFF8C403406B4000DFF8C8134860DFF8B803\n" 
+"806B401CDFF8BC13C1F86C020CE0DFF8B003DFF8A01349\n" 
+"6B4160DFF8A403DFF89413896BC0F86C122000FFF70CFF\n" 
+"DFF8900390F8380200280CD002283ED01CD3042800F098\n" 
+"8044D3062800F0DC80C0F0CD80EBE0DFF86C03D0F83002\n" 
+"DFF86413421CC1F830220A2806DBFFF7EFFDDFF8500301\n" 
+"2180F83812D8E0DFF84403D0F8B800012819D12000FFF7\n" 
+"7AFEC0B2002805D1DFF82C03052180F8381207E0C0B201\n" 
+"2804D1DFF81C03022180F83812DFF82C0305F03CFEFFF7\n" 
+"AFFDB7E0DFF80403032180F838122000FFF795FCFFF7BE\n" 
+"FDACE02000FFF754FEC0B2002804D1B848052180F83812\n" 
+"45E0C0B2012842D1D4F8D000C0052DD505F0B6FE002829\n" 
+"D1B74805F02FFEC117AE4AC2E98801AA48D0E90223AB48\n" 
+"D0E98867BB4207DC01DBB24204D2A748052180F8381219\n" 
+"E0AC48FFF754FDA04AD2E90867B94211DB01DCB0420ED3\n" 
+"9F48042180F838122000FFF753FC06E09B48042180F838\n" 
+"122000FFF74BFC984AD2E98A01FFF79FFD954AD2E99001\n" 
+"FFF776FD5AE0D4F8D000C0051AD505F072FE002816D195\n" 
+"4805F0EBFDC1178C4AC2E988018848D0E902238948D0E9\n" 
+"8867BB4207DC01DBB24204D28548052180F838123BE020\n" 
+"00FFF7E3FDC0B2002804D18048052180F838120FE0C0B2\n" 
+"01280CD12000FFF710FC7A4AD2E98A01FFF764FD784AD2\n" 
+"E99001FFF73BFD1FE07548062180F83812012004F02CFA\n" 
+"FFF727FD774805F095FD12E02000FFF7BAFDC0B2012804\n" 
+"D16B48022180F8381207E0C0B2002804D1FFF713FD6D48\n" 
+"05F081FD0020D0BD10B504002100634805F09EFD210066\n" 
+"4805F09AFD2100654805F096FD01205C49D1F890108840\n" 
+"5749486356485949D1F89010816364205349896B884052\n" 
+"49086410BD0000000080B54FF42C7200215048DBF78AF8\n" 
+"602200214B48DBF785F8524805F07DFD4C4805F07AFD50\n" 
+"4805F077FD454841F288320023C0E90623424814220023\n" 
+"C0E902233F4864220023C0E904233D48474A0023C0E908\n" 
+"233D480121C0F834124020FFF7ACFF3A480021C0F85812\n" 
+"9FED370AFFF742FB334800218165002002BDF1940320D7\n" 
+"850080B5394805F04AFD324805F047FD374805F044FD2E\n" 
+"480121C0F834122C48012180F8381200220321012004F0\n" 
+"B3FB072264213048FAF734FE02BD10B5FFF7A2FF040000\n" 
+"2C08D040F279232B4A2B492000FFF712FB20000FE02948\n" 
+"05F04DFA0400002C08D04FF41F73234A24492000FFF703\n" 
+"FB200000E0002010BDF8B5050000241048806D012819D1\n" 
+"286BC00516D5FFF705FBD5E90E23101A73EB0101002904\n" 
+"DC01DB002801D2002408E0064AD2E91467B94203DC01DB\n" 
+"B04200D201242000F2BD00000000C84A880065CDCD4100\n" 
+"0096441848880028488800884A8800A84A8800984A8800\n" 
+"B84A880088498800D84888000008AF2F15D38500546A86\n" 
+"006C6A860021D7850000B5801A9941DFF8C02A0023CAF7\n" 
+"80FD00BD000070B52DED028B98B005000E0008EE102A1C\n" 
+"0095ED000AB8EEC00AD5ED000AF8EEE00A20EE200AD5ED\n" 
+"010AF8EEE00A95ED011AB8EEC11A00EE810AD5ED020AF8\n" 
+"EEE00A95ED021AB8EEC11A00EE810A03F07DFFF0EE408A\n" 
+"18EE900ADCF701F831F000410122DFF8503AE8F76AFF00\n" 
+"F2BC8096ED000AB8EEC00ADFEDBC0A80EE200A8DED040A\n" 
+"96ED010AB8EEC00ADFEDB70A80EE200A8DED050A96ED02\n" 
+"0AB8EEC00ADFEDB20A80EE200A8DED060A96ED030AB8EE\n" 
+"C00ADFEDAD0A80EE200A8DED070A0020089095ED000AB8\n" 
+"EEC00A80EE280A8DED090A95ED010AB8EEC00A80EE280A\n" 
+"8DED0A0A95ED020AB8EEC00A80EE280A8DED0B0A14AA08\n" 
+"A904A8FEF75AFC10A904A8FEF7ABFD00AA10A914A8FEF7\n" 
+"51FC9DED020ADDED020A20EE200ADDED010A9DED011A00\n" 
+"EE810ADFEDC80AB4EE600AF1EE10FA02D59FEDC60A15E0\n" 
+"DFEDC50AB4EE600AF1EE10FA02D59FEDC30A0BE0DFEDC2\n" 
+"0AB4EE600AF1EE10FA02D59FEDC00A01E0B6EE000AF8EE\n" 
+"C80A9FEDBD1AC0EE810A20EE800A00200C90DDED020A60\n" 
+"EE800ACDED0D0ADDED010AF1EE600A20EE800A8DED0E0A\n" 
+"00200F9000AA04A90CA8FEF706FC00AA04A900A8FEF76A\n" 
+"FC00A8FEF70FFD9DED000ABEEEC10A84ED000A9DED010A\n" 
+"BEEEC10A84ED010A9DED020ABEEEC10A84ED020A9DED03\n" 
+"0ABEEEC10A84ED030A04E0102231002000D6F7E3FF18B0\n" 
+"BDEC028B70BD000030B52DED028B81B005000C0095ED00\n" 
+"0AB8EEC00AD5ED000AF8EEE00A20EE200AD5ED010AF8EE\n" 
+"E00A95ED011AB8EEC11A00EE810AD5ED020AF8EEE00A95\n" 
+"ED021AB8EEC11A00EE810A03F082FEDFED870AB4EE600A\n" 
+"F1EE10FA09D55FF080402060002060600020A0600020E0\n" 
+"607CE0D5ED020AF8EEE00AC0EE808AB7EEF19403B0DA85\n" 
+"00000A30EE680AB5EE400AF1EE10FA04DDB7EE000A30EE\n" 
+"680A01E09FED760AF0EE000A80EE200A03F055FEB0EE40\n" 
+"8AB7EE000A38EE800AB5EE400AF1EE10FA04DDB7EE000A\n" 
+"38EE800A01E09FED6A0AF0EE000A80EE200A03F03DFEF0\n" 
+"EE408A95ED000AB8EEC00AD5ED000AF8EEE00A20EE200A\n" 
+"D5ED010AF8EEE00A95ED011AB8EEC11A00EE810A03F025\n" 
+"FEDFED590AB4EE600AF1EE10FA09D55FF0804020600020\n" 
+"60600020A0600020E0601FE0FEEEC18AC4ED008AD5ED01\n" 
+"0AF8EEE00AC0EE800A60EE880AFEEEC10AC4ED010AD5ED\n" 
+"000AF8EEE00A80EE800AF1EE480A20EE800ABEEEC10A84\n" 
+"ED020A0020E06001B0BDEC028B30BD0000804E38B50400\n" 
+"0D0094ED000AB8EEC00AD4ED000AF8EEE00A20EE200AD4\n" 
+"ED010AF8EEE00A94ED011AB8EEC11A00EE810AD4ED020A\n" 
+"F8EEE00A94ED021AB8EEC11A00EE810AD4ED030AF8EEE0\n" 
+"0A94ED031AB8EEC11A00EE810AB5EE400AF1EE10FA09D8\n" 
+"5FF080402860002068600020A8600020E86031E003F0B2\n" 
+"FDF7EE000A80EE800ADFEDB60A20EE200AD4ED000AF8EE\n" 
+"E00A60EE800AFDEEE00AC5ED000AD4ED010AF8EEE00A60\n" 
+"EE800AFDEEE00AC5ED010AD4ED020AF8EEE00A60EE800A\n" 
+"FDEEE00AC5ED020AD4ED030AF8EEE00A20EE800ABDEEC0\n" 
+"0A85ED030A31BD000017B75139A69BC43B0AD7233CCDCC\n" 
+"CC3DCDCC4C3E9A99993E0014CD470100803F0000000010\n" 
+"B52DED048B8EB0040094F85401400640F11F81D4F84401\n" 
+"DFF830160968401A002800D54042D4F86C11DFF8242651\n" 
+"43814204DADFF814060321816303E0DFF80C0602218163\n" 
+"D4F85401800506D5DFF8FC1514F5A270FFF753FFFAE0D4\n" 
+"F85401800411D5DFF8E4055FF080418164DFF8DC050021\n" 
+"C164DFF8D40500210165DFF8CC0500214165C6E0002103\n" 
+"A8FAF785F90C22DFF8C01503A804F0D2F8002807D1D4F8\n" 
+"6801DFF8A415896D884200F0B38000AB03AA616A206880\n" 
+"B2FEF77BFE9DED000AB8EEC00ADDED000AF8EEE00A20EE\n" 
+"200ADDED010AF8EEE00A9DED011AB8EEC11A00EE810ADD\n" 
+"ED020AF8EEE00A9DED021AB8EEC11A00EE810A03F0EFFC\n" 
+"B0EE408A9FED570A28EE000ADFED560A80EE200ADFED55\n" 
+"0A80EE200AD4ED5A0AF8EEE00A20EE800ADFED510A80EE\n" 
+"200AF0EE000AC0EE208AB0EE680A05F068FAB0EE409AB0\n" 
+"EE680A05F065FAF0EE000AB4EE608AF1EE10FA11D5DFF8\n" 
+"F0045FF080418164DFF8E8040021C164DFF8E004002101\n" 
+"65DFF8D8040021416541E0BEEEC19ADFF8C80480ED129A\n" 
+"F1EE400A9FED331A60EE810A9DED001AF1940340DE8500\n" 
+"B8EEC11A60EE810AC0EE880AFDEEE00ADFF8A004C0ED13\n" 
+"0AF1EE400A9FED291A60EE810A9DED011AB8EEC11A60EE\n" 
+"810AC0EE880AFDEEE00ADFF87804C0ED140AB1EE400ADF\n" 
+"ED1F0A20EE200ADDED020AF8EEE00A20EE200A80EE080A\n" 
+"BDEEC00ADFF8500480ED150A0C2203A9DFF84C04D6F79E\n" 
+"FDDFF83C04D4F86811816506AADFF83C1414F5A270FEF7\n" 
+"EBF80AAA06A9DFF83004FEF7E5F8DFF8281414F5A270FE\n" 
+"F755F906AA0AA9DFF80804FEF7D9F8DFF8001406A8FFF7\n" 
+"57FE0EB0BDEC048B10BD00000000804EDB0F4940000034\n" 
+"43000080470024744970B592B0040001250026DFF8D003\n" 
+"006F400503D5D4F85401C00408D4DFF8BC03006F400504\n" 
+"D5D4F85401002800D1012694F8800010F05000402808D0\n" 
+"DFF89C03C06E00282DD094F88000400629D5002E10D1DF\n" 
+"F8A01314F16800FFF75FFDD4F85401C00510D5DFF88413\n" 
+"14F5A270FEF702F909E0DFF8641314F5A270FFF708FEDF\n" 
+"F85803042181630AA9DFF85003FEF7F2F8DFF85C230AA9\n" 
+"DFF85803FEF775F821E094F8540110F05000402808D0DF\n" 
+"F82C03C06E002816D094F85401400612D5DFF8281314F5\n" 
+"A270FEF7D5F8D4F88000C00508D50AA9C148FEF7CDF8C4\n" 
+"4A0AA9C448FEF752F8002E06D1D4F85401C00551D52000\n" 
+"FFF74CFEBE4AB849BC48FEF744F894F88000400640F1EB\n" 
+"80206B10F48070D4F8541111F480710843002800F0D080\n" 
+"00AA14F16801B248FEF7B3F8A26EA36EE06EE16E81FB00\n" 
+"01C3FB0201226F236FC3FB020102291BDB02DCB0F1804F\n" 
+"17D303A803F061FE039A039B0498049981FB0001C3FB02\n" 
+"01059A059BC3FB0201022906DB02DCB0F1804F02D39748\n" 
+"042181639648806B042807D1002593484FF4966141671F\n" 
+"E00020A4E09048806B022803D08E48806B032808D1A06F\n" 
+"41F2883190FBF1F5012D0EDA01250CE08748806B012808\n" 
+"D1A06F41F2883190FBF1F5012D00DA01256D008148406F\n" 
+"01280CDB7F48806B042808DA7D48406F022195FBF1F140\n" 
+"1A7A494867ED007848806B032800D06D007D4845430020\n" 
+"0690D4E95823D4E95601FFF77BFBB0F57A7F04DD6F48D4\n" 
+"E95623C0E91E236D48D0E91E23D4E95601FFF76CFBB0F5\n" 
+"7A7F22DD0198002801D4019801E00198404244F6216188\n" 
+"4209DA0298002801D4029801E002984042B0F5FA6F0DDD\n" 
+"290001988002FDF787FF07902900009840428002FDF780\n" 
+"FF089006E0019880020790009840428002089000200990\n" 
+"0EAA574906A8FDF777FF554A0EA95448FDF7D5FF534952\n" 
+"48FFF7F1FC0AA94A48FDF7E0FF4E4AF19403D0E185000A\n" 
+"A94E48FDF765FF0FE04C4BA26F4B4914F16800FFF728FB\n" 
+"0AA94248FDF7CFFF454A0AA94548FDF754FF002012B070\n" 
+"BD10B50400D4F8540110F41060B0F5106F01D1002037E0\n" 
+"D4F85401C00508D4206BC00503D5D4F88000C00501D400\n" 
+"202AE0D4F8540110F4A060B0F5A06F09D1102214F5A271\n" 
+"3148D6F7D3FB2A480121C16605E02000FFF760FE264800\n" 
+"21C1662548D4F854110167D4F85401C00505D4D4E90E23\n" 
+"264803F08CFB04E0D4E95623234803F086FB002010BD80\n" 
+"B5802200211948DAF799FA17485FF08041016115485FF0\n" 
+"8041016013485FF08041016211485FF08041C1630F485F\n" 
+"F08041C1650D4800214167002002BD80B5FFF7DEFF0028\n" 
+"03D10FF2090004F0A0FC02BD000080B51322C8210C48FA\n" 
+"F76CF802BD000040420F000000D040284B880071981C00\n" 
+"644B8800704B8800844B8800484B8800384B8800A69BC4\n" 
+"0001E2850030B589B00400150006AA00A8FAF745F903A8\n" 
+"03F0D8FB00980399B0EBA130009001980499B0EBA13001\n" 
+"9002980599B0EBA13002909DED000AB8EEC00ADFED6D0A\n" 
+"20EE200A84ED000A9DED010AB8EEC00ADFED680A20EE20\n" 
+"0A84ED010A9DED020AB8EEC00ADFED630A20EE200A84ED\n" 
+"020A2900DFF81404D0F8DC00F9F77DFC09B030BD000030\n" 
+"B585B00400150000A803F0F0FB0098002818D49DED010A\n" 
+"BAEEC10A84ED000A9DED020ABAEEC10A84ED010A9DED03\n" 
+"0ABAEEC10A84ED020A9DED000ABAEEC10A84ED030A1FE0\n" 
+"0198404200EE100ABAEEC10A84ED000A0298404200EE10\n" 
+"0ABAEEC10A84ED010A0398404200EE100ABAEEC10A84ED\n" 
+"020A0098404200EE100ABAEEC10A84ED030A5FF07E5020\n" 
+"612900DFF87403D0F8DC00F9F72DFC05B030BD30B58BB0\n" 
+"0500140004AA06A8FAF7B4F804A900A803F08DFB009800\n" 
+"2818D49DED010ABAEEC10A85ED000A9DED020ABAEEC10A\n" 
+"85ED010A9DED030ABAEEC10A85ED020A9DED000ABAEEC1\n" 
+"0A85ED030A1FE00198404200EE100ABAEEC10A85ED000A\n" 
+"0298404200EE100ABAEEC10A85ED010A0398404200EE10\n" 
+"0ABAEEC10A85ED020A0098404200EE100ABAEEC10A85ED\n" 
+"030A00202861DFF8D002006CC00407D5DFF8C402006CC0\n" 
+"F3801010F0010006E0DFF8B402406BC0F3801010F00100\n" 
+"2100DFF8A402D0F8EC00F9F73FFC0BB030BD000000000A\n" 
+"E81C397FB5040000254FF47A76A34AA349A44803F080FB\n" 
+"9E48216B01639D48D4F8801041639B48D4F8D010816399\n" 
+"48D4F854110164206BC00501D5E66A0025D4F88000C005\n" 
+"04D5E06FB04201DAE66F0125D4F8F1940360E58500D000\n" 
+"C00506D5D4F8CC00B04202DAD4F8CC600225D4F85401C0\n" 
+"0506D5D4F86C01B04202DAD4F86C610325D4E91001D4E9\n" 
+"0E23994207D1904205D18148006B30F040007F490863D4\n" 
+"E92401D4E92223994207D1904205D17A48406B30F04000\n" 
+"78494863D4E93801D4E93623994207D1904205D1734880\n" 
+"6B30F0400071498863D4E95801D4E95623994207D19042\n" 
+"05D16C48006C30F040006A490864D4F85401C00509D5D4\n" 
+"F88000D4F8D0100840C0050DD45FF0FF350AE0206BD4F8\n" 
+"80100840D4F8D0100840C00501D45FF0FF35002D05D002\n" 
+"2D1ED00FD3032D29D036E0206BC0F3801010F001005649\n" 
+"C8635548D4E90E23C0E902232CE0D4F88000C0F3801010\n" 
+"F001004F49C8634E48D4E92223C0E902231EE0D4F8D000\n" 
+"C0F3801010F001004849C8634748D4E93623C0E9022310\n" 
+"E0D4F85401C0F3801010F001004149C8634048D4E95623\n" 
+"C0E9022302E03D480021C163404A00A901A8F9F796FF39\n" 
+"489DF900100160002510E094F8D00040060BD501A850F8\n" 
+"250000EE100ABAEEC80A304810EB850080ED320A6D1C03\n" 
+"2D31DA94F8D00010F0500040280DD101A850F8250000EE\n" 
+"100AB8EEC00A2C20254900FB05104430FEF70DFA94F8D0\n" 
+"0010F0C000C028D2D101A850F8250000EE100AB8EEC00A\n" 
+"2C201B4900FB05104430FEF70EFADFED190A20EE200A16\n" 
+"4810EB850080ED320ACAE7002004B070BD80B537224FF4\n" 
+"61711648F9F72EFE02BD10B5F82200210C48DAF72AF800\n" 
+"2408E011492C20094A00FB04204430FEF7C3F9641C032C\n" 
+"F4DB002010BD80B5FFF7E8FF0A4804F03EFA02BD0000E8\n" 
+"43880000008037F0438800EC4388000844880000448800\n" 
+"11E58500C427880057E78500F0B52DED048B85B004000E\n" 
+"0017001D003C22DFF8681BDFF8680B03F042FF5022DFF8\n" 
+"601BDFF8600B03F03BFF0C223900DFF8580BD6F7FAF810\n" 
+"223100DFF8500BD6F7F4F89FEDBA8ADFF8340BD0F85C01\n" 
+"401CDFF82C1BC1F85C01DFF8240BD0F85C01072804DBDF\n" 
+"F8180B0621C0F85C11DFF80C0BD0F85C01D0F106062DE0\n" 
+"00AADFF8FC0A10EB061010F148012800FDF7CAFC00AA0C\n" 
+"20DFF8E81A00FB061114F1B800FDF791FBF0EE408A18EE\n" 
+"900ADBF711F831F0004141EC190B18EE100ADBF709F831\n" 
+"F0004102000B0051EC190BE7F759FF01D2B0EE688A761C\n" 
+"062ECFDB18EE100ADAF7F7FF41EC100B05B0BDEC048BF0\n" 
+"BD00002DE9F0432DED048B81B0B0EE409AF0EE609A0C00\n" 
+"160000279FED898B406B002801D4012700E000274822DF\n" 
+"F8741ADFF8740A03F0BCFEDFF8F19403F0E88500540A80\n" 
+"ED429B00250EE051EC180BDFF8442A12EBC502D2F8C430\n" 
+"D2F8C020ECF743F841EC180B6D1C0A2DEEDB51EC180B00\n" 
+"22DFF83C3AE8F7B5F8DFF8182AC2E94401322C36DBDFF8\n" 
+"0C0AC821C0F8541151EC190B0022DFF81C3AE8F7A3F880\n" 
+"4689463000DAF7B6FE42464B46DAF7CAFE0022DFF8043A\n" 
+"E8F795F841EC180BB4F57A7F56DB51EC190B0022DFF8F0\n" 
+"39E8F789F804000D003000DAF79CFE22002B00DAF7B0FE\n" 
+"0022DFF8D039E8F77BF841EC180B3EE0DFF89C09D0F854\n" 
+"0141F2883196FBF1F1052202FB1100DFF88819C1F85401\n" 
+"DFF88009D0F85401002804D5DFF874090021C0F8541151\n" 
+"EC190B0022DFF89039E8F757F804000D003000DAF76AFE\n" 
+"22002B00DAF77EFE0022DFF86C39E8F749F841EC180BDF\n" 
+"F83C09D0F85401002807D1DFF83009D0F86001012801D1\n" 
+"9FED368BDFF82009D0F85801002803D0B0EE498AF0EE69\n" 
+"8ADFF83C09864203D1B0EE498AF0EE698A53EC182B0020\n" 
+"0021FCF7F9FE07D0DFF8EC08DFF8E81891ED440B80ED46\n" 
+"0BDFF8DC08D0F81C11D0F81801DFF8D028D2F81431D2F8\n" 
+"1021E7F74AFF31F00041DFF8F028DFF8F038E7F774FE26\n" 
+"D8DFF8B008D0E92E2300200021FCF7D1FE1DD1012F1BD1\n" 
+"DFF89808C821C0F8541151EC190B0022DFF8C438E7F7EA\n" 
+"FF04000D003000DAF7FDFD22002B00DAF711FE0022DFF8\n" 
+"9038E7F7DCFF41EC180BB0EE480AF0EE680A01B0BDEC04\n" 
+"8BBDE8F08300000024744900000000000000002DE9F043\n" 
+"2DED088BB3B006009FEDE38B002104A80022002300241C\n" 
+"C00C38DFF82408D0F89C01000521D5D6F8540100051DD4\n" 
+"20A8DFF84C181022CBF7E9FBD6E93623DFF8440802F023\n" 
+"FFD6E9362320A802F05CFF10220021DFF83008D9F733FE\n" 
+"DFF8E0075FF08041C0F8A810F0E2002711E0DFF8D00710\n" 
+"EB870090ED2A0AB8EEC00ADFEDC50A80EE200A18A810EB\n" 
+"870080ED000A7F1C042FEBDB16A912A802F0E5FF9DED12\n" 
+"0AB8EEC00ADFEDBB0A80EE200A8DED1C0A9DED130AB8EE\n" 
+"C00ADFEDB60A80EE200A8DED1D0A9DED140AB8EEC00ADF\n" 
+"EDB10A80EE200A8DED1E0A9DED150AB8EEC00ADFEDAC0A\n" 
+"80EE200A8DED1F0A16A900A802F0B9FF03990198FDF742\n" 
+"FA040000990298FDF73DFA201A079003990298FDF737FA\n" 
+"040000990198FDF732FA0019089003990398FDF72CFA04\n" 
+"0000990098FDF727FA0019B0F18040099018AB07AA1CA9\n" 
+"3000FFF7BCFDB0EE408AF0EE608A9FED91BB002722E016\n" 
+"EB87008069DAF72FFD0022DFF82437E7F712FF04000D00\n" 
+"16EB87008069DAF723FD2200F1940380EC85002B00DAF7\n" 
+"37FD0022DFF80437E7F702FF02000B0051EC1B0BEBF77E\n" 
+"FE41EC1B0B7F1C032FDADB51EC1B0BDAF71DFE00EE100A\n" 
+"02F067FD10EE100ADAF7EDFD41EC1B0B9FEDCD9B0020DF\n" 
+"F8C81653EC192BE7F720FE41EC1A0B51EC1B0BDFF86426\n" 
+"D2F87C31D2F87821E7F714FEDFF85426C2E9600151EC1A\n" 
+"0BDFF84826D2F88431D2F88021DAF7F6FCDFF83826C2E9\n" 
+"6201DFF83006D0F87C11D0F87801DFF82426D2F88C31D2\n" 
+"F88821EBF736FEDFF81426C2E95E01DFF80C06D0F88411\n" 
+"D0F88001DFF80026D2F88C31D2F88821DAF7D2FCDFF8F0\n" 
+"25D2F89431D2F89021EBF71CFE53EC192BDAF7C6FCDFF8\n" 
+"D825C2E964010025DFF8D005D0F89411D0F89001DFF818\n" 
+"26DFF81836E7F7DFFC27D2DFF810060068002809D1DFF8\n" 
+"080601210160D6E90E01DFF80026C2E90001DFF8F40500\n" 
+"68012817D1D6E90E01DFF8E825D2E90089B0EB080071EB\n" 
+"0901DFF8DC250023994208DB01DC904205D3012503E0DF\n" 
+"F8C00500210160002404F055FA284300280FD0DFF85005\n" 
+"D0F85801002809D1D6F8D400022805DA3000FEF7C8FC01\n" 
+"2800D1012416F11800FDF72AF98109DFF82805D0F86801\n" 
+"DFF85025904204DADFF81805D0F8682101E0DFF83C25B0\n" 
+"EE480AF0EE680A3000FFF739FDDFF8FC0480ED2E0BDFF8\n" 
+"F404D0F8BC10D0F8B800DFF8E824D2F82431D2F82021DA\n" 
+"F745FCDFF8D824C2E92E0128A900A8FDF7E8FC12AA00A9\n" 
+"DFF80805FDF70EF9DFF8001500A8FDF77FF90020002100\n" 
+"271CE00000804E0000000000000000032303FB072328AD\n" 
+"55F8233012AD15EB82056D68C5FB0301521C032AF0DB04\n" 
+"AA800F40EA8100891742F827007F1C032F03DA00200021\n" 
+"0022EFE7DFF86404D0F85801002801D000200690069840\n" 
+"4200EE100AB8EEC00ADFED980A80EE200A04F0D8F98DED\n" 
+"0E0A00200F90002010900698404200EE100AB8EEC00ADF\n" 
+"ED8F0A80EE200A04F0C9F98DED110A5FF40030DFF81014\n" 
+"D1F8681141F2883291FBF2F100EE101ADDED060AF8EEE0\n" 
+"0A9FED841AC0EE810AB8EEC01AC0EE810A5FF4803190FB\n" 
+"F1F101EE101AB8EEC11AC0EE810AFDEEE00A10EE901A5F\n" 
+"F4803290FBF2F000FB01F00690DDED060AF8EEE00A9FED\n" 
+"731A60EE810AB8EEC00A20EE800ABDEEC00A8DED060A9D\n" 
+"ED060AB8EEC00ADFED6A0A80EE200A04F07DF98DED0A0A\n" 
+"00200B9000200C909DED060AB8EEC00ADFED620A80EE20\n" 
+"0A04F070F98DED0D0A24AA0EA918A8FDF700F90EAA0AA9\n" 
+"24A8FDF7FBF8002717E0CDCCCCCCCCCCEC3F18A80EA951\n" 
+"F8271040F8271018A810EBF1940310F08500870090ED00\n" 
+"0ABEEEC10ADFF8280310EB870080ED2A0A7F1C042FE9DB\n" 
+"9FEDB59BC448D0F85801002805D0C248C14991ED2E0B80\n" 
+"ED5C0B51EC190BBE4AD2F87431D2F87021DAF74EFB8046\n" 
+"89460020DFF8341353EC192BE7F755FCB64AD2F8BC30D2\n" 
+"F8B820DAF73EFB02000B0040464946EBF78AFCAF4AC2E9\n" 
+"2E01AE48AD4991ED2E0B80ED5C0B002C04D0AA48D0F858\n" 
+"01002845D0A748D0F8BC10D0F8B80000225FF08043E7F7\n" 
+"EEFCDAF716FC00EE100A04F0F9F88DED0A0A00200B9000\n" 
+"200C909C48D0F8BC10D0F8B80000225FF08043E7F7D8FC\n" 
+"DAF700FC00EE100A04F0E6F88DED0D0A0EAA0AA918A8FD\n" 
+"F776F80EA8FDF7FEF800270CE00EA810EB870090ED000A\n" 
+"BEEEC10A8B4810EB870080ED2A0A7F1C042FF0DBD6E936\n" 
+"23984802F06EFC8448D0F8580100280AD082480021C0F8\n" 
+"5C118048D0F85801401E7E49C1F8580133B0BDEC088BBD\n" 
+"E8F08300000000804EE102374710B50400D4F8540110F4\n" 
+"1060B0F5106F0CD1102214F5A2718248D5F737FC7048D4\n" 
+"F85411C0F89C11002078E094F8D000C00607D46A480321\n" 
+"C0F8581168480021C0F85C11D4F8D000C00509D4644803\n" 
+"21C0F8581162480021C0F85C1100205EE0D4F85401C005\n" 
+"10D4206BC00503D5D4F88000C00509D45A480321C0F858\n" 
+"1158480021C0F85C11002049E05548D0F86C0100280ED0\n" 
+"D4E93601D4E93823801A99414FF47A720023C9F793F84D\n" 
+"49C1F868012CE0D4F8C80044F62061884205DB4848D4F8\n" 
+"C810C0F8681120E04548D0F86401D4F8C81008184249C1\n" 
+"F864014048D0F8640144F62061884206DA3D48D0F85801\n" 
+"002801D1002012E039483949D1F86411C0F86811364800\n" 
+"21C0F864112000FFF745FC3348D4F85411C0F89C110020\n" 
+"10BD80B54FF4D07200212D48D9F79AFA2C485FF08041C0\n" 
+"F8341129485FF08041C0F8A81000220023384802F0AEFB\n" 
+"24484FF47A71C0F8541122480022354BC0E948231F4800\n" 
+"220023C0E95C231D4800220023C0E95E231A4800220023\n" 
+"C0E96023184800220023C0E96223154800220023C0E964\n" 
+"2301BD1249C1F86001002070470000333333333333E33F\n" 
+"0D49C1F86C010020704780B504224FF416712348F9F74E\n" 
+"F802BD80B5FFF7ACFF0020FFF7E3FF0020FFF7EAFF1D48\n" 
+"03F06DFC02BD7C46880070468800C8468800B8468800AC\n" 
+"4688000847880038478800304788000000244000005940\n" 
+"0088B3400000394000C0624040420F001383C0CAA145B6\n" 
+"3F00007940446A8600A4478800184788000000F0400000\n" 
+"F03F7B14AE47E17A843FF19403A0F38500945D89001048\n" 
+"8800012F685965F1850017F3850080B541F288020100DF\n" 
+"F8A805D5F716FB002002BD80B541F28802DFF89815D5F7\n" 
+"0DFB002002BD10B586B0040000A901A8F8F72DFE04A802\n" 
+"F03FFB022838D0D4F808010099421ADFF8700500780028\n" 
+"01D0002A01D100203DE0019BDFF86005006880FB020100\n" 
+"0C40EA01400914C0180190029BDFF84C05006880FB0201\n" 
+"000C40EA01400914C0180290039BDFF83805006880FB02\n" 
+"01000C40EA01400914C0180390032101A8F8F7B6FD2000\n" 
+"FDF7B2FC10E0606B03280DD1F8F7DDFD002809D0009901\n" 
+"A800F021F8002801D0002002E000F0C5F8002006B010BD\n" 
+"DFF8EC241268DFF8EC341B68D21A322392FBF3F2DFF8DC\n" 
+"341B68C01A90FBF2F008700878322801D3202000E00020\n" 
+"7047F8B504000D0000A92800FFF7E1FF002801D020209D\n" 
+"E09DF800005421DFF88C2401FB002090F85060F6B2052E\n" 
+"4FD110229DF800005421DFF8743401FB003010F140019D\n" 
+"F800005423DFF8607403FB00703C3003F0AAF810229DF8\n" 
+"00005421DFF84C3401FB0030011D9DF800005423DFF83C\n" 
+"7403FB007003F098F810229DF800005421DFF8283401FB\n" 
+"003010F118019DF800005423DFF8147403FB0070143003\n" 
+"F084F810229DF800005421DFF8003401FB003010F12C01\n" 
+"9DF800005423DFF8EC7303FB0070283003F070F8761E12\n" 
+"E09DF800005421DFF8D42301FB002090F85000401C9DF8\n" 
+"00105422DFF8C03302FB013181F85000F6B29DF8000054\n" 
+"21DFF8AC2301FB002010EB8600C563F6B29DF800005421\n" 
+"DFF8982301FB0020216840F82610F6B29DF800005421DF\n" 
+"F8802301FB002010EB860061684161F6B29DF800005421\n" 
+"DFF8682301FB002010EB8600A16881620020F2BD2DE9F0\n" 
+"4F93B000208DF800000CA81821CAF7A6FD002406A81821\n" 
+"CAF7A1FD00200021CDE904015FF0000A5FF0000B002000\n" 
+"2100220023CDE9022300220023DFF834532D78012D40F0\n" 
+"4981DFF82003D0F800C0DFF81C030068002500E06D1C32\n" 
+"2D80F2DD805421DFF8F02201FB052191F850100029F2D0\n" 
+"002112E05422DFF8D83202FB053212EB8102D26B904207\n" 
+"DA5420DFF8C42200FB052010EB8100C06B491C5422DFF8\n" 
+"B43202FB053292F850209142D4DA9DF80020531C8DF800\n" 
+"30DDE90C675422DFF8943202FB053252F82120D317B218\n" 
+"7B41CDE90C23DDE90E675422DFF8783202FB053212EB81\n" 
+"025269D317B2187B41CDE90E23DDE910675422964B02FB\n" 
+"053212EB8102926AD317B2187B41CDE910235422904B02\n" 
+"FB053212EB8102D26BF1940330F785001419DDE9066754\n" 
+"228B4B02FB053252F821205423DFF820E203FB05E313EB\n" 
+"8103DB6B83FB0223120C42EA03421B14B2187B41CDE906\n" 
+"23DDE9086754227E4B02FB053212EB810252695423DFF8\n" 
+"ECE103FB05E313EB8103DB6B83FB0223120C42EA03421B\n" 
+"14B2187B41CDE90823DDE90A675422714B02FB053212EB\n" 
+"8102926A5423DFF8B4E103FB05E313EB8103DB6B83FB02\n" 
+"23120C42EA03421B14B2187B41CDE90A23DDE904675422\n" 
+"634B02FB053212EB8102D26B5423DFF880E103FB05E313\n" 
+"EB8103DB6B83FB0223120C42EA03421B14B2187B41CDE9\n" 
+"04235422574B02FB053212EB8102D26B6245BFF637AF54\n" 
+"22524B02FB053212EB8102D2F83CC03FE7B0EB0C005549\n" 
+"0968884201DA002057E000254FE09DF80000002106AA12\n" 
+"EBC502D2E90067A6FB00AB06FB01BB07FB00BB0CA810EB\n" 
+"C500D0E900672200E317A2FB060102FB071103FB061100\n" 
+"0C40EA014009149DF800600027DDE90423A2FB068902FB\n" 
+"079903FB0699CDE9028984FB0423120C42EA03421B14DD\n" 
+"E90267B61A9F41002F01D1002E14D0BAEB00007BEB0101\n" 
+"090441EA10410004DDE90267B21A77EB0303C8F730FD41\n" 
+"F26801234A12EB850288506D1C032DADDB214801210170\n" 
+"002013B0BDE8F08F80B541F2880200211A48D8F762FF1F\n" 
+"48214901601C485FF4AA0101601D485FF4A02101601A48\n" 
+"01210170002002BD80B5082296211A48F8F749FD02BD80\n" 
+"B5FFF7DFFF4FF49A7341F288021649164802F072FA0028\n" 
+"01D001200AE0144803F062F9002801D0012003E00C4801\n" 
+"210170002002BD0000985D89000C6E8900006E8900046E\n" 
+"8900086E8900146E8900106E89001C6E8900186E890000\n" 
+"00D8FF0D6E8900DBF38500C9F38500B5F3850023F98500\n" 
+"7047002010E0C0B2DFF8181B11EB8001DFF8142B0A62C0\n" 
+"B2DFF8081B11EB8001DFF8082BCA62401CC0B20328EBD3\n" 
+"7047002040E0C0B2DFF8EC1A11EB800191ED080AC0B2DF\n" 
+"F8DC1A11EB8001D1ED2D0AB4EE600AF1EE10FA0CD5C0B2\n" 
+"DFF8C41A11EB8001C0B2DFF8BC2A12EB8002D2F8B4200A\n" 
+"62C0B2DFF8AC1A11EB800191ED2D0AC0B2DFF89C1A11EB\n" 
+"8001D1ED0B0AB4EE600AF1EE10FA0CD5C0B2DFF8841A11\n" 
+"EB8001C0B2DFF87C2A12EB8002D2F8B420CA62401CC0B2\n" 
+"0328BBD37047E0B5B0F9542012040092B0F95620120401\n" 
+"92B0F9582012040292009ADFF8483A5B6ED21A0092019A\n" 
+"DFF83C3A9B6ED21A0192029ADFF8303ADB6ED21A02920B\n" 
+"0000AA416F006D80B2FCF7D7FF07BD10B58EB001A902A8\n" 
+"F8F7D4FA0C2202A9F19403C0FA8500DFF81C0AD4F794FF\n" 
+"F8F721F8040021000298FCF7DFFA00EE100AB8EEC00ADF\n" 
+"EDA50A20EE200ADFEDA40A80EE200A8DED050A21000398\n" 
+"FCF7CDFA00EE100AB8EEC00ADFED9C0A20EE200ADFED9B\n" 
+"0A80EE200A8DED060A21000498FCF7BBFA00EE100AB8EE\n" 
+"C00ADFED930A20EE200ADFED920A80EE200A8DED070A08\n" 
+"AA00A90AA8FEF7EAFB0EB010BD10B58CB003A900220023\n" 
+"00241CC10C39DFF86C19D1F89410012904D1DFF8601900\n" 
+"22C1F8942006A9FFF777FF09A801F0B2FF06980999B0EB\n" 
+"A130069007980A99B0EBA130079008980B99B0EBA13008\n" 
+"906022DFF84819DFF8480902F060FD0C2206A9DFF84009\n" 
+"D4F71FFF00A802F0BDF86022DFF83419DFF8340902F050\n" 
+"FD0C2200A9DFF82C09D4F70FFF00205FE0DFF8F018D1F8\n" 
+"D415491CDFF8E428C2F8D41503990C22DFF8D83802FB00\n" 
+"32D2F8F424092392FBF3F2511803910499032202FB00F2\n" 
+"DFF8BC3813EB8202D2F8F824092392FBF3F25118049105\n" 
+"99032202FB00F2DFF89C3813EB8202D2F8FC24092392FB\n" 
+"F3F25118059100990C22DFF8843802FB0032D2F8602509\n" 
+"2392FBF3F2511800910199032202FB00F2DFF8643813EB\n" 
+"8202D2F86425092392FBF3F2511801910299032202FB00\n" 
+"F2DFF8483813EB8202D2F86825092392FBF3F251180291\n" 
+"401C09289DDB0398002801D4039801E003984042039004\n" 
+"98002801D4049801E00498404204900598002801D40598\n" 
+"01E00598404205900098002801D4009801E00098404200\n" 
+"900198002801D4019801E00198404201900298002801D4\n" 
+"029801E002984042029000200399009A914200DA401C04\n" 
+"99019A914200DA401C0599029A914200DA401CDFF8AC17\n" 
+"D1F8D415092900DB401C042821D1DFF8980790F8CC0503\n" 
+"2811D3DFF88C07D0F8D025DFF8840790F8CC15DFF8480C\n" 
+"F8F716F9012001F0E6FFFFF7ABFE09E001F0DCFF002805\n" 
+"D1DFF8600790F8CC05F8F7FFF80CB010BD00007A440000\n" 
+"804730B50400DFF84407002180F8CC15DFF83C070021C0\n" 
+"F8D015002536E0EDB2DFF82C0710EB850090ED330ADFF8\n" 
+"2007D0ED0F0AB4EE600AF1EE10FA25DBDFF80C07D0E914\n" 
+"230020DFF8541CEAF7E7FD31F00041DFF8342CDFF8483C\n" 
+"E6F7B7FC13D2DFF8E80690F8CC05401CDFF8E01681F8CC\n" 
+"05DFF8D806D0F8D0050121A9400843DFF8C816C1F8D005\n" 
+"6D1CEDB2032DC5D3DFF8B80690F8CC05002823D000250D\n" 
+"E0EDB214EBC50041680068E6F749FDEDB2DFF8981611EB\n" 
+"850148666D1CEDB2032DEED3DFF888060021C0F8D415DF\n" 
+"F87C0680680428F1940350FE850006DADFF87406DFF870\n" 
+"1691F8CC158160DFF8640690F8CC05032825D1DFF85806\n" 
+"90ED030ADFED660AB4EE600AF1EE10FA1AD5DFF84406D0\n" 
+"E914230020DFF8881BEAF782FD31F00041DFF8682BDFF8\n" 
+"7C3BE6F752FC08D2DFF820068068032803D1DFF8140604\n" 
+"218160DFF80C0690ED040ADFED540AB4EE600AF1EE10FA\n" 
+"25D5DFF8F80590ED030ADFEDCD0AB4EE600AF1EE10FA1A\n" 
+"D5DFF8E005D0E914230020DFF8281BEAF751FD31F00041\n" 
+"DFF8B02BDFF8B03BE6F721FC08D2DFF8BC058068042803\n" 
+"D1DFF8B4050521816030BD38B50400DFF8A405D0F84C06\n" 
+"01286ED1F7EE000AB7EE000ADFF87C1BDFF87C0B03F0C2\n" 
+"F9DFF8782BDFF8781BDFF86C0B03F0FCFB0500002D5AD0\n" 
+"DFF870054068401CDFF868154860616F0C00DFF85C0541\n" 
+"6D006DE6F7A4FC2100FCF78DF800EE100AB8EEC00ADFED\n" 
+"A60A80EE200A10EE100AD9F783FCDFF83425C2E91401DF\n" 
+"F82C05D0F8AC11D0F8A801E6F789FCDFF81C158865DFF8\n" 
+"1405D0F8B411D0F8B001E6F77EFCDFF80415C865DFF800\n" 
+"05D0F8BC11D0F8B801E6F773FCDFF8F0140866DFF8E804\n" 
+"D0F8A411D0F8A0010122DFF8D83AE6F7C3FB0BD8DFED86\n" 
+"0A9FED850ADFF8B81ADFF8B40A03F05EF900E000252800\n" 
+"32BDAF47E13D00007A4390ED040AD0ED030AB4EE600AF1\n" 
+"EE10FA1DD590ED050AD0ED030AB4EE600AF1EE10FA14D5\n" 
+"0021016490ED040AD0ED050AB4EE600AF1EE10FA04DB01\n" 
+"214164022181643FE002214164012181643AE090ED030A\n" 
+"D0ED040AB4EE600AF1EE10FA1DD590ED050AD0ED040AB4\n" 
+"EE600AF1EE10FA14D50121016490ED030AD0ED050AB4EE\n" 
+"600AF1EE10FA04DB002141640221816418E00221416400\n" 
+"21816413E00221016490ED030AD0ED040AB4EE600AF1EE\n" 
+"10FA04DB002141640121816403E0012141640021816470\n" 
+"470021C164002107E0002240F8212010EB810200235362\n" 
+"491C0329F5DB0121416700218167704710B504001420A0\n" 
+"650A202066002084F870002000FFF7E1FF0020606510BD\n" 
+"000010B52DED028B86B003A9FFF798FC9FED388B002426\n" 
+"E003A850F8240000EE100AB8EEC00ADFED340A80EE200A\n" 
+"00A810EB840080ED000A00A810EB840090ED000A00A810\n" 
+"EB8400D0ED000A20EE200A10EE100AD9F78FFB53EC182B\n" 
+"EAF70BFC41EC180B641C032CD6DBB0EE480AF0EE680AEA\n" 
+"F774FCB0EE408AF0EE608A00241FE000A850F82400D9F7\n" 
+"75FB53EC182BE6F76FFCD9F797FB00EE100ADFF8080910\n" 
+"EB8400D0F8D80500EE900A30EE200ADFF8F40810EB8400\n" 
+"00F2D85080EDF19403E0018600000A641C032CDDDBDFF8\n" 
+"DC08D0F82C06401CDFF8D418C1F82C06DFF8CC080121C0\n" 
+"F8541606B0BDEC028B10BDBD74933CCDCCCC3E00000000\n" 
+"000000000000804710B5040000200DE014EB800191ED09\n" 
+"0AB1EE400A14EB800181ED030A002144F82010401C0328\n" 
+"57DA94ED140AB8EEC00A14EB8001D1ED000A80EE800AB5\n" 
+"EE400AF1EE10FA02DBF0EE400A01E0F1EE400A14EB8001\n" 
+"91ED061AB5EE401AF1EE10FA04DB14EB800191ED061A05\n" 
+"E014EB800191ED061AB1EE411A70EEC10A14EB8001C1ED\n" 
+"0C0A14EB800181ED060A94ED0F0AFFEE000A30EE200A14\n" 
+"EB8001D1ED090A14EB800191ED061A00EE201A94ED0F0A\n" 
+"81EE000A14EB800181ED090A14EB800191ED090AB5EE40\n" 
+"0AF1EE10FA9CDB14EB800191ED090A9DE72000FFF78DFE\n" 
+"E06CB0F57A7F02DAE06C401CE064206C94F87010002909\n" 
+"D002291AD010D3042900F08E8045D3052956D09DE00120\n" 
+"60670120A0670020E064012084F8700093E0E06F012804\n" 
+"D1022084F870000020A0678AE014EB800191ED030AD4ED\n" 
+"190AB4EE600AF1EE10FA07DB042084F870000020606700\n" 
+"20A0671BE094ED1A0A14EB8000D0ED030AB4EE600AF1EE\n" 
+"10FA07DB032084F87000012060670120A06708E0052084\n" 
+"F870000020E064012060670120A0675AE014EB800090ED\n" 
+"030AD4ED190AB4EE600AF1EE10FA06DB042084F8700000\n" 
+"2060670020A06747E094ED1A0A14EB8001D1ED030AB4EE\n" 
+"600AF1EE10FA07DB032084F87000012060670120A0671F\n" 
+"E014EB800090ED0C0ADFED330AB4EE600AF1EE10FA0BD5\n" 
+"E06C216E884210DB032084F87000012060670120A06708\n" 
+"E0042084F870000020E064002060670020A06713E094ED\n" 
+"1B0A14EB8000D0ED030AB4EE600AF1EE10FA08DB052084\n" 
+"F870000020E064012060670120A06710BD00B52DED028B\n" 
+"81B008EE100AB8EEC80ADFED170A20EE200ADFED160A80\n" 
+"EE200AF0EE000A80EE200A10EE100AD9F700FA41EC100B\n" 
+"03F0CAFC53EC102B0020DFF82416D9F723F9E6F705FA05\n" 
+"49C1F88400034880ED208A01B0BDEC028B00BD0000C038\n" 
+"880000401CC600401C46CCCC4CBD368D274000247449B8\n" 
+"D28800B83D8800B43D8800CC3D8800243E8800203E8800\n" 
+"383E880070B52DED028B92B0060002A80021002200230E\n" 
+"C00C38B06F44F6206188420ADBB06FDFF8A815D1F88010\n" 
+"884229D0B06FFFF79CFF25E0DFF89405D0F8F004B16F08\n" 
+"18DFF88815C1F8F004DFF88005D0F8F00444F620618842\n" 
+"01DA002015E2B06FDFF86815D1F8F014884205D0DFF85C\n" 
+"05D0F8F004F1940370058600FFF77AFFDFF850050021C0\n" 
+"F8F014DFF84805316BC0F858163000FFF7CBFDDFF83805\n" 
+"D0F82C06DFF83015D1F82816884208DBDFF82C05FFF73B\n" 
+"FEDFF81C050021C0F82C16DFF81005D0F84C06012840F0\n" 
+"E18102A801F0D6FB9DED020ADDED020A20EE200ADDED03\n" 
+"0A9DED031A00EE810ADDED040A9DED041A00EE810A01F0\n" 
+"CAF8DFF8D40480ED030ADFF8CC0490ED030ABEEE410A10\n" 
+"EE100AADF800000020ADF802000020ADF80400DFF8B814\n" 
+"00A802F008FD0CA908A801F0A1FADFF89C04016F0898FB\n" 
+"F72FFD0400DFF88C04416F0998FBF728FD0500DFF88004\n" 
+"816F0A98FBF721FD29194418DFF87004C16F0B98FBF719\n" 
+"FD0419102208A9DFF86C04D4F7C0F900252AE0716FEDB2\n" 
+"16EB4500B0F954000004FBF707FDEDB20EA941F82500ED\n" 
+"B20EA850F8250000EE100AB8EEC00ADFEDBC0A80EE200A\n" 
+"EDB2DFF81C0410EB850080ED050AEDB216EB4500B0F954\n" 
+"000004EDB205A941F825006D1CEDB2032DD1D305A9DFF8\n" 
+"E00302F0AFFEDFF8EC03D0F8B804DFF8E4130968884201\n" 
+"DA00204AE196ED420AB8EEC00ADFEDA50A80EE208ADFF8\n" 
+"C40390ED360AB5EE400AF1EE10FA11D0DFF8B40390ED36\n" 
+"0A38EE400A10EE100AD9F7B9F831F00041D9F7DDF8DFF8\n" 
+"9813C1F8DC00DFF8900380ED368ADFF888038068002803\n" 
+"2804D9001F11D0401E1ED02CE0DFF87003DFF880138163\n" 
+"DFF868035FF07E51C163DFF85C03C82101642BE0DFF854\n" 
+"03DFF868138163DFF84803DFF86013C163DFF840036421\n" 
+"01641CE0DFF83403DFF850138163DFF82C03DFF84C13C1\n" 
+"63DFF82003322101640DE0C648DFF828138163C4485FF0\n" 
+"7E51C163C248C8210164C04800218160C24802F095FB03\n" 
+"F03AFB00EE100ADFED9E0A80EE200AB94880ED040AB022\n" 
+"0021BA48D7F7EBFFB548D0F88400A04280F28180B24890\n" 
+"ED040AB5EE400AF1EE10FA78DDAE4890ED040AAD48D0ED\n" 
+"0E0AB4EE600AF1EE10FA6DD5A9484068A849096C884206\n" 
+"DA3000FFF774FB002815D10020A4E0A24890ED2C0ADFED\n" 
+"990AB4EE600AF1EE10FA09DB3000FFF763FB002801D100\n" 
+"2093E09A480021416000250BE0EDB2974810EB8500EDB2\n" 
+"954911EB85014969C0F8B4106D1CEDB2032DF0D3FFF7A5\n" 
+"F8002514E0EDB28D4810EB850090ED080AEDB28A4810EB\n" 
+"8500D0ED0B0A30EE600AEDB2864810EB850080ED330A6D\n" 
+"1CEDB2032DE7D38048FFF75CFA8048D0F85006012817D1\n" 
+"7E48806BD8F7E1FF0022854BE6F7DBF802000B0014001D\n" 
+"0078480069D8F7D5FF22002B00E5F729FF02D23000FFF7\n" 
+"25F90025F194030009860016E0EDB2704810EB850090ED\n" 
+"260AEDB26D4810EB8500D0ED050A30EE600AB0EEC00AED\n" 
+"B2684810EB850080ED290A6D1CEDB2032DE5D3644890ED\n" 
+"290A6248D0ED2A0A30EE200A6048D0ED2B0A30EE200A5D\n" 
+"4880ED2C0A00250BE0EDB25A4810EB8500EDB2584911EB\n" 
+"85014969C0F898106D1CEDB2032DF0D34FF4D87200214D\n" 
+"48D7F721FF002012B0BDEC028B70BD0000000080472439\n" 
+"880080B54FF4CE6200214948D7F710FF48481021016046\n" 
+"485FF080410167FEF7F7FF4548FFF7A3FB424841490968\n" 
+"C0F828163F485FF08441C0F814163D481E21C0F834163B\n" 
+"484549C0F8401639484449C0F83C1637484349C0F84416\n" 
+"1921374802F0D6FB334800218160002002BD9A99999980\n" 
+"B5012240F252313B48F7F7D5FC02BD0000F0BF9999B93F\n" 
+"80B54FF4CE6201002748D3F7E1FF26480121C0F8941000\n" 
+"2002BD80B522490022C1F894204FF4CE621F49D3F7D1FF\n" 
+"002002BD00000024744910B5FFF79DFF0400002C08D04F\n" 
+"F44073264A27492000FEF799FF200016E0254802F0CEF8\n" 
+"0400002C08D040F203331F4A1F492000FEF78AFF200007\n" 
+"E042F226034FF4CE621C491D4801F0C3F910BD0000CDCC\n" 
+"4C3D9CC420B07268913F503B8800A03988001039880068\n" 
+"3A88000070A740C03888000000D041983E8800003D8800\n" 
+"303988000080BB44000096439A99993F000070423333B3\n" 
+"3F00408F40CDCCCC3ECDCC4C3F3333333FFD0486006059\n" 
+"860084598600090A86003B0A8600210A860000B5801A99\n" 
+"41DFF8F8240023C7F706FC00BD704770B52DED028B94B0\n" 
+"06000C0008EE102A1D0096ED000AB8EEC00AD6ED000AF8\n" 
+"EEE00A20EE200AD6ED010AF8EEE00A96ED011AB8EEC11A\n" 
+"00EE810AD6ED020AF8EEE00A96ED021AB8EEC11A00EE81\n" 
+"0A00F003FEF0EE408A18EE900AD8F787FE31F000410022\n" 
+"0023E5F7F1FD7BD20020049096ED000AB8EEC00A80EE28\n" 
+"0A8DED050A96ED010AB8EEC00A80EE280A8DED060A96ED\n" 
+"020AB8EEC00A80EE280A8DED070A10AA04A92000FBF70A\n" 
+"FB0CA92000FBF75BFC00AA0CA910A8FBF701FB9DED020A\n" 
+"DDED020A20EE200ADDED010A9DED011A00EE810ADFED57\n" 
+"0AB4EE600AF1EE10FA02D59FED550A15E0DFED540AB4EE\n" 
+"600AF1EE10FA02D59FED520A0BE0DFED510AB4EE600AF1\n" 
+"EE10FA02D5B5EE000A01E09FED4D0AF8EEC80A9FEDD91A\n" 
+"C0EE810A20EE800A00200890DDED020A60EE800ACDED09\n" 
+"0ADDED010AF1EE600A20EE800A8DED0A0A00200B9000AA\n" 
+"210008A8FBF7B6FA2A00210000A8FBF71AFB2800FBF7BF\n" 
+"FB07E0F19403900C86002068286060686860A068A860E0\n" 
+"68E86014B0BDEC028B70BD10B588B00400D4F88000C005\n" 
+"01D400204FE000A800F04EFF9DED000AB8EEC00ADFEDCC\n" 
+"0A80EE200A8DED040A9DED010AB8EEC00ADFEDC70A80EE\n" 
+"200A8DED050A9DED020AB8EEC00ADFEDC20A80EE200A8D\n" 
+"ED060A9DED030AB8EEC00ADFEDBD0A80EE200A8DED070A\n" 
+"04ABA26F04A914F16800FFF707FF9DED040ABEEEC10A8D\n" 
+"ED000A9DED050ABEEEC10A8DED010A9DED060ABEEEC10A\n" 
+"8DED020A9DED070ABEEEC10A8DED030AD4E9222300A800\n" 
+"F04CFE002008B010BD000017B75139A69BC43B0AD7233C\n" 
+"8FC2753DCDCC4C3ECDCCCC3E30B52DED028B8BB00400D4\n" 
+"F8D000C00503D42000FFF78CFFFFE094F8800040060DD5\n" 
+"2000FFF784FF0500002D07D091239C4A9D492800FFF7BC\n" 
+"FE2800EDE094F8D000400640F1E88008A900A800F005FF\n" 
+"9DED000AB8EEC00ADFED8A0A80EE200A8DED040A9DED01\n" 
+"0AB8EEC00ADFED850A80EE200A8DED050A9DED020AB8EE\n" 
+"C00ADFED800A80EE200A8DED060A9DED030AB8EEC00ADF\n" 
+"ED7B0A80EE200A8DED070A04AA14F1680114F1B800FBF7\n" 
+"B3F8B0EE408A7E4890ED010A30EE080A7B4880ED010A7A\n" 
+"4890ED010AFBF77AFD774880ED010A764890ED010A7448\n" 
+"D0ED000A30EE600AB0EEC00ADFED680AB4EE600AF1EE10\n" 
+"FA1FDB6D4890ED000A6C48D0ED010AB4EE600AF1EE10FA\n" 
+"0AD5684890ED000ADFED5E0A30EE200A644880ED000A09\n" 
+"E0624890ED000ADFED5A0A30EE200A5F4880ED000A9FED\n" 
+"570AF0EEC80A20EE808A9FED550AB4EE408AF1EE10FA01\n" 
+"DBB6EE008A9FED520AB4EE408AF1EE10FA01D59FED4E8A\n" 
+"D4E93823D4E93601FFF718FE642800DB6420062800DA05\n" 
+"2000EE100AB8EEC00AF2EE040A80EE200A20EE088A4648\n" 
+"90ED010A20EE080AF7EE000A70EEC80A424890ED001A00\n" 
+"EE810A3F4880ED010A3E4840683D4908603C4890ED010A\n" 
+"F0EE000A80EE200A02F0B9F9BEEEC10A8DED000A002001\n" 
+"9000200290334890ED010AF0EE000A80EE200A02F0ABF9\n" 
+"BEEEC10A8DED030AD4E92201D4E93623994205DC01DB90\n" 
+"4202D2D4E9362301E0D4E9222300A800F056FD00200BB0\n" 
+"BDEC028B30BD80B5082200212048D7F710FC002002BD00\n" 
+"000014CD4780B50722FA211C48F7F702FA02BD10B5FFF7\n" 
+"EBFF0400002C07D0F623174A14492000FFF7AAFD20000E\n" 
+"E0154801F01CFE0400002C07D0F923104A0D492000FFF7\n" 
+"9CFD200000E0002010BD00000000804EDC0F4940DB0FC9\n" 
+"40DB0FC9C0295CB73F0100003FCDCCCC3D40420F00A06A\n" 
+"8600F1940320108600BC6A8600206E8900790D8600F06A\n" 
+"8600B10F86000148FAF77DBC0000C42D88002DE9F04104\n" 
+"462DED028B2688626801EB86037608174608464FEA0308\n" 
+"01EB860C03EB86055FEA960E00F0A48091ED000A93ED00\n" 
+"2AD1ED010A91ED021AD1ED031AD3ED012A93ED023AD3ED\n" 
+"033A9CED004ADCED014A9CED025ADCED035A95ED006AD5\n" 
+"ED016A95ED027AD5ED037A30EE028A81ED008A091D30EE\n" 
+"A28A81ED008A091D31EE038A81ED008A091D31EEA38A30\n" 
+"EE420A81ED008A34EE062A8CED002A0CF1040C34EEA62A\n" 
+"8CED002A0CF1040C35EE072A8CED002A0CF1040C35EEA7\n" 
+"2A8CED002A36EE442A97ED004A70EEE20A31EE431A3F1D\n" 
+"76EEE42A37EE453AD7ED004A20EE045A00EEA45A83ED00\n" 
+"5A60EE840A1B1D40EE640A22EE240AC3ED000A02EEC40A\n" 
+"85ED000A2D1D22EEA40A3F1D02EE040A85ED000A091D97\n" 
+"ED000A3F1D71EEE31A1B1DD7ED000A21EE002A01EEA02A\n" 
+"83ED002A61EE801A1B1D41EE601A77EEE53A2D1D23EE20\n" 
+"1AC3ED001A03EEC01A85ED001A2D1D63EEA00A43EE000A\n" 
+"C5ED000A3F1D1B1D2D1D0CF1040CBEF1010E7FF45CAF02\n" 
+"23314602F078FE626831464046BDEC028BBDE8F0410223\n" 
+"02F06EBE2DE9F14F2DED048B86B00088DDF828C004914F\n" 
+"EA500801EB880000EB880202EB8803039002920193051F\n" 
+"DCF80440009492ED000AD1ED000AD0ED005AD3ED012AD0\n" 
+"ED014A93ED005A30EE803A33EE651A30EEC02A33EE253A\n" 
+"92ED010AD1ED010A33EE053A81ED003A70EE803A90ED01\n" 
+"3A73EEE41A33EE833A30EEC04A091DD3ED013A32EE240A\n" 
+"33EE233A30EE620A81ED003A80ED000A74EE650A001D70\n" 
+"EE850A31EE451AC0ED000A161F82ED001A121D71EEE21A\n" 
+"32EE642A32EE222AC2ED001A1F1F83ED002A74EE252A1B\n" 
+"1D07EB880E72EEC52AA4464FEA5808C3ED002A091D001D\n" 
+"121D13F104030CF108040CF11009A8F1020A0CF1180C5F\n" 
+"EA5A0A00F0FC8092ED000AD1ED000AD0ED005A93ED014A\n" 
+"D0ED014A93ED005A30EE803A33EE651A30EEC02A33EE25\n" 
+"3A92ED010AD1ED010A33EE053A81ED003A70EE803A90ED\n" 
+"013A73EEE41A33EE833A091DD3ED013A33EE233A81ED00\n" 
+"3A70EEC02A57F804BC32EE240A03EE10BA32EE642A55F8\n" 
+"04BC30EE440A71EEC41A32EE042A04EE10BA5EF804BCD7\n" 
+"ED006A95ED007ADEED007A96ED008A74EE033A34EE434A\n" 
+"09EE10BA37EE263A56F804BC72EEE50A33EE486A72EEA5\n" 
+"2A09EE90BA33EE083A70EE850A31EE451A72EEC52A33EE\n" 
+"273AA6F1040B37EE665A85ED003A35EE695A9BED003A75\n" 
+"EEF19403B0138600095AAEF1040B33EEE95A33EE833A2D\n" 
+"1FDBED003A33EE233A85ED003A091D94ED003A241D76EE\n" 
+"C76AD4ED003A20EE037A00EEA37A80ED007A60EE830A78\n" 
+"EE678A001D40EE630A78EE844A25EEA30AC0ED000A04EE\n" 
+"C30A86ED000A361F24EEA30A05EE830A86ED000A35EE49\n" 
+"5A99ED000AD9ED010A21EE003A01EEA03A82ED003A61EE\n" 
+"801A36EE676A121D41EE601A26EE401AC2ED001A05EE60\n" 
+"1A87ED001A3F1F66EE200A45EE400AC7ED000A38EEC44A\n" 
+"9CED000ADCED010A22EE001A02EEA01A83ED001A1B1D22\n" 
+"EE801A79EE698A02EE601A78EEA66A83ED001A26EEA01A\n" 
+"04EE401A8EED001AAEF1040E64EE200A46EE800A2D1F24\n" 
+"1D001D361F121D3F1F1B1DCEED000A09F110090CF1180C\n" 
+"AEF1040EBAF1010A7FF404AF92ED000AD1ED000AD1ED01\n" 
+"1AD0ED012AD3ED003A90ED004A30EE801A30EEC00AD2ED\n" 
+"010A31EEA02A31EE445A71EEE00A31EE041AD3ED011A30\n" 
+"EE223A31EE231A72EE625A30EE620A81ED001A33EE613A\n" 
+"75EEE15A30EE210A90ED011AD3ED011A091D32EE011A31\n" 
+"EE211A81ED001A70EEC44A94ED001AD4ED011A74EEA34A\n" 
+"23EE012A04EEA12A80ED002A001D24EE811A03EE611A80\n" 
+"ED001A35EE635A99ED001AD9ED011A25EE012A05EEA12A\n" 
+"101D25EE811A82ED002A05EE611A80ED001A70EE840A9C\n" 
+"ED001ADCED011A70EEE30A20EE012A00EEA12A181D60EE\n" 
+"810A83ED002A40EE610AC0ED000A009A04980423414602\n" 
+"F078FC0A98426803980423414602F071FC0A9842680298\n" 
+"0423414602F06AFC0A984268019806B04146BDEC048B01\n" 
+"B0BDE8F04F042302F05DBC00002DE9F041044616462788\n" 
+"0D469846012E30D1281D002F55D017F0030100F0098090\n" 
+"ED000AB1EE400A80ED000A0830491EF6D1B90800F01E80\n" 
+"90ED000AB1EE400A80ED000A083090ED000AB1EE400A80\n" 
+"ED000A083090ED000AB1EE400A80ED000A083090ED000A\n" 
+"B1EE400A80ED000A0830491EE1D1102F15D0202F18D040\n" 
+"2F1BD0802F0FD0B7F5807F11D0B7F5007F13D0B7F5806F\n" 
+"06D0B7F5006F08D0B7F5805F0AD00FE029462046FFF7D0\n" 
+"FC0AE029462046FFF793FD05E0626801233946284602F0\n" 
+"FAFBB8F1000F04D0A268A189284602F090FE012E59D100\n" 
+"EE107AB8EE400AF7EE000A80EE800A2846002F4ED017F0\n" 
+"03010FD0D0ED000A021D60EE800AC0ED000A101DD2ED00\n" 
+"0A60EEC00AC2ED000A491EEFD1B90839D0D0ED000A021D\n" 
+"60EE800AC0ED000A101DD2ED000A60EEC00AC2ED000A02\n" 
+"1DD0ED000A60EE800AC0ED000A101DD2ED000A60EEC00A\n" 
+"F1940340178600C2ED000A021DD0ED000A60EE800AC0ED\n" 
+"000A101DD2ED000A60EEC00AC2ED000A021DD0ED000A60\n" 
+"EE800AC0ED000A101DD2ED000A60EEC00AC2ED000A491E\n" 
+"C5D1BDE8F081B5EEC00AF1EE10FA02D4B1EEC00A70476F\n" 
+"F0004C00EE10CAF5F748BFD0B514462DED048B534A544B\n" 
+"E4F7E4FF41EC180B1DD89FED529B53EC182B51EC190BD7\n" 
+"F797FF00224F4BE9F7E5F806460F4653EC182B51EC190B\n" 
+"E9F7DDF802460B4630463946E5F755F941EC180B44F001\n" 
+"0451EC180B0022444BE4F7A5FF05D301224FF07953E4F7\n" 
+"B7FF51D853EC182BD7F770FF41EC190B53EC182BD7F76A\n" 
+"FF06460F4653EC192B39483A49D7F762FF394A3A4BE9F7\n" 
+"B0F853EC192BD7F75AFF374A384BE9F7A8F832463B46D7\n" 
+"F752FF53EC182BE9F7A0F806460F4653EC192B31483249\n" 
+"D7F746FF314A324BE9F794F853EC192BD7F73EFF2F4A30\n" 
+"4BE9F78CF853EC192BD7F736FF2D4A2E4BE9F784F853EC\n" 
+"192BD7F72EFF2B4B0022E9F77CF802460B4630463946E5\n" 
+"F7F4F841EC180BA00705D551EC180B81F0004141EC180B\n" 
+"14F007020BD00FF2880303EBC20251EC180B53681268E9\n" 
+"F75FF841EC180B200705D551EC180B81F0004141EC180B\n" 
+"51EC180BBDEC048BD0BD57CD9E5E1426D13FAA4C58E87A\n" 
+"B6FB3F0000F0BF000040BE845D57134B57B03FB2934C19\n" 
+"ED5EE43FBEDE02B90240F83FDE39028FC7C0743F8AAB12\n" 
+"83000CC83F24D7E508B6D8F03F0F34580E5895FD3F0000\n" 
+"F03F00000000000000000000000066732D3852C1E03F18\n" 
+"2D4454FB21F93F66732D3852C1F03F182D4454FB21F93F\n" 
+"66732D3852C10040182D4454FB2109403FD038C6A6F104\n" 
+"4038B514001D00DFF85814D1F8B01051F00201DFF84C24\n" 
+"C2F8B01010220100DFF84404D3F71DF8DFF83804C0E912\n" 
+"4531BD38B514001D00DFF82814D1F8B01051F00801DFF8\n" 
+"1C24C2F8B01010220100DFF81004D3F705F8DFF80804C0\n" 
+"E9104531BD38B514001D0010220100DFF8FC03D2F7F7FF\n" 
+"DFF8EC03C0E9144531BD38B514001D00DFF8DC13D1F8B0\n" 
+"1051F00101DFF8D023C2F8B01010220100DFF8D003D2F7\n" 
+"DFFFDFF8BC03C0E9104531BD38B514001D00DFF8AC13D1\n" 
+"F8B01051F00401DFF8A023C2F8B01010220100DFF8A403\n" 
+"D2F7C7FFDFF88C03C0E9144531BDDFF88013D1F89C1001\n" 
+"60DFF8780390F89800704780B5DFF86C1391F89810C0B2\n" 
+"884212D1C0B2022809D1DFF85803D0F89C00401CDFF84C\n" 
+"13C1F89C0004E0DFF844030021C0F89C1012E0DFF83813\n" 
+"0022C1F89C20DFF82C1381F89800C0B2012801D10120F1\n" 
+"9403D01A860000E002200022032100F0ECF901BD38B504\n" 
+"00DFF80C03C168DFF804034068FAF7CAFA0500DFF8F802\n" 
+"0168DFF8F4028068FAF7C1FA281A2060DFF8E402C168DF\n" 
+"F8E0028068FAF7B7FA0500DFF8D4020168DFF8CC024068\n" 
+"FAF7AEFA40196060DFF8C002C168DFF8B802C068FAF7A4\n" 
+"FA0500DFF8AC020168DFF8A8020068FAF79BFA4019B0F1\n" 
+"8040A060002032BD80B51022DFF89412D2F744FF002002\n" 
+"BD10B50C001022DFF88012D2F73BFFDFF87402D0E91223\n" 
+"C4E90023002010BD10B50400DFF8600290F8B00010F003\n" 
+"0F11D0DFF85022DFF85012DFF85402FAF77BFADFF84002\n" 
+"D0F8B00030F00300DFF83412C1F8B0001022DFF82C1220\n" 
+"00D2F712FF002010BD000038B504000D00DFF8140290F8\n" 
+"B000400711D5DFF81C22DFF80C12DFF81002FAF757FADF\n" 
+"F8F801D0F8B00030F00400DFF8EC11C1F8B0001022DFF8\n" 
+"F8112000D2F7EEFEDFF8D801D0E91423C5E90023002032\n" 
+"BD38B50C001500FFF7AEFFF6F714F9C5E90001F6F7F9F8\n" 
+"002803D0F6F7F1FC206011E0F6F7F9F8002803D0F6F7E6\n" 
+"FC206009E0F6F7F8F8002803D0F6F7EBFC206001E00020\n" 
+"206031BDDFF88011C1F8B4000020704780B507224FF448\n" 
+"71DFF88401F6F79CFB002002BD80B5E0220021DFF85C01\n" 
+"D6F796FDDFF854015FF080418165DFF848015FF08041C1\n" 
+"65DFF840015FF080410166DFF834015FF080414166DFF8\n" 
+"2C015FF080410161DFF820015FF080410160DFF818015F\n" 
+"F080410162DFF80C015FF080410163DFF804015FF08041\n" 
+"4167DFF8F800DFF81011C0F8B810002002BD80B5FFF7C1\n" 
+"FF002803D1DFF8000100F081FF02BDDFF8D400D0F88800\n" 
+"70473349C1F8880070473149C1F8A400704710B584B004\n" 
+"00002C18D0002200212000F6F736FC00A8FFF7C9FE2068\n" 
+"0099B0EBA130206060680199B0EBA1306060A0680299B0\n" 
+"EBA130A060002000E0162004B010BD10B584B00400002C\n" 
+"1DD000A8FFF7D7FF002818D1002011E0C0B200A951F820\n" 
+"1000EE101AB8EEC00ADFED130A80EE200AC0B214EB8001\n" 
+"81ED000A401CC0B20328EAD3002000E0162004B010BD0B\n" 
+"4890F8CC0070470949D1F8C01001600749D1F8C4104160\n" 
+"0549D1F8C8108160034991F8CC10017370470000000080\n" 
+"47403F8800503F8800703F8800A43F8800B43F8800603F\n" 
+"88006D1C8600DB0F4940791C860080B54FF4CC72002124\n" 
+"48D6F7D2FC23480C21416001BD70B4002400E0641C1F4D\n" 
+"2D68AC4209DA0C251C4E05FB0465D5F8B050AB42F2D116\n" 
+"202EE0184C2468142C01DB162028E0154C24680C25F194\n" 
+"03601E8600134E05FB0464C4F8B030114B1B680C240F4D\n" 
+"04FB0353C3F8A8200D4B1B680C4C14EB830398600A4800\n" 
+"68094B13EB800081650748406812F10C01081804494860\n" 
+"03480068401C02490860002070BC704760E78800002A0A\n" 
+"D10A4A126832EA0101084A116007490968084306490860\n" 
+"704704490968002802D002480022026008007047000028\n" 
+"6E89000300002013F0030F09D0521E22BF13F8010B11F8\n" 
+"01CBB0EB0C00F3D07047121F22BF53F8040B51F804CB60\n" 
+"45F7D0121D0AD200BA9CFA8CFCB0EB0C0038BF6FF00000\n" 
+"88BF01207047521E22BF13F8010B11F801CBB0EB0C00F6\n" 
+"D0521C08BF1046704700002DE9F04F00210A460B468B46\n" 
+"0C460D460E460F46D0F804C02CF4006CC0F804C000F512\n" 
+"7C00F5227EDCF81C80B8F1000F11D0DEF81C80B8F1000F\n" 
+"0CD000F5F278DCF83C70D8F860904F4500DA4F46C8F860\n" 
+"70CCF83C70DCF81C80B8F1000F0FD00F46AEF80C7080F8\n" 
+"88724FF48067ACF80C700E2780F8487200F5F2773F6E18\n" 
+"E0DEF81C80B8F1000F13D00F46ACF80C7080F848724FF4\n" 
+"8067AEF80C700E2780F88872DCF83C70D0F804E04EF400\n" 
+"6EC0F804E08E4629E000EB8E1808F58279D9F820A0BAF1\n" 
+"000F1ED00125D9F824A04AEA0101D9F828A04AEA0202D9\n" 
+"F82CA04AEA0303D9F8309049EA0B0BBAF1000F0AD0BEF1\n" 
+"050F07D0BEF1060F04D0D8F80481B04500DB46460EF101\n" 
+"0EBEF10C0FD2DBD0F804E01EF4400F02D0012421460D46\n" 
+"D0F8E481B8F1000F04D04EF4806EC0F804E003E02EF480\n" 
+"6EC0F804E000F1040EDEF84080B8F1000F04D1DEF82880\n" 
+"B8F1000F00D00121D0F80480002D03D028F48015456002\n" 
+"E048F48015456045685FEAC52803D545F40015456002E0\n" 
+"25F4001545601A2F01DB192500E03D46AE4204DA1A2F01\n" 
+"DB192600E03E46742E00DB7326CEF8046000F2B055E127\n" 
+"2F636F63AF63EE63DEF840603443641EA441E443E40FCE\n" 
+"F844404468E4020AD5DEF84440002C06D0DEF82840002C\n" 
+"02D16C6BA4106C63EC68002C64D1446862F30824446044\n" 
+"6861F3C7144460446863F34924446044686BF30C344460\n" 
+"446844F400244460002A03D024F40062426002E044F400\n" 
+"6242604268002B08D1540506D4BBF1000F07D090F8CC40\n" 
+"002C03D142F48032426002E022F480324260002904D001\n" 
+"216960C0F8B01503E000216960C0F8B0151946491E8941\n" 
+"C943C90FA960D0F82411491E8941C943C90FC0F82414D0\n" 
+"F8A413491E8941C943C90FC0F86414D0F8E41300290CD1\n" 
+"DCF81C10002908D1D0F82413491E8941C943C90FF19403\n" 
+"F0218600C0F8A41402E00121C0F8A4140020BDE8F08F00\n" 
+"0070B52DED068B0446084604F2C8451B4E6E609FED1B8B\n" 
+"9FED1C9B9FED1DAB802812D2D7F757FA53EC1A2BE4F731\n" 
+"FC53EC192BE8F7AFFB53EC182BD7F759FAE4F751FBC4F8\n" 
+"C80414E08038D7F739FA53EC1A2BE4F71DFC02460B4651\n" 
+"EC190BE4F757FB53EC182BD7F743FAE4F73BFBC4F8C804\n" 
+"AE60EE60BDEC068B70BD00CA9A3B0000000065CDCD4100\n" 
+"0000000000F03F0000000000D893402DE9F04F00210523\n" 
+"04E000EB8112C2F80431491C0C29F8DB062180F8081100\n" 
+"F59C7106220A7400F5BC720623137400F5DC7308241C74\n" 
+"00F54E740625257400F5FC750C262E7400F52E76062737\n" 
+"7400F55E774FF00C0C87F810C000F56E7C4FF00C0E8CF8\n" 
+"10E000F50E7E4FF00E088EF8108000F51E784FF00E0988\n" 
+"F8109000F53E794FF00C0A89F810A000F5847A4FF0BE0B\n" 
+"CAF804B04FF0BA0BC1F814B04FF0B60BC2F814B04FF0B2\n" 
+"0BC3F814B04FF0BC0BC4F814B04FF0AC0BC5F814B04FF0\n" 
+"A40BC6F814B04FF0B80BC7F814B04FF0B40BCCF814B04F\n" 
+"F0A80BCEF814B0C8F814B04FF0A00BC9F814B04FF09E0B\n" 
+"CAF808B04FF09A0BC1F818B04FF0960BC2F818B04FF092\n" 
+"0BC3F818B04FF09C0BC4F818B04FF08C0BC5F818B04FF0\n" 
+"840BC6F818B04FF0980BC7F818B04FF0940BCCF818B04F\n" 
+"F0880BCEF818B0C8F818B04FF0800BC9F818B04FF4004B\n" 
+"AAF80CB04FF4804BA1F81CB04FF4005BA2F81CB04FF480\n" 
+"5BA3F81CB04FF0800BA4F81CB04FF4006BA5F81CB04FF4\n" 
+"007BA6F81CB04FF0400BA7F81CB04FF0200BACF81CB04F\n" 
+"F4806BAEF81CB0A8F81CB04FF4807BA9F81CB04FF4804B\n" 
+"AAF80EB04FF4005BA1F81EB04FF4805BA2F81EB04FF400\n" 
+"6BA3F81EB04FF4004BA4F81EB04FF4806BA5F81EB04FF4\n" 
+"007BA6F81EB04FF0400BA7F81EB04FF0800BACF81EB04F\n" 
+"F0080BAEF81EB0A8F81EB04FF0040BA9F81EB04FF0010B\n" 
+"CAF820B04FF0000BC1F830B0C2F830B0C3F830B0C4F830\n" 
+"B04FF0010BC5F830B0C6F830B04FF0000BC7F830B0CCF8\n" 
+"30B04FF0010BCEF830B0C8F830B0C9F830B04FF0000BCA\n" 
+"F824B04FF0010BC1F834B04FF0000BC2F834B0C3F834B0\n" 
+"C4F834B04FF0010BC5F834B0C6F834B0C7F834B04FF000\n" 
+"0BCCF834B04FF0010BCEF834B04FF0000BC8F834B04FF0\n" 
+"010BC9F834B04FF0000BCAF828B0C1F838B04FF0010BC2\n" 
+"F838B04FF0000BC3F838B0C4F838B0C5F838B0C6F838B0\n" 
+"C7F838B04FF0010BCCF838B0CEF838B0C8F838B0C9F838\n" 
+"B04FF0000BCAF82CB0DA46C1F83CA05146D163F1940380\n" 
+"258600D9630121E1635146E963F163F963CCF83C10CEF8\n" 
+"3C10C8F83C10C9F83C10012180F83811514680F8781103\n" 
+"2180F8B81180F8F81180F87813514680F8381280F8F812\n" 
+"80F8B813032180F8F813514680F87812012180F8B81251\n" 
+"4680F8381300F57E7102220A7480F8482480F888244FF4\n" 
+"80428A8300F248424FF40053938100F288404FF4805383\n" 
+"814FF48143CB834FF40251D1814FF48451C181BDE8F08F\n" 
+"0000032180F8B410B43004214170052181700621C17007\n" 
+"21017108214171092181710A21C1710B2101720C214172\n" 
+"0D2181720E21C1720F21017310214173112181731221C1\n" 
+"73704710B5044601F0F3FE204610BD00001AA210EE101A\n" 
+"DFF860C0F2EC060A614509DB00EE803A70EE800A83EE20\n" 
+"0A40F0020010EE101A21F0004CDCF1665C0BD860EE000A\n" 
+"20EE203A03EE010A01EEA02A42EE202A80EE220A400810\n" 
+"F0020F18BFB1EE400A02EB8002D2ED000A30EE200A28BF\n" 
+"B1EE400A7047A430893ED7B3DD3F6AD5033F2B94A93DB8\n" 
+"2A593F0000803F000080BF00000000920A063FDB0FC93F\n" 
+"920A863FDB0FC93F920A0640DB0F4940368D274010B5DF\n" 
+"F8DC44F9F718FC60660020024603E004EB8001CA62401C\n" 
+"0928F9DB10462066E065F9F7FDFBA0664FF4FA70206060\n" 
+"60DFF8B004A0609FED0A0A84ED030A84ED040A84ED050A\n" 
+"B5EE000A84ED060A84ED070ADFF89004206207206062A0\n" 
+"6210BD00009A99193F70470000F8B52DED048B0C469FED\n" 
+"3D8ADFF8646400207065B065306E401C3066DFF8605401\n" 
+"2C02D1002068672867F06D0A2839DA1E220021706EF8F7\n" 
+"D3FAC5F88C001E220121706EF8F7CCFAF16D06EB810233\n" 
+"6E03EB8307BB00D362012921DBD5F88C3093ED000AD0ED\n" 
+"000A30EE600AD3ED010A90ED011A70EEC10A93ED021AD0\n" 
+"ED021A31EE611A05EB810020EE000A00EEA00A01EE010A\n" 
+"80ED050AD36A926A9A1A8263481CF065316E0A2902DA03\n" 
+"20C5F88800F06D0A28C0F23781401EF065706E0A2920D1\n" 
+"1E220A21F8F79BFA85ED030A1E220A21706EF8F7B2FA85\n" 
+"ED040A1E220A21706EF8F7C9FA85ED050A0020092844DA\n" 
+"05EB800191ED060A38EE008A401CF5E7000000001E220A\n" 
+"21F8F76AFAD5F88C1095ED030AD0ED000A30EE600AD1ED\n" 
+"000A30EE200A85ED030A95ED040AD0ED010A30EE600AD1\n" 
+"ED010A30EE200A85ED040A95ED050AD0ED020A30EE600A\n" 
+"D1ED020A30EE200A85ED050AF06D05EB800090ED050AD0\n" 
+"ED040A30EE200AD0ED030A30EE200AF0EE080A20EE208A\n" 
+"95ED030AF2EE040AC0EE208A95ED040A80EEF194031029\n" 
+"8600209A95ED050AC0EE209A306E0A2805D1C5ED008A85\n" 
+"ED019AC5ED029A00270FE01E22C7F1090109B2706EF8F7\n" 
+"13FA95ED021AD5ED010A95ED000A00F0FBF87F1C0A2FED\n" 
+"DBF06A716A726D914249DAA96F002908D128660121A967\n" 
+"C5ED008A85ED019AC5ED029AB16AB26D91420CDAE96F00\n" 
+"290BD168660121E967C5ED008A85ED019AC5ED029A01E0\n" 
+"0021E967296E411A296732686B6EC31A9A420CD2EB6F01\n" 
+"2B09D10020C5F88000C5F8840068670120C5F8880060E0\n" 
+"8A420CD2A96F012909D10020C5F88000C5F88400686702\n" 
+"20C5F8880051E0A96E401A68670320C5F888004AE0C5ED\n" 
+"008A85ED019AC5ED029A0021A967E9672967D5F8801000\n" 
+"2903D1A8660121C5F88010A96E411A69679FED740A28EE\n" 
+"000AB5EE400AF1EE10FA03DC9FED710A28EE000AD6ED02\n" 
+"0AB3EE041A60EE810AF4EE400AF1EE10FA08D5D5F88410\n" 
+"002907D1E8660121C5F8841002E00021C5F884107168A1\n" 
+"F5FA71EA6E801A814207D2D5F88400012803D10420C5F8\n" 
+"880002E00320C5F8880000200CE006EB80010A6BCA6208\n" 
+"2805DA05EB8001CA698A610A6CCA63401C0928F0DBD5F8\n" 
+"8800012806D044D3032822D011D304282FD03EE0B06E01\n" 
+"21C162296F016302214163002C35D1BDEC048BBDE8F440\n" 
+"F9F736BAB06E0121C162296F016304214163002C26D102\n" 
+"21BDEC048BBDE8F440F9F726BAB06E0121C162696F0163\n" 
+"08214163002C16D10221BDEC048BBDE8F440F9F716BAB0\n" 
+"6E0121C162696F016310214163002C06D10221BDEC048B\n" 
+"BDE8F440F9F706BABDEC048BF1BDD0ED001A31EEC00AD0\n" 
+"ED011A71EEE00AD0ED021A31EEC11AB5EE400AF1EE10FA\n" 
+"01D5B1EE400AF5EE400AF1EE10FA01D5F1EE600AB5EE40\n" 
+"1AF1EE10FA01D5B1EE411A1C48D0ED031AB4EE610AF1EE\n" 
+"10FA0FD5D0ED041AF4EE610AF1EE10FA08D5D0ED051AB4\n" 
+"EE611AF1EE10FA01D5012100E00021D0ED061AB4EE610A\n" 
+"F1EE10FA10D590ED070AF4EE400AF1EE10FA09D590ED08\n" 
+"0AB4EE401AF1EE10FA02D5826D521C8265426D89184165\n" 
+"704700007A4400007AC424C78800000040413333B33E90\n" 
+"C7880080B5542200211748D5F7D9FD002002BD14490968\n" 
+"142901DB16200BE011490968104A12EB810148600E4800\n" 
+"68401C0D4908600020704738B5002400250AE0094810EB\n" 
+"850040688047002802D0002C00D104006D1C0348006885\n" 
+"42F0DB200032BD00000000F8E88800F446490006D200F0\n" 
+"11F809420DD5C8174108604700F00AF807D04942404271\n" 
+"F1000102D400205FF0004160474A0DA2F5F19403A02C86\n" 
+"0080621E3A0ADC5242202A18DA890241F0004141EA5050\n" 
+"0021D0407047D2F1200210D4890241F0004141EA5051C0\n" 
+"02D04061FA02F35840D14080EA01007047002000217047\n" 
+"D0170100704700214010002800D0491C0128F9DA481C70\n" 
+"472DE9F14F86B000200021CDE902010698806F002802D1\n" 
+"00200021EDE00698D0F88000401C0190002000900EE040\n" 
+"4271EB4101DDE902238B4204DC01DB824201D2CDE90201\n" 
+"0098401C00900098032880F2A4800098069911EBC002D2\n" 
+"E90001019A01F0B6FB06000F000098069911EBC002D2E9\n" 
+"0601019A01F0ABFB04000D000098069911EBC002D2E90C\n" 
+"01019A01F0A0FBCDE904010098069911EBC002D2E91201\n" 
+"019A01F095FBA6FB062306FB073307FB0633B4EB020875\n" 
+"EB0309A6FB082306FB093307FB08335FF0030A5FF0000B\n" 
+"AAFB02890AFB03990BFB0299A6FB062306FB073307FB06\n" 
+"33A6FB02AB06FB03BB07FB02BB18EB0A0259EB0B03DDE9\n" 
+"0489B2EB080273EB0903A4FB048904FB059905FB049903\n" 
+"240025A4FB08AB04FB09BB05FB08BBB0EB0A0071EB0B01\n" 
+"A6FB064506FB075507FB0655A6FB048906FB059907FB04\n" 
+"99A6FB084506FB095507FB08555FF002085FF00009A8FB\n" 
+"04AB08FB05BB09FB04BB10EB0A0051EB0B01A6FB024506\n" 
+"FB035507FB025504220023A2FB046702FB057703FB0477\n" 
+"801BB9410029FFF64EAF02DC0028FFF44AAF4BE7069880\n" 
+"6F0699C96F884215D001200699D1F88010884000EE100A\n" 
+"B8EEC00AFEF766FCF7EE000A80EE800A069880ED210A06\n" 
+"980699896FC167DDE9020100F0B9FF00EE100A0698D0ED\n" 
+"210A20EE200A10EE100A01F002FBCDE90201DDE9020107\n" 
+"B0BDE8F08F2DE9F04F85B0814600200021CDE90001D9F8\n" 
+"7800002802D10020002189E0D9F87800FFF7E5FE02905F\n" 
+"F000080DE0404271EB4101DDE900238B4204DC01DB8242\n" 
+"01D2CDE9000118F10108B8F1030F48DA19EBC802D2E900\n" 
+"01029A01F0BAFA04000D0019EBC802D2E90601029A01F0\n" 
+"B1FA06000F0019EBC802D2E90C01029A01F0A8FAA4FB04\n" 
+"2304FB053305FB0433B21A77EB0303A4FB026704FB0377\n" 
+"05FB027703220023A2FB06AB02FB07BB03FB06BBA4FB04\n" 
+"2304FB053305FB0433A4FB026704FB037705FB02771AEB\n" 
+"06025BEB0703101A73EB01010029A9DB01DC0028A6D3A8\n" 
+"E7D9F87800D9F87C1088420FD099ED1E0AB8EEC00AFEF7\n" 
+"C8FBF7EE000A80EE800A89ED210AD9F87800C9F87C00DD\n" 
+"E9000100F01CFF00EE100AD9ED210A20EE200A10EE100A\n" 
+"01F066FACDE90001DDE9000105B0BDE8F1940330308600\n" 
+"F08F2DE9FE4186460E0000271EE0D317A2FB004502FB01\n" 
+"5503FB005520002900182303FB0C6313EBC703182404FB\n" 
+"0C6414EBC708D8E9004524184D41C3E900451CF1010CBC\n" 
+"F1040FE1DB7F1C032F36DAB06F002805D116EB87003EF9\n" 
+"1710C0F888103EF9170016EB8701D1F88810401A00A941\n" 
+"F8270016EB8700006E00A951F82710884205DA16EB8700\n" 
+"00A951F82710016600A850F8270016EB8701C96E884205\n" 
+"DA16EB870000A951F82710C16600A850F8272001200021\n" 
+"5FF0000CC2E7B06F401CB0670120C6F8A800BDE8F78170\n" 
+"B504000026049D05E015EB860054F82610C166761C032E\n" 
+"F7DBC5E92623A86F002815D0002611E054F8260015EB86\n" 
+"01D1F88810401AEBF7C0F815EB8601096E814202DA15EB\n" 
+"86010866761C032EEBDBA86F401CA8670120C5F8A80070\n" 
+"BD00210BE010EB810210EB8103DB6EC2F8883010EB8102\n" 
+"00231366491C0329F1DBD0E92623C0E928230021816700\n" 
+"21C0F8A8107047016E426E8A4200DB416E826E8A4200DB\n" 
+"816E0800704700224910002900D0521C0129F9DA511CC0\n" 
+"F88010704710B50400602200212000D5F7FEFA0020A067\n" 
+"0020C4F888000020C4F88C000020C4F890000020C4F8A8\n" 
+"005FF0404020665FF0404060665FF04040A0665FF08040\n" 
+"E0665FF0804020675FF08040606710BD80B500F02CF8B5\n" 
+"EE400AF1EE10FA03D0DFF86C00806D00E0012002BD1FB5\n" 
+"FEF7C9FD040000A8FEF7C9FDE4B2012C03D1DFF8480000\n" 
+"990160DFF8400090ED000A1FBDDFF84000D0F87C017047\n" 
+"DFF83400D0F880017047DFF82C00006E704780B5FEF7A8\n" 
+"FDC0B2012802D1FFF7D7FF03E0DFF80C0090ED1C0A01BD\n" 
+"00002C6E8900A84B8800A84B880038B5FFF7B9FF0400FF\n" 
+"F7D7FF0500FFF7D9FF55EA040150EA0104FFF7D8FF2043\n" 
+"32BD012001F056B9002001F053B900002DE9F0412DED02\n" 
+"8B07000E00B0EE408AF0EE608A18EE100AD6F7DCFAD7E9\n" 
+"3023D6F706FA04000D0018EE900AD6F7D2FAD6E93023D6\n" 
+"F7FCF922002B00E7F74AFBC7E930015FF0000841E018EE\n" 
+"100AD6F7C1FA17EBC80253681268D6F7E9F904000D0018\n" 
+"EE900AD6F7B5FA16EBC80253681268D6F7DDF922002B00\n" 
+"E7F72BFB17EBC802C2E9000118EE100AD6F7A3FA17EBC8\n" 
+"02D2F89430D2F89020D6F7C9F904000D0018EE900AD6F7\n" 
+"95FA16EBC802D2F89430D2F89020D6F7BBF922002B00E7\n" 
+"F709FB17EBC802C2E9240118F10108B8F1060FBADB5FF0\n" 
+"00081FE018EE100AD6F779FA17EBC802D36C926CD6F7A1\n" 
+"F904000D0018EE900AD6F76DFA16EBF19403C0338600C8\n" 
+"02D36C926CD6F795F922002B00E7F7E3FA17EBC802C2E9\n" 
+"120118F10108B8F1090FDCDB5FF000081FE018EE100AD6\n" 
+"F753FA17EBC802536B126BD6F77BF904000D0018EE900A\n" 
+"D6F747FA16EBC802536B126BD6F76FF922002B00E7F7BD\n" 
+"FA17EBC802C2E90C0118F10108B8F1030FDCDBBDEC028B\n" 
+"BDE8F08130B587B005000C002068D6F73FF9CDE9000160\n" 
+"68D6F73AF9CDE90201A068D6F735F9CDE90401D5E93023\n" 
+"0020B749E7F797FAC5E93001D5E90C23DDE90001E7F78F\n" 
+"FAC5E90C01D5E90E23DDE90201E7F787FAC5E90E01D5E9\n" 
+"1023DDE90401E7F77FFAC5E91001DDE90023DDE90001D6\n" 
+"F725F9D5E90023E7F773FAC5E90001DDE90023DDE90201\n" 
+"D6F719F9D5E90223E7F767FAC5E90201DDE90023DDE904\n" 
+"01D6F70DF9D5E90423E7F75BFAC5E90401DDE90223DDE9\n" 
+"0201D6F701F9D5E90623E7F74FFAC5E90601DDE90223DD\n" 
+"E90401D6F7F5F8D5E90823E7F743FAC5E90801DDE90423\n" 
+"DDE90401D6F7E9F8D5E90A23E7F737FAC5E90A01DDE900\n" 
+"23DDE90001D6F7DDF8DDE90023D6F7D9F8D5E91223E7F7\n" 
+"27FAC5E91201DDE90023DDE90201D6F7CDF8DDE90223D6\n" 
+"F7C9F8D5E91423E7F717FAC5E91401DDE90023DDE90401\n" 
+"D6F7BDF8DDE90423D6F7B9F8D5E91623E7F707FAC5E916\n" 
+"01DDE90223DDE90001D6F7ADF8DDE90023D6F7A9F8D5E9\n" 
+"1823E7F7F7F9C5E91801DDE90223DDE90201D6F79DF8DD\n" 
+"E90223D6F799F8D5E91A23E7F7E7F9C5E91A01DDE90223\n" 
+"DDE90401D6F78DF8DDE90423D6F789F8D5E91C23E7F7D7\n" 
+"F9C5E91C01DDE90423DDE90001D6F77DF8DDE90023D6F7\n" 
+"79F8D5E91E23E7F7C7F9C5E91E01DDE90423DDE90201D6\n" 
+"F76DF8DDE90223D6F769F8D5E92023E7F7B7F9C5E92001\n" 
+"DDE90423DDE90401D6F75DF8DDE90423D6F759F8D5E922\n" 
+"23E7F7A7F9C5E92201DDE90023DDE90001D6F74DF8DDE9\n" 
+"0023D6F749F8DDE90023D6F745F8D5E92423E7F793F9C5\n" 
+"E92401DDE90223DDE90201D6F739F8DDE90223D6F735F8\n" 
+"DDE90223D6F731F8D5E92623E7F77FF9C5E92601DDE904\n" 
+"23DDE90401D6F725F8DDE90423D6F721F8DDE90423D6F7\n" 
+"1DF8D5E92823E7F76BF9C5E92801DDE90023DDE90001D6\n" 
+"F711F8DDE90223D6F70DF8DDE90223D6F709F8D5E92A23\n" 
+"E7F757F9C5E92A01DDE90023DDE90001D5F7FDFFDDE904\n" 
+"23D5F7F9FFDDE90423D5F7F5FFD5E92C23E7F743F9C5E9\n" 
+"2C01DDE90223DDE90201D5F7E9FFDDE90423D5F7E5FFDD\n" 
+"E90423D5F7E1FFD5E92E23E7F72FF9C5E92E0107B030BD\n" 
+"00000000F03F2DE9F0472DED108BF194035037860084B0\n" 
+"07000E009246D7E93023D7E90001D5F7C8FF04000D00D7\n" 
+"E90C23D7E90C01D5F7C0FF02000B0020002900E3F7CAF8\n" 
+"CDE90001D7E93023D7E90601D5F7B2FF04000D00D7E90E\n" 
+"23D7E90E01D5F7AAFF02000B0020002900E3F7B4F841EC\n" 
+"180BD7E93023D7E90A01D5F79CFF04000D00D7E91023D7\n" 
+"E91001D5F794FF02000B0020002900E3F79EF841EC190B\n" 
+"D7E93023D7E90201D5F786FF04000D00D7E90C23D7E90E\n" 
+"01D5F77EFF02000B0020002900E3F788F841EC1A0BD7E9\n" 
+"3023D7E90401D5F770FF04000D00D7E90C23D7E91001D5\n" 
+"F768FF02000B0020002900E3F772F841EC1B0BD7E93023\n" 
+"D7E90801D5F75AFF04000D00D7E90E23D7E91001D5F752\n" 
+"FF02000B0020002900E3F75CF841EC1C0BD7E93023D7E9\n" 
+"1201D5F744FF04000D00D7E90C23D7E90001D5F73CFF02\n" 
+"000B0020002900E3F746F804000D00D7E93023D7E91401\n" 
+"D5F72EFF22002B00E7F77CF804000D00D7E90C23D7E906\n" 
+"01D5F722FF02000B0020002900E3F72CF804000D00D7E9\n" 
+"3023D7E91601D5F714FF22002B00E7F762F804000D00D7\n" 
+"E90C23D7E90A01D5F708FF02000B0020002900E3F712F8\n" 
+"0022DFF83C35D5F7FDFE41EC1D0BD7E93023D7E91801D5\n" 
+"F7F5FE04000D00D7E90E23D7E90001D5F7EDFE02000B00\n" 
+"20002900E2F7F7FF04000D00D7E93023D7E91A01D5F7DF\n" 
+"FE22002B00E7F72DF804000D00D7E90E23D7E90601D5F7\n" 
+"D3FE02000B0020002900E2F7DDFF04000D00D7E93023D7\n" 
+"E91C01D5F7C5FE22002B00E7F713F804000D00D7E90E23\n" 
+"D7E90A01D5F7B9FE02000B0020002900E2F7C3FF0022DF\n" 
+"F89C34D5F7AEFE41EC1E0BD7E93023D7E91E01D5F7A6FE\n" 
+"04000D00D7E91023D7E90001D5F79EFE02000B00200029\n" 
+"00E2F7A8FF04000D00D7E93023D7E92001D5F790FE2200\n" 
+"2B00E6F7DEFF04000D00D7E91023D7E90601D5F784FE02\n" 
+"000B0020002900E2F78EFF04000D00D7E93023D7E92201\n" 
+"D5F776FE22002B00E6F7C4FF04000D00D7E91023D7E90A\n" 
+"01D5F76AFE02000B0020002900E2F774FF0022DFF80034\n" 
+"D5F75FFE41EC1F0B53EC192B51EC1A0BD5F757FE53EC1A\n" 
+"2BD5F753FE04000D0053EC1A2B00205FF08041D5F74AFE\n" 
+"53EC1B2BD5F746FE53EC1C2BD5F742FE02000B00200029\n" 
+"00E2F74CFF04000D0053EC182B51EC1B0BD5F734FE53EC\n" 
+"1B2BD5F730FE22002B00E6F77EFF04000D00DDE9002351\n" 
+"EC1C0BD5F724FE53EC1C2BD5F720FE22002B00E6F76EFF\n" 
+"04000D00DDE9002351EC180BD5F714FE53EC192BD5F710\n" 
+"FE02000B0020002900E2F71AFFF19403E03A8600CDE902\n" 
+"01DDE9022300200021F7F7AAFE00F0978153EC182B51EC\n" 
+"1F0BD5F7FAFD04000D0053EC1C2B51EC1E0BD5F7F2FD02\n" 
+"000B0020002900E2F7FCFE53EC1B2BD5F7E8FD04000D00\n" 
+"53EC1C2B51EC1C0BD5F7E0FD53EC1D2BD5F7DCFD22002B\n" 
+"00E6F72AFF04000D0053EC182B51EC190BD5F7D0FD53EC\n" 
+"1D2BD5F7CCFD02000B0020002900E2F7D6FE04000D0053\n" 
+"EC192B51EC1A0BD5F7BEFD53EC1E2BD5F7BAFD22002B00\n" 
+"E6F708FF04000D0053EC1A2B51EC1C0BD5F7AEFD53EC1F\n" 
+"2BD5F7AAFD02000B0020002900E2F7B4FEC6E90001DDE9\n" 
+"002351EC1F0BD5F79CFD04000D0053EC1B2B51EC1D0BD5\n" 
+"F794FD02000B0020002900E2F79EFE53EC1C2BD5F78AFD\n" 
+"04000D0053EC1B2B51EC1B0BD5F782FD53EC1E2BD5F77E\n" 
+"FD22002B00E6F7CCFE04000D00DDE9002351EC190BD5F7\n" 
+"72FD53EC1E2BD5F76EFD02000B0020002900E2F778FE04\n" 
+"000D0053EC192B51EC1A0BD5F760FD53EC1D2BD5F75CFD\n" 
+"22002B00E6F7AAFE04000D0053EC1A2B51EC1B0BD5F750\n" 
+"FD53EC1F2BD5F74CFD02000B0020002900E2F756FEC6E9\n" 
+"0201DDE9002351EC1E0BD5F73EFD04000D0053EC1A2B51\n" 
+"EC1D0BD5F736FD02000B0020002900E2F740FE53EC1C2B\n" 
+"D5F72CFD04000D0053EC1A2B51EC1A0BD5F724FD53EC1F\n" 
+"2BD5F720FD22002B00E6F76EFE04000D00DDE9002351EC\n" 
+"180BD5F714FD53EC1F2BD5F710FD02000B0020002900E2\n" 
+"F71AFE04000D0053EC182B51EC1B0BD5F702FD53EC1D2B\n" 
+"D5F7FEFC22002B00E6F74CFE04000D0053EC1A2B51EC1B\n" 
+"0BD5F7F2FC53EC1E2BD5F7EEFC02000B0020002900E2F7\n" 
+"F8FDC6E90401D6E90001DDE90223E2F7B0FEC6E90001D6\n" 
+"E90201DDE90223E2F7A8FEC6E90201D6E90401DDE90223\n" 
+"E2F7A0FEC6E90401D6E90023D6E90001D5F7C8FC04000D\n" 
+"00D6E90223D6E90201D5F7C0FC22002B00E6F70EFE0400\n" 
+"0D00D6E90423D6E90401D5F7B4FC22002B00E6F702FECD\n" 
+"E90001D7E90023D7E90601E6F7FAFDD7E90A23E6F7F6FD\n" 
+"80468946D6E90023D7E90C01D5F79CFC04000D00D6E902\n" 
+"23D7E90E01D5F794FC22002B00E6F7E2FD04000D00D6E9\n" 
+"0423D7E91001D5F788FC22002B00E6F7D6FD00225FF080\n" 
+"43D5F77FFC02000B0040464946E2F789FDD7E93023E2F7\n" 
+"45FEDDE90023E6F7C3FD41EC100BE6F733FE8AED000B01\n" 
+"2000E0002004B0BDEC108BBDE8F08700000000E03F80B5\n" 
+"012251EC100B00F04AFC41EC100B01BD0000002940F10B\n" 
+"80F4464942404271F1000100F00AF850F0004060470000\n" 
+"50EA010200F00E80094200BFF19403703E86000BD1B0FA\n" 
+"80F18840C1F19D01C905020672F1004241EB10207047B1\n" 
+"FA81F241409040C2F1200261FA02F181EA000018BF40F0\n" 
+"010002F19D01E8E700002DE9FE4F2DED108B88B09FED01\n" 
+"0A91E1F304353F0022009201220192009ABDF8683012FA\n" 
+"83F700977A00199DDDF800C055F83CC000EE90CA55F832\n" 
+"C0BB1801EE10CA55F833C005EBC202FC1801EE90CAD2ED\n" 
+"014A55F834C005EBC30207EB040902EE10CA92ED015A55\n" 
+"F839C005EBC40207EB090602EE90CAD2ED015A55F836C0\n" 
+"05EBC902BF1903EE10CA92ED016A55F837C005EBC60203\n" 
+"EE90CAD2ED016ADDF800C005EBC70205EBCC0C92ED017A\n" 
+"019A9CED014A8B18CC1801EB040901EB090650F836C007\n" 
+"EE90CA50F832C08F1908EE10CA50F837C078EE278A78EE\n" 
+"679A07EE90CA50F833C001EB070E08EE10CA50F83EC038\n" 
+"EE279A38EE67AA07EE90CA50F834C001EB0E0808EE10CA\n" 
+"50F838C00AEE90CA50F839C078EE27BA38EE678A0BEE10\n" 
+"CA7BEE2A7A7BEE6AAA38EEEBBA78EEAB8A79EE67BA79EE\n" 
+"277A00EBC20538EEA79A85ED009A00EBC60578EEE77A07\n" 
+"9500EBC40CD5ED018A00EBC205069500EBC90A95ED019A\n" 
+"39EE28CA00EBC70579EE688A059500EBC60695ED019A00\n" 
+"EBC305049500EBC404D5ED01CA3CEE89EA00EBCE057CEE\n" 
+"C9CA029595ED019A9CED01DA3DEE09FA00EBC8053DEE49\n" 
+"9A95ED01DADAED01DADDF818B07DEE8DEA3DEECDDA7CEE\n" 
+"4FDA3CEE0FFA3EEE6ECA7EEE2EEA3BEE0CEA3BEE4CBA3F\n" 
+"EE2ECA8BED01CA3DEEEBCA7DEEABBA7FEE6EEA62EE27DA\n" 
+"45EEAEDAC6ED00DA62EE2EDA079E45EEE7DA61EE0E7AC6\n" 
+"ED01DA44EE8C7AC4ED007A61EE0C7A44EECE7ACCED017A\n" 
+"63EE0B7A00EBCE0446EEAB7AC4ED007A63EE2B7A029C46\n" 
+"EECB7AC4ED017A7AEE6A7A27EE80BA7AEE2A7A27EE80AA\n" 
+"7CEECD7A67EE80BA7CEE8D7A27EE80CA79EECB7A79EE8B\n" 
+"CA78EE4A9A78EEEBAA38EEABDA38EE0AAA39EE4CBA79EE\n" 
+"0C8A3CEEA88A7CEEE8BA3AEEE9CA77EE8B8A37EECB9A7A\n" 
+"EEA9AA3DEE4ABA7DEE0A7A60EE889A00EBC30344EE0B9A\n" 
+"C3ED009A60EE8B9A049B44EE489AC3ED019A23EEAB8A07\n" 
+"EE278A00EBC80363EEA77A83ED008A47EE6B7AC5ED017A\n" 
+"62EEA87A00EBC70346EE0C7AC3ED007A62EE8C7A059B46\n" 
+"EE687AC3ED017A61EE897A00EBC90345EE2A7AC3ED007A\n" 
+"61EEAA7A45EE497ACAED017A039B9A18BDF860309A42FF\n" 
+"F4CBAE019A521C01928A42FFF479AEBDF86820D200ADF8\n" 
+"682003910022C9088B18CC1801EB040901EB090650F836\n" 
+"C000EE90CA50F832C08F19F194030042860001EE10CA71\n" 
+"EE202A50F837C071EE600A01EE10CA50F833C001EB070E\n" 
+"01EE90CA71EE813A50F83EC071EEC11A01EE10CA50F834\n" 
+"C001EB0E0802EE10CA32EE014A50F838C032EE411A02EE\n" 
+"10CA50F839C003EE10CA73EE024A33EE422A32EEC43A73\n" 
+"EEE4BA72EE842A73EEA43A00EBC20532EEA34A85ED004A\n" 
+"00EBC60572EEE32AC5ED002A00EBC606009600EBC705D6\n" 
+"ED012A00EBC20600EBCE0CD6ED013A019573EEA24A73EE\n" 
+"E22AD5ED013A00EBC305029500EBC80A95ED014A34EE23\n" 
+"5A00EBC40534EE634ADCED013AD5ED015A35EEA36A00EB\n" 
+"C90B75EEE33ADAED015ADBED016A76EEA57A76EEE55A74\n" 
+"EEC66A35EE67CA74EE864A35EE275A34EE856A86ED016A\n" 
+"74EEC54A009EC6ED014A00EBC40473EE0C4AC4ED004A00\n" 
+"EBCE0433EE4C3A84ED003A36EEEB3A85ED013A36EEAB3A\n" 
+"8CED013A31EEC23A71EE821A61EE808A74EE651A61EE80\n" 
+"7A74EE251A23EE008A21EE80CA71EE689A31EE28AA30EE\n" 
+"C89A70EE88BA73EE8C8A00EBC3037BEEA80AC3ED000A00\n" 
+"EBC8037BEEE80AC3ED000A33EECCBA00EBC70379EE0B0A\n" 
+"C3ED000A00EBC90379EE4B0AC3ED000A72EEE7AA029B72\n" 
+"EEA77A77EECA0AC3ED010A77EE8A0ACAED010A7AEEE90A\n" 
+"019BC3ED010A7AEEA90ACBED010A039B9A18BDF860309A\n" 
+"42FFF408AF0829BFF472AD08B0BDEC108B03B0BDE8F08F\n" 
+"4B1C012B98BF70472DE9F003911C9B08B1F80480B1F802\n" 
+"900A8831F802CC8044814402448444D9F80070D8F80060\n" 
+"1568DCF80040C9F80060C8F80070CCF800501460D9F804\n" 
+"70D8F804605568DCF80440C9F80460C8F80470CCF80450\n" 
+"546008315B1ED5D1BDE8F0037047000081423ABF531898\n" 
+"42C5F748BF8018990707D0521E24BF13F8011D00F8011D\n" 
+"F6D8704781071CD1103A07D330B433E93210103A20E932\n" 
+"10F9D230BC1032121F24BF53F8041D40F8041DF8D838BF\n" 
+"121D521E24BF13F8011D00F8011DF8D8704700BF083A07\n" 
+"D333E90210083A40F804CD40F8041DF7D20832EAE7D2B2\n" 
+"203A22BF41FA02F0C91770472032D141D04048409140D1\n" 
+"4048409140114170470000C0F3C7517F392CD420290DDA\n" 
+"C1F11F0C41004FEAC11141F0004121FA0CF0894128BF40\n" 
+"42C9437047D1F13F0C1CD441004FEAC11141F0004161FA\n" 
+"0CF021FA0CF180EA0100094244BF4FF00041002004D349\n" 
+"42404271F10001704701D5401E491E7047002000217047\n" 
+"09424FF0004158BFC943002070470000DFED4A0A10B560\n" 
+"EE200AB0EEE01ADFED481AB4EE611A82B00446F1EE10FA\n" 
+"29D5F5EE400AF1EE10FAF1940390458600ACBFB6EE001A\n" 
+"BEEE001A70EE810AFDEEE00A10EE900AA8B1FAEEC90A9F\n" 
+"ED3B1A00EEC10A9FED3A1A00EEC10A9FED391A00EEC10A\n" 
+"9FED381A00EEC10A9FED371A00EEC10A00F00300041921\n" 
+"E08DED000A0098C0F3C750FF2808D088B9009840020ED1\n" 
+"E00748D5B7EE000A45E00098400246D1FCF717FD212101\n" 
+"609FED290A13BD8DED000A00A800F089FA04199DED000A\n" 
+"DFED240AB4EE600AF1EE10FA0BDBDFED220AB4EE600AF1\n" 
+"EE10FA04D5E00723D5B7EE000A20E060EE000AE0070ED5\n" 
+"9FED1B0A9FED1B1A00EE801ADFED1A1A41EE201AB7EE00\n" 
+"0A01EEA00A0DE0DFED161A9FED162A00EEA12ADFED151A\n" 
+"20EE201A42EE201A01EE210AA00748BFB1EE400A13BD00\n" 
+"0083F9223F0000004F0000C94600A0FD400020A23A0000\n" 
+"34330030C22EFFFFFF7FFEFF7FB9000080399349B2BA36\n" 
+"A02A3DDFFFFFBE6E8C4CB94283083CA1AA2ABEF8B52DED\n" 
+"048B154641EC180B82B053EC182BC448C449D5F703F8C4\n" 
+"4AC44B41EC190B21F00041E2F725F880F0F38051EC190B\n" 
+"00220023E2F735F853EC192B99BF0020BC490020BC49E6\n" 
+"F73CF9E2F7CCF8040051D0D4F7CCFF0022B84BD4F7E0FF\n" 
+"41EC190B53EC192B4FF0A040B449D4F7D7FF02460B4651\n" 
+"EC180BE2F7E1F806460F4653EC192B4FF0C040AE49D4F7\n" 
+"C8FF02460B4630463946E2F7D2F806460F4653EC192B4F\n" 
+"F00050A749D4F7B9FF02460B4630463946E2F7C3F80646\n" 
+"0F4653EC192B0020A149D4F7ABFF02460B4630463946E2\n" 
+"F7B5F806460F4653EC192B4FF000509B49D4F79CFF0246\n" 
+"0B4630463946E2F7A6F841EC180B04F00300451951EC18\n" 
+"0B6FF00102944BE1F7CCFF0BD800224FF07953E1F7AEFF\n" 
+"05D2E80740F18E819FED8E8B8AE153EC182BD4F779FF41\n" 
+"EC190BE80731D553EC192B8A488A49D4F76FFF8A4A8A4B\n" 
+"E6F7BDF853EC192BD4F767FF884A884BE6F7B5F853EC19\n" 
+"2BD4F75FFF864A864BE6F7ADF853EC192BD4F757FF844A\n" 
+"844BE6F7A5F853EC192BD4F74FFF824B6FF05102E6F79C\n" 
+"F853EC192BD4F746FF0022624B37E053EC182B51EC190B\n" 
+"D4F73DFF06460F4653EC192B91489149D4F735FF914A91\n" 
+"4BE6F783F853EC192BD4F72DFF8F4A8F4BE6F77BF853EC\n" 
+"192BD4F725FF8D4A8D4BE6F773F853EC192BD4F71DFF8B\n" 
+"4A8B4BE6F76BF853EC192BD4F715FF894A564BE6F763F8\n" 
+"32463B46D4F70DFF53EC182BE6F75BF841EC180B13E18D\n" 
+"ED008BDDE90001DDE90023C3F30A5140F2FF72914213D0\n" 
+"002904BF190350EA11301CD1E80748BF9FED478BA80740\n" 
+"F1038151EC180B81F0F1940320498600004141EC180BFB\n" 
+"E0190350EA113040F0F780FCF77FFB2121016002B04FF0\n" 
+"FF306FF00041EFE08DED008B00A800F064F945199DED00\n" 
+"8B354B51EC180B6FF00102E1F70AFF0BD800224FF07953\n" 
+"E1F7ECFE05D2E80740F1CC809FED2D8BC8E053EC182BD4\n" 
+"F7B7FE41EC190BE8076AD553EC192B29482949D4F7ADFE\n" 
+"294A294BE5F7FBFF53EC192BD4F7A5FE274A274BE5F7F3\n" 
+"FF53EC192BD4F79DFE254A254BE5F7EBFF53EC192BD4F7\n" 
+"95FE234A234BE5F7E3FF53EC192BD4F78DFE214B6FF051\n" 
+"02E5F7DAFF53EC192BD4F784FE0022014B8AE000BF0000\n" 
+"F03F83C8C96D305FE43F0000A0FFFFFFDF410000E03F00\n" 
+"00E0BF0000303EFB21B941B410114026A6513E5C14D33C\n" 
+"9A833B3B5555C5BFFFFF3FBE000000000000F03F09260A\n" 
+"1039BA213E3BA861C6F97D92BE63AC30909F01FA3EF6FB\n" 
+"51166CC156BFB10255555555A53FFFFFDFBF53EC182B51\n" 
+"EC190BD4F742FE06460F4653EC192B13481449D4F73AFE\n" 
+"134A144BE5F788FF53EC192BD4F732FE114A124BE5F780\n" 
+"FF53EC192BD4F72AFE0F4A104BE5F778FF53EC192BD4F7\n" 
+"22FE0D4A0E4BE5F770FF53EC192BD4F71AFE0B4A0C4B18\n" 
+"E000BFB08F2FC310D8E53D8F0C73A1E1E55ABE4DADE44F\n" 
+"E31DC73E3EE3B519A0012ABFFAF010111111813F425555\n" 
+"555555C5BFE5F74EFF32463B46D4F7F8FD53EC182BE5F7\n" 
+"46FF41EC180BA80705D551EC180B81F0004141EC180B02\n" 
+"B051EC180BBDEC048BF4BD10B52DED028B044682B094ED\n" 
+"008A9FED2D0A28EE000AB5EE400A8DED000AF1EE10FAAC\n" 
+"BFF6EE000AFEEE000A30EE200A8DED000A002100A800F0\n" 
+"0CF99DED000AB5EE400AF1EE10FA17D0DFED1F0A20EE20\n" 
+"0ADFED1E0A00EE608ADFED1D0A00EE608ADFED1C0A00EE\n" 
+"608ADFED1B0A00EE608ADFED1A0A00EE608A84ED008ADF\n" 
+"ED180A9DED000AB4EE600AF1EE10FA06D4DFED140AB4EE\n" 
+"600AF1EE10FA05DBDFED120A00F0FFF88DED000A9DED00\n" 
+"0ABDEEC00A02B010EE100A00F00300BDEC028B10BD0000\n" 
+"83F9223F000080380000C94600A0FD400020A23A000034\n" 
+"330030C22E000000CF0100004F0000004FD0B52DED048B\n" 
+"044682B094ED008B4748474953EC182BD4F761FDCDE900\n" 
+"0100220023E1F79DFDDDE9002399BF0020414900204149\n" 
+"E5F7A4FECDE90001002100A800F058F9DDE90023002000\n" 
+"21F6F7EEFD4ED03A49D4F742FD41EC190B53EC192B4FF0\n" 
+"A0403649D4F739FD02460B4651EC180BE1F743FE06460F\n" 
+"4653EC192B4FF0C0403049D4F72AFD02460B4630463946\n" 
+"E1F734FE06460F46F19403B04C860053EC192B4FF00050\n" 
+"2949D4F71BFD02460B4630463946E1F725FE06460F4653\n" 
+"EC192B00202349D4F70DFD02460B4630463946E1F717FE\n" 
+"06460F4653EC192B4FF000501D49D4F7FEFC02460B4630\n" 
+"463946E1F708FE41EC180B84ED008BDDE90001164A174B\n" 
+"E1F718FD04D3164A164BE1F72BFD05D80022154B00F030\n" 
+"F9CDE90001DDE90001E1F7C2FD02B000F00300BDEC048B\n" 
+"D0BD83C8C96D305FE43F0000E03F0000E0BF0000303EFB\n" 
+"21B941B410114026A6513E5C14D33C9A833B3B0000C0FF\n" 
+"FFFFDFC10100C0FFFFFFDF410000E0410268C2F3C752FF\n" 
+"2A06D10068400201D1012070470220704703685B0016D0\n" 
+"C2F19602521A012A11DB182A04DB016801F00041016007\n" 
+"E0012191400268491E11404A40026011B14FF0FF307047\n" 
+"0020704710EE100A10EE901AA4464FF0FF034FEA410103\n" 
+"EAD0540A0E1CBF94EA030F92EA030F55D0B1EB400F2ED2\n" 
+"4FEAC11141F0004100F000434FEA002040F000404FEA90\n" 
+"00890864EB0204401A38BF01EB400018BF54F1000407D0\n" 
+"D1EB400038BF081818BFB4F10104F7D140002CD0B0FA80\n" 
+"F100FA01F0521A0EDB43EA102000EBC25000EE100A6446\n" 
+"704708BF00F0004000EE100A6446704743EA102000EE10\n" 
+"0A02F17F024FEAC25100EE901AF1EE100A20F4F851E1EE\n" 
+"101A20EE200AE1EE100A10EE100A64467047184600EE10\n" 
+"0A6446704709421CBF94EA030F92EA030F1CD04FF09842\n" 
+"01EE102A60EE810AB1EB400FCBD2244208BF20EE010A10\n" 
+"EE901A03EAD152A2F119024FEA012191D110EE100A03EA\n" 
+"D054A4F119048CE74FF0807212EB400F2CBF6FF0004011\n" 
+"F1807F644618BF6FF0004000EE100AF2F493AB70474268\n" 
+"C2F30A5240F2FF739A4209D14168090304BF0068002801\n" 
+"D1012070470220704743685B0004BF0368002B25D040F2\n" 
+"33439A1A521A012A1FDB352A06DB416801F00041416000\n" 
+"21016013E0012102F01F039940491E920607D542681140\n" 
+"4A40426002681143002202E0026811404A40026011B14F\n" 
+"F0FF30704700207047000070B540F2FF7601F0004C5B00\n" 
+"06EA11545D0D1ABFB442B54278E0B3EB410F08BF82424B\n" 
+"D2C3F3530343F48013C1F3130141F48011641B0B3C13D9\n" 
+"C90241EA5051B1FBF3FE03FB1E11A2FB0EE6DEEBC020B1\n" 
+"4101D28018594150EA010653D00B3CEBD80B34C4F12006\n" 
+"A14020FA06F6A0403143B1FBF3FE03FB1E11A2FB0EE6B0\n" 
+"EB0E00B14101D28018594102BF0146203D0020C1B3B1FA\n" 
+"81F39940C3F1200220FA02F211439840ED1A0A3509DBC0\n" 
+"0A40EA41504CEAF1940340508600D12101EB055170BD23\n" 
+"D070BDD5F10B05B5F120020DDAC5F120020300E84001FA\n" 
+"02F6E940934073F10043704151EB0C0170BD402D0DDC43\n" 
+"0821FA02F0C2F1200511FA05F6334373F1004370415CF1\n" 
+"000170BD6146002070BD53EA020E1ABFB442B54237E0B3\n" 
+"EB410F08BF8242CCD25B08B3FA83F504BFB2FA82F6AD19\n" 
+"0B3DB5F1200624BF02FA06F305E0AB40C5F1200622FA06\n" 
+"F63343AA40D5F1010524427FF46BAF31F00041B1FA81F4\n" 
+"04BFB0FA80F6A4190B3CB4F1200624BF00FA06F105E0A1\n" 
+"40C4F1200620FA06F63143A040D4F1010455E74FF40015\n" 
+"15EB410F2CBF6FF00041EB4218BF6FF00041BDE87040F2\n" 
+"F47FAA704700000000000000000000000072B6714601F0\n" 
+"0401042909D1EFF30980EFF30881EFF3098220E9F60FC4\n" 
+"F707BBEFF30880EFF30881EFF3098220E9F60FC4F7FDBA\n" 
+"72B6714601F00401042909D1EFF30980EFF30881EFF309\n" 
+"8220E9F60FC4F7F0BAEFF30880EFF30881EFF3098220E9\n" 
+"F60FC4F7E6BA72B6714601F00401042909D1EFF30980EF\n" 
+"F30881EFF3098220E9F60FC4F7D9BAEFF30880EFF30881\n" 
+"EFF3098220E9F60FC4F7CFBA72B6714601F00401042909\n" 
+"D1EFF30980EFF30881EFF3098220E9F60FC4F7C2BAEFF3\n" 
+"0880EFF30881EFF3098220E9F60FC4F7B8BA72B6714601\n" 
+"F0040109D1EFF30980EFF30881EFF3098220E9F60FC4F7\n" 
+"A9BAEFF30880EFF30881EFF3098220E9F60FC4F7A2BAFE\n" 
+"E750442042542025642025642025642025640000002DE9\n" 
+"F0412DED048B8CB006460F46904600A80FF2BC513022C5\n" 
+"F74EF8DFF864450A20206207206062A0620520E062DFF8\n" 
+"5805DFF85815CDE9000100A84FF03332DFF84C35C0E902\n" 
+"23DFF83C25DFF84435C0E904234FF03332DFF83C35C0E9\n" 
+"0623DFF83835C0E90823DFF83435C0E90A23DFF830550A\n" 
+"2129653168142291FBF2F1E965D8F80010022901D10521\n" 
+"23E03968102918D0B1F5807F06D0B1F5806F08D0B1F500\n" 
+"6F0AD012E04FF480712163002111E04FF4806121630221\n" 
+"0CE04FF400612163032107E010212163042103E04FF400\n" 
+"712163012100EBC100D0E90023DFF8C804DFF8C814D4F7\n" 
+"D9F941EC180B53EC182B0020DFF8B814D4F7D0F941EC10\n" 
+"0B85ED0A0B85ED080B53EC102BDFF8A404DFF8A414D4F7\n" 
+"C2F9C5E90C01202200212046D3F724FA9FED319B206AD4\n" 
+"F79EF953EC192BD4F7B2F953EC182BD4F7AEF9C4E90001\n" 
+"606AD4F791F953EC192BD4F7A5F953EC182BD4F7A1F9C4\n" 
+"E90201A06AD4F784F953EC192BD4F798F953EC182BD4F7\n" 
+"94F9C4E90401F19403D0538600E06AD4F777F953EC192B\n" 
+"D4F78BF953EC182BD4F787F9C4E906010020A865012068\n" 
+"66A86604F1340028660020287068650146C5E90E019FED\n" 
+"110B85ED100B85ED120B0CB0BDEC048BBDE8F081DFF8DC\n" 
+"030121416681669FED090B80ED100B80ED120B00210170\n" 
+"41650A460B46C0E90E2370470000000000000000E03F2D\n" 
+"431CEBE2361A3F2DE9F84F2DED068B8AB005464FF00008\n" 
+"9FEDDB9BB0EE498AF0EE698A04A81821C4F77CFEC1468D\n" 
+"ED010AF0EE601AF1EE611ACDED021AB1EE410A8DED030A\n" 
+"DA4C1E2201A9206EF5F74AFC2868022802D10220009001\n" 
+"E003200090206E616E00290CD0002800F085810088216D\n" 
+"8842C0F280814046606684ED0E9B7AE1A16E002939D01E\n" 
+"22216D09B2F5F752FC94ED149AF8EEC90A80EE200A10EE\n" 
+"100AD4F7D2F9C4E902011E2219EE101A09B2206EF5F75D\n" 
+"FC94ED149AF8EEC90A80EE200A10EE100AD4F7BFF9C4E9\n" 
+"04011E2219EE101A09B2206EF5F768FCD4ED140AF8EEE0\n" 
+"0A80EE200A10EE100AD4F7ACF9C4E906014046A06645E0\n" 
+"1E224146F5F709FC05461E22216D09B2206EF5F702FC06\n" 
+"4694ED140AB8EEC09A95ED000AD6ED000A30EE600A80EE\n" 
+"090A10EE100AD4F78BF9D4E90223E5F707FAC4E9020195\n" 
+"ED010AD6ED010A30EE600A80EE090A10EE100AD4F779F9\n" 
+"D4E90423E5F7F5F9C4E9040195ED020AD6ED020A30EE60\n" 
+"0A80EE090A10EE100AD4F767F9D4E90623E5F7E3F9C4E9\n" 
+"06011822414604A8D3F7F3F8454604AE40E01E22294609\n" 
+"B2206EF5F7B9FB07463868D4F74FF9D4E90223E1F789F9\n" 
+"41EC100B53EC102BD4F773F8DDE90423E5F7C1F9CDE904\n" 
+"017868D4F73CF9D4E90423E1F776F941EC100B53EC102B\n" 
+"D4F760F8D6E90223E5F7AEF9C6E90201B868D4F729F9D4\n" 
+"E90623E1F763F941EC100B53EC102BD4F74DF8D6E90423\n" 
+"E5F79BF9C6E904016D1C206D8542BBDBD4F729F841EC19\n" 
+"0BDDE9040153EC192BE1F709FACDE90401D6E9020153EC\n" 
+"192BE1F701FA41EC1A0B86ED02ABD6E9040153EC192BE1\n" 
+"F7F7F941EC190B86ED049BDDE9040153EC1A2BE5F76FF9\n" 
+"564A564BE1F743F807D294ED100B8DED040B94ED120B86\n" 
+"ED020B9DED040B84ED100B96ED02AB84ED12ABD4E90E01\n" 
+"4FF066324B4BD4F701F882468B46DDE9042351EC1A0BE5\n" 
+"F74BF902460B4651EC190BE1F7C3F9344A434BD3F7EFFF\n" 
+"02460B4650465946E5F73BF941EC100B84ED0E0B01223D\n" 
+"4BE1F723F806D890462078012802D1606D401C60654D46\n" 
+"0FE006EBC50090ED009B51EC180B53EC192BE0F7F7FF03\n" 
+"D2B0EE498AF1940360578600F0EE698A6D1C00988542EC\n" 
+"DBD4E9080153EC182BE1F700F802D9606D10280FDBE06D\n" 
+"A16D884204DA4846207060654FF001090020A06594ED0A\n" 
+"0B84ED080B12E0B8F1000F0FD1A06DE16D814209DA0121\n" 
+"2170494661654FF0020994ED0C0B84ED080B401CA06548\n" 
+"460AB0BDEC068BBDE8F28F00BF00000000000000007025\n" 
+"88009A9999999999C93F3333D33F9999E93F3333F33F33\n" 
+"3303403333E33F002588001F85EB51B89E234000001440\n" 
+"7B14AE47E17A843F2E431CEBE2362A3F6666EE3F9999A9\n" 
+"3F000034409A9999999999C93F333333333333E33F9A99\n" 
+"99999999E93F333333333333F33F333333333333034033\n" 
+"3333333333E33F47797243616C3D256400000041434343\n" 
+"616C3D25640000004D6F6265616D5F5374617274000000\n" 
+"0044554D50534554202564000050726F786920616C7265\n" 
+"616479203D20256420256400000050443A205365742564\n" 
+"202564000000004C542053502025642C20256400000000\n" 
+"4C54205750202564000000004C54205352202564000000\n" 
+"004C542053415220256400000050443A2050726F706572\n" 
+"747920534620256400005B415044525D204E545F535755\n" 
+"4E2025640000005B415044525D204E545F545755532025\n" 
+"640000005B415044525D204E545F424154434820256400\n" 
+"004C6962726172792072616E6765206973206F7665722C\n" 
+"20416464000050443A205343202564000000696E765F65\n" 
+"6E61626C655F696E5F7573655F6175746F5F63616C6962\n" 
+"726174696F6E0000433A5C50726F6A6563745C654D445C\n" 
+"48515C496E76656E53656E73655C6D706C5C616363656C\n" 
+"5F6175746F5F63616C2E63000000409C00000000803F00\n" 
+"0000005E836C3F15EFC33EF304353FF304353F15EFC33E\n" 
+"5E836C3F000000000000803F15EFC3BE5E836C3FF30435\n" 
+"BFF304353F5E836CBF15EFC33E000080BF000000005E83\n" 
+"6CBF15EFC3BEF30435BFF30435BF15EFC3BE5E836CBF00\n" 
+"000080000080BF15EFC33E5E836CBFF304353FF30435BF\n" 
+"5E836C3F15EFC3BE0000803F000000006DC47E3F36BDC8\n" 
+"3DBE147B3FC2C5473E0BFA743F31A0943E5E836C3F15EF\n" 
+"C33E98C5613FEA5AF13E31DB543FDA390E3F03E4453F99\n" 
+"67223FF304353FF304353F9967223F03E4453FDA390E3F\n" 
+"31DB543FEA5AF13E98C5613F15EFC33E5E836C3F31A094\n" 
+"3E0BFA743FC2C5473EBE147B3F36BDC83D6DC47E3F0000\n" 
+"00000000803F36BDC8BD6DC47E3FC2C547BEBE147B3F31\n" 
+"A094BE0BFA743F15EFC3BE5E836C3FEA5AF1BE98C5613F\n" 
+"DA390EBFF19403F05A860031DB543F996722BF03E4453F\n" 
+"F30435BFF304353F03E445BF9967223F31DB54BFDA390E\n" 
+"3F98C561BFEA5AF13E5E836CBF15EFC33E0BFA74BF31A0\n" 
+"943EBE147BBFC2C5473E6DC47EBF36BDC83D000080BF00\n" 
+"0000006DC47EBF36BDC8BDBE147BBFC2C547BE0BFA74BF\n" 
+"31A094BE5E836CBF15EFC3BE98C561BFEA5AF1BE31DB54\n" 
+"BFDA390EBF03E445BF996722BFF30435BFF30435BF9967\n" 
+"22BF03E445BFDA390EBF31DB54BFEA5AF1BE98C561BF15\n" 
+"EFC3BE5E836CBF31A094BE0BFA74BFC2C547BEBE147BBF\n" 
+"36BDC8BD6DC47EBF00000080000080BF36BDC83D6DC47E\n" 
+"BFC2C5473EBE147BBF31A0943E0BFA74BF15EFC33E5E83\n" 
+"6CBFEA5AF13E98C561BFDA390E3F31DB54BF9967223F03\n" 
+"E445BFF304353FF30435BF03E4453F996722BF31DB543F\n" 
+"DA390EBF98C5613FEA5AF1BE5E836C3F15EFC3BE0BFA74\n" 
+"3F31A094BEBE147B3FC2C547BE6DC47E3F36BDC8BD0800\n" 
+"4000180048001000400028005000200040003800580030\n" 
+"0048005800680048006000680070000800400010008000\n" 
+"1800C0002000000128004001300080013800C001500088\n" 
+"005800C8006000080168004801700088017800C8019800\n" 
+"D000A0001001A8005001B0009001B800D001E0001801E8\n" 
+"005801F0009801F800D801280160013001A0013801E001\n" 
+"7001A8017801E801B801F001000000000000803F36BDC8\n" 
+"3D6DC47E3FC2C5473EBE147B3F31A0943E0BFA743F15EF\n" 
+"C33E5E836C3FEA5AF13E98C5613FDA390E3F31DB543F99\n" 
+"67223F03E4453FF304353FF304353F03E4453F9967223F\n" 
+"31DB543FDA390E3F98C5613FEA5AF13E5E836C3F15EFC3\n" 
+"3E0BFA743F31A0943EBE147B3FC2C5473E6DC47E3F36BD\n" 
+"C83D0000803F000000006DC47E3F36BDC8BDBE147B3FC2\n" 
+"C547BE0BFA743F31A094BE5E836C3F15EFC3BE98C5613F\n" 
+"EA5AF1BE31DB543FDA390EBF03E4453F996722BFF30435\n" 
+"3FF30435BF9967223F03E445BFDA390E3F31DB54BFEA5A\n" 
+"F13E98C561BF15EFC33E5E836CBF31A0943E0BFA74BFC2\n" 
+"C5473EBE147BBF36BDC83D6DC47EBF000000000000803F\n" 
+"2FFB483D0FB17F3F36BDC83D6DC47E3F8340163EAC3A7D\n" 
+"3FC2C5473EBE147B3FCCCF783EF853783F31A0943E0BFA\n" 
+"743FD47CAC3E0809713F15EFC33E5E836C3F80E8DA3ED8\n" 
+"6B673FEA5AF13E98C5613F3D9C033F1A945B3FDA390E3F\n" 
+"31DB543FC07F183F029F4D3F9967223F03E4453F4AEB2B\n" 
+"3FF9AE3D3FF304353FF304353FF9AE3D3F4AEB2B3F03E4\n" 
+"453F9967223F029F4D3FC07F183F31DB543FDA390E3F1A\n" 
+"945B3FF19403805E86003D9C033F98C5613FEA5AF13ED8\n" 
+"6B673F80E8DA3E5E836C3F15EFC33E0809713FD47CAC3E\n" 
+"0BFA743F31A0943EF853783FCCCF783EBE147B3FC2C547\n" 
+"3EAC3A7D3F8340163E6DC47E3F36BDC83D0FB17F3F2FFB\n" 
+"483D0000803F000000000FB17F3F2FFB48BD6DC47E3F36\n" 
+"BDC8BDAC3A7D3F834016BEBE147B3FC2C547BEF853783F\n" 
+"CCCF78BE0BFA743F31A094BE0809713FD47CACBE5E836C\n" 
+"3F15EFC3BED86B673F80E8DABE98C5613FEA5AF1BE1A94\n" 
+"5B3F3D9C03BF31DB543FDA390EBF029F4D3FC07F18BF03\n" 
+"E4453F996722BFF9AE3D3F4AEB2BBFF304353FF30435BF\n" 
+"4AEB2B3FF9AE3DBF9967223F03E445BFC07F183F029F4D\n" 
+"BFDA390E3F31DB54BF3D9C033F1A945BBFEA5AF13E98C5\n" 
+"61BF80E8DA3ED86B67BF15EFC33E5E836CBFD47CAC3E08\n" 
+"0971BF31A0943E0BFA74BFCCCF783EF85378BFC2C5473E\n" 
+"BE147BBF8340163EAC3A7DBF36BDC83D6DC47EBF2FFB48\n" 
+"3D0FB17FBF000000000000000000000000000000000DFA\n" 
+"82005F9C8200A19C8200D39C8200F8FFFFFF0000000000\n" 
+"000000000000005D9C82009F9C8200D19C82007374696E\n" 
+"677261792E637070000000005374617274696E67205374\n" 
+"696E67726179496E69740A0000527063486F737452783A\n" 
+"3A5374617274282563290A00000042757273744D6F6465\n" 
+"2825632C2025632C2025752C202575290A00005F6F7453\n" 
+"74696E677261794374726C2E6F74436F72652E57726974\n" 
+"654461746120636F756C646E2774207772697465202564\n" 
+"20427965730A0000000068616C5F6932632E6300000000\n" 
+"000000000000005744820000000000F1FA820009B68600\n" 
+"F8FFFFFF000000000000000000000000D9B6860068616C\n" 
+"5F7472616E73706F72742E63707000000068616C5F7472\n" 
+"616E73706F72742E63707000000068616C5F7370696D2E\n" 
+"630000696E765F696E69745F696E76656E73656E73655F\n" 
+"61706900433A5C50726F6A6563745C654D445C48515C49\n" 
+"6E76656E53656E73655C6D706C5C696E76656E73656E73\n" 
+"655F6170692E630000004F4E4C59204C4943454E534544\n" 
+"20544F2053414D53554E4720464F522055534520574954\n" 
+"4820444154412046524F4D2049434D3230363035000000\n" 
+"00000000004D414345574E494400000000414243444546\n" 
+"4748494A4B4C4D4E4F505152535455565758595A616263\n" 
+"64656667000000253032782025632530376C7525632000\n" 
+"6C6F676765722E63707000004C6F67676572466C757368\n" 
+"65725461736B0000007270635F656E67696E652E680000\n" 
+"0000F19403106286000000000000000000000000000000\n" 
+"0000CF618200E3618200F36182008D6282009762820031\n" 
+"B686009F6282007472616E73706F72745F6D67722E6370\n" 
+"700000005472616E73706F727452785461736B456E7472\n" 
+"79000000005741524E494E473A20544C20547820666169\n" 
+"6C6564287265713D25642C2073656E743D2564290A0047\n" 
+"6E737352785461736B0000676E73735F636F72655F6861\n" 
+"6C2E637070000000476E7373436F726548616C3A3A2043\n" 
+"6C6F73652064657465637465640A000000446576696365\n" 
+"526561642072657475726E65642030210A000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000007FF582\n" 
+"008FF58200A7F58200C3F58200E7F58200F7F5820013F6\n" 
+"82003DF682006DF68200B7F68200000000000000000000\n" 
+"00000000000000D9F6820017F782000000000000000000\n" 
+"0000000000000000000000000000000085F78200000000\n" 
+"00000000000000000000000000000000008FF88200C7F8\n" 
+"8200FDF8820000000000000000000000000000000000A9\n" 
+"F98200E1F9820000000000000000000000000000000000\n" 
+"C5FA8200000000000000000000000000000000003BFB82\n" 
+"00000000000000000000000000000000002DF48200F8FF\n" 
+"FFFF000000000000000000000000DFB68600DFB68600DF\n" 
+"B68600DFB68600DFB68600DFB68600DFB68600DFB68600\n" 
+"DFB68600DFB68600000000000000000000000000000000\n" 
+"008DF78200F8FFFFFF000000000000000000000000DFB6\n" 
+"8600DFB68600DFB68600DFB68600DFB686000000000000\n" 
+"000000000000000000000033F98200F8FFFFFF00000000\n" 
+"0000000000000000DFB68600DFB6860000000000000000\n" 
+"0000000000000000000DFA8200F8FFFFFF000000000000\n" 
+"000000000000DFB68600DFB68600DFB686000000000000\n" 
+"0000000000000000000000F1FA8200F8FFFFFF00000000\n" 
+"0000000000000000DFB686000000000000000000000000\n" 
+"00000000006DFB8200F8FFFFFF00000000DFB68600DFB6\n" 
+"860000000000000000000000000000000000B5EA8200BF\n" 
+"EA8200C9EA8200D3EA8200DDEA8200E1EA8200EBEA8200\n" 
+"7270635F656E67696E652E6370700000000000001F0000\n" 
+"0000100B4020100B4040100B4060100B4080100B40A010\n" 
+"0B40C0100B4000110B40200000002300000000200B4020\n" 
+"200B4040200B4060200B4080200B40A0200B40C0200B40\n" 
+"00210B406D63755F7265712E6300000000040B40000000\n" 
+"00F19403A065860000040B400400000000040B40080000\n" 
+"0000040B400C00000000040B401000000000040B401400\n" 
+"000000040B401800000000040B401C00000004040B4000\n" 
+"00000004040B400400000004040B400800000004040B40\n" 
+"0C00000004040B401000000004040B401400000004040B\n" 
+"401800000004040B401C00000008040B40000000000804\n" 
+"0B400400000008040B400800000008040B400C00000008\n" 
+"040B401000000008040B401400000008040B4018000000\n" 
+"08040B401C0000000C040B40000000000C040B40040000\n" 
+"000C040B40080000000C040B400C0000000C040B401000\n" 
+"00000C040B40140000000C040B40180000000C040B401C\n" 
+"00000010040B400000000010040B400400000010040B40\n" 
+"0800000010040B400C0000006D73735F6170692E630000\n" 
+"00706D2E63000000007379735F636C6F636B2E63005000\n" 
+"0B407000000050000B400007000050000B400070000050\n" 
+"000B400100000050000B400000030050000B4000000030\n" 
+"54000B400000300054000B40000003005C000B40000000\n" 
+"3058000B400700000054000B40000000705C000B400300\n" 
+"00005C000B40300000005C000B400003000060000B4000\n" 
+"0000305C000B40030000005C000B40300000005C000B40\n" 
+"0003000060000B400000010050000B400000100060000B\n" 
+"400010000050000B400000100060000B40001000005800\n" 
+"0B407000000058000B400007000058000B400070000054\n" 
+"000B406000000054000B400060000060000B4000060000\n" 
+"58000B400000007060000B400000600060000B40000060\n" 
+"0040000BC0FFFFFFFF40000B40A002000044000BC0FFFF\n" 
+"FFFF44000B400000100040000BC08801000040000B4001\n" 
+"00030048000BC0FFFFEFFE48000B400000000044000BC0\n" 
+"FFFFFF7F44000B400000000054000BC0F8F8FCFF54000B\n" 
+"400000000060000BC08FFFFEFF60000B40000000005800\n" 
+"0BC0FFFF88FF58000B400000350018000BC0FFFFFFFF18\n" 
+"000B403F00000010000BC0FFFFFFFF10000B4003000000\n" 
+"24000BC0FFFF00FF24000B400000180040000BC0FFFFFF\n" 
+"FF40000B408801000044000BC0FFFFFBFF44000B400000\n" 
+"000040000BC0FFFEFFFF40000B400000000040000BC0FF\n" 
+"FFFFFF40000B408801000044000BC0FFFFFFFF44000B40\n" 
+"0000040040000BC0F7FFFFFF40000B400000000040000B\n" 
+"C0FFFFFFFF40000B40A002000044000BC0FFFFEFFF4400\n" 
+"0B400000000040000BC0FFFDFFFF40000B400000000040\n" 
+"000BC0FFFFFFFF40000B40A002000044000BC0FFFFFFFF\n" 
+"F194033069860044000B400000100040000BC0DFFFFFFF\n" 
+"40000B400000000048000BC0FFF8FFFF48000B40001000\n" 
+"0044000BC0F3FFFFFF44000B400C00000040000BC0FFFF\n" 
+"FFFF40000B400200000044000BC0FFFFFFFF44000B4000\n" 
+"00010044000BC0FFFFFEFF44000B400000000040000BC0\n" 
+"FDFFFFFF40000B400000000048000BC0FFEFFFFF48000B\n" 
+"400000000048000BC0F8FFFFFF48000B40100000004400\n" 
+"0BC0FCFFFFFF44000B400300000018000BC0FFFFFFFF18\n" 
+"000B400100000044000BC0FCFFFFFF44000B4001000000\n" 
+"18000BC0FFFFFFFF18000B400100000044000BC0FCFFFF\n" 
+"FF44000B400200000018000BC0FEFFFFFF18000B400000\n" 
+"00007574696C5F6D61696E2E63007370696D5F64726976\n" 
+"65722E6300000000000040000000000000000000000000\n" 
+"696E765F656E61626C655F666173745F6E6F6D6F740000\n" 
+"00433A5C50726F6A6563745C654D445C48515C496E7665\n" 
+"6E53656E73655C6D706C5C666173745F6E6F5F6D6F7469\n" 
+"6F6E2E63000000696E765F67656E65726174655F6E6F5F\n" 
+"6779726F5F667573696F6E00433A5C50726F6A6563745C\n" 
+"654D445C48515C496E76656E53656E73655C6D706C5C6E\n" 
+"6F5F6779726F5F667573696F6E2E63000000696E765F65\n" 
+"6E61626C655F6E6F5F6779726F5F667573696F6E000000\n" 
+"696E765F696E69745F6D706C00000000433A5C50726F6A\n" 
+"6563745C654D445C48515C496E76656E53656E73655C6D\n" 
+"6C6C6974655C6D706C2E63000000696E765F7374617274\n" 
+"5F6D706C0000004F535F4572726F722E6300007379735F\n" 
+"657863657074696F6E2E6300004D9AD77934E3AEF2BF68\n" 
+"258BC6115CA9E4337ED09D4A075B16C18C226FB8F51F52\n" 
+"85C8662BFCB1EDA0773A94D90E43B6FB2C61CF82551844\n" 
+"09DE933D70A7EA3E73A4E9470ADD90CC81561BB5F82F62\n" 
+"97DA0D40EEA374396528FFB21C5186CB216CBBF65815C2\n" 
+"8FD39E4904AAE7307D88C5125FF1BC6B267A37E0AD034E\n" 
+"99D47C31E6AB05489FD28EC31459F7BA6D20D5984F02AC\n" 
+"E1367B276ABDF05E13C489632EF9B41A5780CD91DC0B46\n" 
+"E8A5723FCA87501DB3FE29643875A2EF410CDB96420FD8\n" 
+"953B76A1ECB0FD2A67C984531EEBA6713C92DF08451954\n" 
+"83CE602DFAB75D10C78A2469BEF3AFE23578D69B4C01F4\n" 
+"B96E238DC0175A064B9CD17F32E5A80000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000F1\n" 
+"9403C06C86000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"A570830000000000BF70830000000000E9708300000000\n" 
+"002F718300000000000000000000000000000000007371\n" 
+"8300000000008D71830000000000B571830000000000FD\n" 
+"7183000000000000000000000000000000000000000000\n" 
+"00000000000000007472616E73706F72745F6C61796572\n" 
+"2E63707000646C6973742E630068775F74696D65722E63\n" 
+"000000010800020900030A00040B01010C01020D01030E\n" 
+"01040F0201100202110203120204130301140302150303\n" 
+"16030417506D6148616E6C6465547843616C6C6261636B\n" 
+"000A0A2121212121202020202025733A2063625F706172\n" 
+"616D3D307825582C207374617475733D307825582C2078\n" 
+"6665725F6C656E3D30782558202020202021212121210A\n" 
+"0A000000506D6148616E6C6465527843616C6C6261636B\n" 
+"00706D615F6472697665722E6300000000636D642E6300\n" 
+"0000756172745F6472697665722E6300000029CF8200CB\n" 
+"D2820003D382003FD482008BD48200CFD4820041D58200\n" 
+"9BD5820045D68200004D9AD77934E3AEF2BF68258BC611\n" 
+"5CA9E4337ED09D4A075B16C18C226FB8F51F5285C8662B\n" 
+"FCB1EDA0773A94D90E43B6FB2C61CF8255184409DE933D\n" 
+"70A7EA3E73A4E9470ADD90CC81561BB5F82F6297DA0D40\n" 
+"EEA374396528FFB21C5186CB216CBBF65815C28FD39E49\n" 
+"04AAE7307D88C5125FF1BC6B267A37E0AD034E99D47C31\n" 
+"E6AB05489FD28EC31459F7BA6D20D5984F02ACE1367B27\n" 
+"6ABDF05E13C489632EF9B41A5780CD91DC0B46E8A5723F\n" 
+"CA87501DB3FE29643875A2EF410CDB96420FD8953B76A1\n" 
+"ECB0FD2A67C984531EEBA6713C92DF0845195483CE602D\n" 
+"FAB75D10C78A2469BEF3AFE23578D69B4C01F4B96E238D\n" 
+"C0175A064B9CD17F32E5A868616C5F74696D65722E6300\n" 
+"506D6148616E646C65496E74720000000A0A2D2D2D2D2D\n" 
+"2020202020504D415F415353455254203A2046696C6520\n" 
+"2573203A2046756E6374696F6E2025732829203A204C69\n" 
+"6E652023202025642020202D2D2D2D2D0A0A00706D615F\n" 
+"636F6D6D6F6E5F6C69622E6300000000506D6147657446\n" 
+"6400000000506D61496E697443686E6C000A2D2D2D2020\n" 
+"2025732829203A204552524F523A2073746174653D2564\n" 
+"2C2020706D615F63625F7074722D3E696E666F2E737461\n" 
+"74653D25642C20786665725F636F6D706C6574653D2564\n" 
+"2C2072656D61696E5F6C656E3D307825582C207265F194\n" 
+"0350708600715F6C656E3D307825582020202D2D2D0A0A\n" 
+"0000506D61436865636B52785374617475730000000050\n" 
+"6D61476574526376644461746100000A2A2A2A20202025\n" 
+"732829203A20626173655F616464723D30782558203A20\n" 
+"777261705F6269745F657175616C3D25642C206375725F\n" 
+"73775F6F66667365743D307825582C206375725F68775F\n" 
+"6F66667365743D307825582C20726376645F6C656E3D30\n" 
+"7825582C206E6578745F73775F7074723D307825582C20\n" 
+"707265765F68775F7074723D307825582020202A2A2A0A\n" 
+"0A00706D615F6C69622E630000000A2D2D2D2020204552\n" 
+"524F523A20746F74616C5F7866657265645F6C656E3D25\n" 
+"64206E6F7420657175616C20746F207265715F6C656E3D\n" 
+"307825582020202D2D2D0A0A00506D6147657444617461\n" 
+"00000A0A2D2D2D20202025733A2072633D2569203A2046\n" 
+"61696C656420746F20636F6D706C65746520504D412052\n" 
+"7820586665723A20706D615F66643D25642C2061646472\n" 
+"3D307825582C206C656E3D307825580A000A0A2B2B2B20\n" 
+"202025733A2072633D2569203A20205375636365737366\n" 
+"756C6C7920436F6D706C6574656420504D412052782058\n" 
+"6665723A20706D615F66643D25642C20616464723D3078\n" 
+"25582C206C656E3D307825580A00000000696E69745F6D\n" 
+"61696E2E63004C6F775072696F726974795461736B0000\n" 
+"00000000000000000000000000000033F98200BBEC8200\n" 
+"E3B68600F8FFFFFF000000000000000000000000B9EC82\n" 
+"00E5B68600000000000000000000000000000000002DF4\n" 
+"820013ED82004BED820083ED82008BED820093ED820097\n" 
+"ED82009FED8200A3ED8200C9ED8200DFED8200F8FFFFFF\n" 
+"00000000000000000000000011ED820049ED820081ED82\n" 
+"0089ED820091ED820095ED82009DED8200A1ED8200C7ED\n" 
+"8200DDED8200000000000000000000000000000000008D\n" 
+"F7820005EE82000FEE82001BEE82006DEE8200B1EE8200\n" 
+"F8FFFFFF00000000000000000000000003EE82000DEE82\n" 
+"0019EE82006BEE8200AFEE820000000000000000000000\n" 
+"0000000000006DFB8200FDEE820021EF8200F8FFFFFF00\n" 
+"000000FBEE82001FEF8200686F73745F636F6D5F72782E\n" 
+"637070005270634C6F6767696E67526571756573743A3A\n" 
+"5365744C6F67676572436F6E6669672873697A653D256C\n" 
+"75202D2069676E6F7265642C207468726573686F6C643D\n" 
+"2575202D2069676E6F726564290A005270634C6F676769\n" 
+"6E67526571756573743A3A5365744C6F6767696EF19403\n" 
+"E073860067436F6E666967286F75747075743D2563202D\n" 
+"2069676E6F7265642C207072696F3D253032782C206661\n" 
+"633D25303878290A00006175746F5F626175642E630023\n" 
+"BE820045BE82006DBE82000000000007BF82004572726F\n" 
+"72202D20556E6B6E6F776E20636F6D6D616E640A000000\n" 
+"006932636D2E6300004932636D57616974446F6E653A20\n" 
+"74696D6564206F75740A000000004932532D4D434C4B00\n" 
+"000000A7DE82005FDF8200A3E082002FE08200C3DF8200\n" 
+"00000000000000003FE382008BE382007373695F647269\n" 
+"7665722E6300000000A9C58200F7C58200FBC68200B1C6\n" 
+"82006FC682000000000000000000C3C782002DC8820010\n" 
+"B5DFF8D44520620C220021201DD1F76EF904F124002061\n" 
+"04F13C00606104F15400A06104F16C00E06100202070FF\n" 
+"206070A07010BD00002DE9F0472DED068B86B00C464FF0\n" 
+"000ADFF88C55016869604168A9608068E860D046404601\n" 
+"90049003900290052205F10C01286900F045FA052205F1\n" 
+"0801686900F03FFA0522291DA86900F03AFA052301AA03\n" 
+"21286900F049FAB0EE408A052304AA0321686900F041FA\n" 
+"F0EE408A052303AA0321A86900F039FAB0EE409A052203\n" 
+"21286900F06EFAF0EE080AC0EE209A95ED02AAD5ED01AA\n" 
+"F5EE40AAF1EE10FA0FD1B5EE40AAF1EE10FA0AD195ED03\n" 
+"0AB5EE400AF1EE10FA03D100F0FEF94FF00108564695F8\n" 
+"019095ED030A6AEEAA0A4AEE0A0A40EE000A10EE900AD2\n" 
+"F754F941EC100BE3F744FA51EC100BD2F774F900900522\n" 
+"00A9E86900F0E3F99DED000ADFEDA20AB4EE600AF1EE10\n" 
+"FA7DD4DFEDA00AB4EE600AF1EE10FA76DA052302AA0321\n" 
+"E86900F0E2F9F0EE0C0AB4EE600AF1EE10FA69D59FED97\n" 
+"0AB4EE408AF1EE10FA62D59FED940AF4EE409AF1EE10FA\n" 
+"06D59FED920AF4EE409AF1EE10FA51DA19EE900AD2F710\n" 
+"F921F000413246DFF83434DFF761F811D2B0EE000AF4EE\n" 
+"408AF1EE10FA17D4F4EE408AF1EE10FA3CDAB4EE409AF1\n" 
+"EE10FA0EDB36E0052301AA1946286900F0A2F9F7EE000A\n" 
+"B4EE600AF1EE10FA29D5B04695ED030ADDED000A80EE20\n" 
+"0A10EE100AD2F7DEF841EC100BF0F78CF953EC102B4FF0\n" 
+"0040DFF8C813D2F700F841EC100B00F022FA51EC100BDF\n" 
+"F7DCF80746B8F1000F5AD1E6F7D4FD3D280DDB6878FF28\n" 
+"03D100F056F9304674E0FF2068704FF0FF30207001206D\n" 
+"E0A868D2F7B1F841EC110BB0EE418AF0EE618A95ED010A\n" 
+"B1EE400A10EE100AD2F7A3F841EC100BB0EE481AF0EE68\n" 
+"1A00F085FA53EC102B4FF00040D449D1F7C2FFF1940370\n" 
+"77860041EC100B00F0E4F951EC100BDFF79EF8060001D5\n" 
+"06F5B47606F12D005A2190FBF1F8B8F1040F00D1D04638\n" 
+"4600F03BF8002806D03A463146404600F039F8002802D1\n" 
+"00F00AF904E0A878404501D085F80280A878484502D1B9\n" 
+"F1FF0F1DD195F8201011F0060F01D0012604E03A463146\n" 
+"00F066F806463846E6F766FD3D280CDA002E0AD0A87869\n" 
+"78814206D0687020704FF0010AFF2800D02870504606B0\n" 
+"BDEC068BBDE8F0873C3079288041C00F704718B4A34C23\n" 
+"7894F8204014F0060F01D018BC3DE02FD4984208D05A1C\n" 
+"541002EB9474A410A2EB840290420ED15A224243283A00\n" 
+"2807D1B1F59D7F06DD02F5B472914202DA15E0914213DB\n" 
+"984208D0DA1C531002EB93739B10A2EB830290420AD15A\n" 
+"2242432832002801D12E2903DA8A4201DA002000E00120\n" 
+"12BC7047DD0CFB40A7493C416766E63F3E1B3041D7B409\n" 
+"412DE9F04391B004460D4691467C4E96F8008000274846\n" 
+"E6F7F7FC002804D44846E6F7F2FC1E2822DB4846E6F7ED\n" 
+"FC1E2806DB4846E6F7E8FC282801DA012716E04846E6F7\n" 
+"E1FC282806DB4846E6F7DCFC322801DA02270AE04846E6\n" 
+"F7D5FC32280ADB4846E6F7D0FC3D2805DA0327B8F1000F\n" 
+"45D4002C01D5002042E0444509D008F10100411000EB91\n" 
+"718910A0EB8100844217D100A80FF278114022C2F7E0FC\n" 
+"3801002C00A908D141588D420ADA00A940184068A84205\n" 
+"DA2BE0401850F82400854226DB444509D008F103004110\n" 
+"00EB91718910A0EB8100844211D100A80FF270114022C2\n" 
+"F7BCFC3801002C00A90BD14158A94204DA00A94018C068\n" 
+"854208DB012011B0BDE8F083401850F82400A842F6DAFF\n" 
+"20B0700020F3E73948FF21817070470388934201D30023\n" 
+"038003885B1C03809BB2934201D300220280028800EB82\n" 
+"00096841600120704700002DE9F8432DED028B04460D46\n" 
+"16461F469FED278A4FF00008B4F9009000EE105AF8EEC0\n" 
+"8A3A4600F027F880EE280A86ED000A05E0A7F101090FFA\n" 
+"89F908F101080FFA88F8A84511DA04EB890090ED010AD6\n" 
+"ED000A30EE600A00EE008AB9F1010FE8DBA9F101090FFA\n" 
+"89F9E7E788EE280ABDEC028BBDE8F18330B49FED0D0A00\n" 
+"23B0F900400EE024B2250006D400EB8505D5ED010A30EE\n" 
+"200A641E24B2002C00D5541E5B1C1BB28B42EDDB30BC70\n" 
+"470000000000001058880000001040DCA54C40DCA54CC0\n" 
+"4A0100003C00000096000000F00000004F010000410000\n" 
+"009B000000F50000005401000046000000A0000000FA00\n" 
+"00005E01000050000000AA00000004010000F19403007B\n" 
+"86001E00000078000000D20000002C0100001900000073\n" 
+"000000CD00000027010000140000006E000000C8000000\n" 
+"220100000A00000064000000BE0000001801000000B583\n" 
+"B001218DED000B00A8FDF7DEF9401E012811D9002100A8\n" 
+"FDF7D7F960B10198DDE90023002847BF00200549002005\n" 
+"49E2F711FFCDE900019DED000B03B000BD00000000F0BF\n" 
+"0000F03F38B50FB4DDE9020100F074F80546DDE9000100\n" 
+"F06FF8012DB8BF012830DA0198002807D5DDE9000181F0\n" 
+"0041CDE90001082400E000240398002807D5DDE9020181\n" 
+"F00041CDE9020184F00604DDE90201DDE90023DEF7B2FD\n" 
+"04D2DEF755FF41EC100B29E0002D08D5DDE90001DDE902\n" 
+"23DEF74AFF41EC100B20E09FED150B1DE0022808BFDDE9\n" 
+"000120D0022D08BFDDE902011BD085420CBF9FED0F0B9F\n" 
+"ED0C0B019900294CBF082400240399002948BF84F00604\n" 
+"012801D184F00204224605B0BDE8304051EC100BF9F7A4\n" 
+"BD05B030BD0000000000000000000000000000F03F80B5\n" 
+"53EC112B51EC100BFFF789FF41EC100B01BD03B4DDE900\n" 
+"23C3F30A5140F2FF72914206D001B10CE0190350EA1130\n" 
+"06D00BE0190350EA113014BF0220012002B070474FF0FF\n" 
+"3002B070476FF0010002B07047DFF81404002101604160\n" 
+"8160C160016141618161C161016241628162C162084602\n" 
+"4610E0DFF8F41341F8202001EB80018A620A65DFF8E813\n" 
+"41F8202001EB80018A620A65401C0A28ECDB70472DE9F8\n" 
+"432DED028B4FF00009DFF8BC4320680A2806DB0A382060\n" 
+"6068002801D1012060602568DFF8A86306EB850080ED00\n" 
+"0A06EB8507F0EE601AC7ED0A1A87ED141A606828430DD1\n" 
+"691C2160DFF884034A4640F8212000EB81001146816201\n" 
+"650846A6E1691E00D50A31DFF8680306EB850292ED000A\n" 
+"06EB8102D2ED000A30EE600A00EB850282ED000A00EB85\n" 
+"0806EB810197ED0A0AD1ED0A0A30EE600A88ED0A0A97ED\n" 
+"140AD1ED140A30EE600A88ED140AA168002952D150F825\n" 
+"00D1F766FD21F000414FF03332DFF80C33DEF7B6FC3AD2\n" 
+"D8F82800D1F759FD21F000414FF03332BD4BDEF7AAFC2E\n" 
+"D2D8F85000D1F74DFD21F000414A46B84BDEF79FFC23D2\n" 
+"06EB850090ED000ADFEDAC0AB4EE600AF1EE10FA18DBB8\n" 
+"6AD1F738FD21F000414A464FF08043DEF789FC0DD2386D\n" 
+"D1F72DFD21F000414A46A94BDEF77FFC03D2E068401CE0\n" 
+"6001E04846E060E0680428C0F2FA800120A06048462062\n" 
+"F4E0012940F0A380216A012901DB491C21622169002924\n" 
+"D150F8250000EE100ADFED900AB4EE600AF19403907E86\n" 
+"00F1EE10FA09DB4FF0FF302061A069401CA061206A401C\n" 
+"206236E0DFED890AB4EE600AF1EE10FA2FD501202061A0\n" 
+"69401CA061206A401C206226E0012911D100EB850090ED\n" 
+"000ADFED7D0AB4EE600AF1EE10FA19DB4FF0FF302061A0\n" 
+"69401CA06112E011F1010F0FD100EB850090ED000ADFED\n" 
+"730AB4EE600AF1EE10FA04D501202061A069401CA06160\n" 
+"69002827D198ED140AF7EE000AB4EE600AF1EE10FA0CDB\n" 
+"4FF0FF306061E069401CE061206A002840F08880012020\n" 
+"6284E0DFED620AB4EE600AF1EE10FA7DD501206061E069\n" 
+"401CE061206A002875D10120206272E001280FD198ED14\n" 
+"0AF7EE000AB4EE600AF1EE10FA67DB4FF0FF306061E069\n" 
+"401CE06160E010F1010F5DD198ED140ADFED4D0AB4EE60\n" 
+"0AF1EE10FA54D501206061E069401CE0614EE002294CD1\n" 
+"216A481C206294ED090A06EB8501D1ED000A30EE200A84\n" 
+"ED090AD4ED0A0A97ED0A1A70EE810AC4ED0A0A94ED0B1A\n" 
+"D7ED141A31EE211A84ED0B1A0A282DD1F2EE041A80EE21\n" 
+"0AC0EEA10A81EE218AB2EE081AB4EE410AF1EE10FA1ED5\n" 
+"9FED2C1AB4EE410AF1EE10FA17DB10EE900AD1F736FC21\n" 
+"F000414A462F4BDEF788FB0CD218EE100AD1F72BFC21F0\n" 
+"00414A462A4BDEF77DFB01D24FF00109216AB42923DAA0\n" 
+"69042802DAE269042A1DDB03281BDB1F290ADB00202062\n" 
+"A061E0610220A06000206062A062E06218E00FF27000C8\n" 
+"F796F9A069042801DB801EA061E06904280CDB801EE061\n" 
+"09E0B42907DB0020A060E06020616061A061E061206220\n" 
+"68401C20604846BDEC028BBDE8F28300000100A0409A99\n" 
+"193F999919BFFEFF7FBF8C5988009C5888001459880033\n" 
+"33E33F0000F03F00001440000008400000184044545020\n" 
+"6661696C202564007D480021017041608160704738B52D\n" 
+"ED068B0546002495ED020AD5ED010A95ED001A21EE011A\n" 
+"00EEA01A00EE001A11EE100AD1F7AFFB41EC100BE2F79F\n" 
+"FC51EC100BD1F7CFFB09EE100A9FED698B95ED000A80EE\n" 
+"090A10EE100AD1F79BFB41EC100BEFF749FC53EC102B51\n" 
+"EC180BD1F7BFFAD1F7B7FB09EE900A95ED010A80EE090A\n" 
+"10EE100AD1F785FB41EC100BEFF733FC53EC102B51EC18\n" 
+"0BD1F7A9FAD1F7A1FB0AEE100A95ED020A80EE090A10EE\n" 
+"100AD1F76FFB41EC100BEFF71DFC53EC102B51EC180BD1\n" 
+"F793FAD1F78BFB08EE100A494D287800282BD119EE900A\n" 
+"D1F759FB21F000412246454BDEF7ABFA17D21AEE100AD1\n" 
+"F74EFB21F000412246404BDEF7A0FA0CD29FED3D0AB4EE\n" 
+"408AF1EE10FA05DB6868401C68601046F1940320828600\n" 
+"A86004E0A868401CA860104668606868052853DB27E002\n" 
+"282BD119EE900AD1F72BFB21F0004122462E4BDEF77DFA\n" 
+"15D21AEE100AD1F720FB21F000412246294BDEF772FA0A\n" 
+"D29FED260AB4EE408AF1EE10FA03DB6868401C686001E0\n" 
+"104668606868052832DB012420462870104668602CE001\n" 
+"282AD119EE900AD1F7FDFA21F000410122174BDEF767FA\n" 
+"11D91AEE100AD1F7F2FA21F000410122124BDEF75CFA06\n" 
+"D99FED110AB4EE408AF1EE10FA03D5A868401CA86001E0\n" 
+"2046A860A868052804DB0224204628700020A8602046BD\n" 
+"EC068B32BD46DF617EDCA54C40BC5988000100A0420000\n" 
+"14400000A04210B586B000F05AF912E000A80021016002\n" 
+"220DF10701CCF765FB02220DF105010DF10200CCF75EFB\n" 
+"042100A8D9F7C7FE01A9664800F05CF99DF8070010F003\n" 
+"0403D0022C01D0E0D3F2E7BDF80500011DDDF80D00D9F7\n" 
+"B3FE022C01D1CAF7ADFBDDF80D000028E3D0CCF72AFB00\n" 
+"20CDF80D00DDE7F8B50C461646554D2878012806D1A88A\n" 
+"864203D000202870A882E8822878002873D1092E04D26C\n" 
+"210FF23C10D0F7D9F909222146281DCCF71BFB0146093E\n" 
+"E87910F0030002D0012816D057E000202870A882E88229\n" 
+"1D424800F030F9002805D00FF27810BDE8F240D1F760B9\n" 
+"3D490820BDE8F440C6F754BFB5F80500A8820020E882B5\n" 
+"F8050000281ED001202870324800F014F9B5F80500001D\n" 
+"CCF7BFFAC5F80D000FF24010C046C046D5F80D00001DA8\n" 
+"61002E08D00746324604F10901CCF7D7FAEE82F019A861\n" 
+"E88AA98A884241D100202870A882E882291D214800F0EE\n" 
+"F8002805D00FF2F400BDE8F240D1F71EB91C490820BDE8\n" 
+"F440C6F712BFB0210FF26800BDE8F440D0F76AB9002E08\n" 
+"D0AF693846CCF7ADFAE88A3018E882F019A861E88AA98A\n" 
+"884215D100202870A882E882291D0B4800F0C2F8002805\n" 
+"D00FF29C00BDE8F240D1F7F2B806490820BDE8F440C6F7\n" 
+"E6BEF1BD0000388A8800D4618800208A8800509E880044\n" 
+"3A5C4D43555C53454E534F525F6B616C6D6961615F5452\n" 
+"454C54455F4252434D5F4E6F746550435C4D43555C5072\n" 
+"6F6A6563745C5353505F53656E736F724875625C53485F\n" 
+"4F454D5C42434D343737585C7372635C4D43555F42434D\n" 
+"343737585F7472616E73706F72745F6C617965722E6300\n" 
+"5075744D61696C00416C6C6F636174654D61696C000000\n" 
+"000168E1EE101A7047A0EC108BA0EC100BF1EE101A80E8\n" 
+"020070470000B0EC108BB0EC100B90E80200E1EE101A70\n" 
+"4700001149096811F4700F1CBF8438F19403B0858600FF\n" 
+"F7E4BF70470D49096811F4700F1CBF8438FFF7E5BF7047\n" 
+"00B581B00FF22400BFF786FB0548006810F4700F04D001\n" 
+"B05DF804EB0248C5E701B000BD88ED00E03CEF00E0A585\n" 
+"8600B785860030B504460D480D460178491C81B00170BF\n" 
+"F7F8F8A06840B940212046CEF71EFEBFF7F0F8A0680028\n" 
+"F6D029462046DDF730FD01B0BDE83040BFF725BA1C2788\n" 
+"00F0B50E4F05463878401C81B00E4601243870BFF7D7F8\n" 
+"A868E968884204D231462846DDF7F1FC0024787808B9BF\n" 
+"F7C4F8BFF709FA204601B0F0BD00BF1C27880000200246\n" 
+"09E0D04941F8202001EB8001C1F8F020C1F8E021401C3C\n" 
+"28F3DBCB481146016041608160704700002DE9F84F2DED\n" 
+"0A8B86B000208DF80800C34C20683C2806DB3C38206060\n" 
+"68002801D1012060602568DFF8F09209EB850080ED000A\n" 
+"09EB8506F0EE601AC6ED3C1A86ED781A59F82500D1F7D2\n" 
+"F821F000410022B64BDEF724F80AD359F82500D1F7C7F8\n" 
+"21F000410122AE4BDEF731F802D8002049F82500D6F8F0\n" 
+"00D1F7B9F821F000410022A84BDEF70BF80AD3D6F8F000\n" 
+"D1F7AEF821F000410122A54BDEF718F802D80020C6F8F0\n" 
+"00D6F8E001D1F7A0F821F0004100229D4BDDF7F2FF0AD3\n" 
+"D6F8E001D1F795F821F000410122984BDDF7FFFF02D800\n" 
+"20C6F8E00159F82500D1F787F821F0004100221346F3F7\n" 
+"57F819D1D6F8F000D1F77CF821F0004100221346F3F74C\n" 
+"F80ED1D6F8E001D1F771F821F0004100221346F3F741F8\n" 
+"03D1A068401CA06001E01046A060A0680528C0F2ED809F\n" 
+"ED808A9FED7F9ADFED7E8A1646104604900390DFED7B9A\n" 
+"9FED7ABA00E0761C372E80F289806768002F01D1B24602\n" 
+"E0701900F1010ABAF13C0F01DBAAF13C0A59F82A0000EE\n" 
+"100AF4EE409AF1EE10FA02D5F0EE409A049609EB8A0898\n" 
+"ED780AB4EE40BAF1EE10FA02D5B0EE40BA03969FED65AB\n" 
+"9FED66CB18EE100AD1F720F8CDE9000159F82A00D1F71A\n" 
+"F853EC1C2BD0F744FF53EC1A2BD0F740FF00225E4BDEF7\n" 
+"0CF9DDE90023E2F78AF8D1F730F808EE100A19EE100AD1\n" 
+"F702F882468B46D8F8F000D0F7FCFF53EC1C2BD0F726FF\n" 
+"53EC1A2BD0F722FF00224F4BDEF7EEF852465B46E2F76C\n" 
+"F8D1F712F809EE100A18EE900AD0F7E4FF82468B46D8F8\n" 
+"E001D0F7DEFF53EC1C2BD0F708FF53EC1A2BD0F704FF00\n" 
+"22404BDEF7D0F852465B46E2F74EF8D0F7F4FF08EE900A\n" 
+"002F7FF476AFAE427FF473AF18EE100AD0F7C0FF41EC1A\n" 
+"0B21F000410122374BDDF728FF43D851EC1A0B21F00041\n" 
+"00222F4BDDF707FF3AD219EE100AF1940340898600D0F7\n" 
+"AAFF41EC190B21F0004101222A4BDDF712FF2DD851EC19\n" 
+"0B21F000410022264BDDF7F1FE24D218EE900AD0F794FF\n" 
+"41EC190B21F000410122214BDDF7FCFE17D851EC190B21\n" 
+"F0004100221D4BDDF7DBFE0ED203980499401AE5F78DFC\n" 
+"142807DAB5EE408AF1EE10FA02DD01208DF80800681C20\n" 
+"609DF8080006B0BDEC0A8BBDE8F28FD46F8800A4728800\n" 
+"000022400000E03F0000F03F0000244000000000000000\n" 
+"0000003440E6C1631ADCA54C4000408F4000005E400000\n" 
+"344000805B4000003E40004060409748002141608160C1\n" 
+"60016141618161017001214170704770B52DED068BF0EE\n" 
+"608AB0EE419A00248D4D2878012800F010816878002852\n" 
+"D12E69002E00F0A880D5ED010A30EE600A10EE100AD0F7\n" 
+"20FF21F00041D0F744FF09EE900AB0EE680AD5ED020A30\n" 
+"EE600A10EE100AD0F710FF21F00041D0F734FF0AEE100A\n" 
+"B0EE490AD5ED030A30EE600A10EE100AD0F700FF21F000\n" 
+"41D0F724FF00EE100AF0EE040AF4EE609AF1EE10FA16D5\n" 
+"B4EE60AAF1EE10FA11D5B4EE600AF1EE10FA0CD5701C28\n" 
+"610728C0F2C58020466860A860E860286101206870BCE0\n" 
+"20462861B9E0686900284CD12869002852D0D5ED010A30\n" 
+"EE600A10EE100AD0F7CBFE21F00041D0F7EFFE09EE900A\n" 
+"B0EE680AD5ED020A30EE600A10EE100AD0F7BBFE21F000\n" 
+"41D0F7DFFE0AEE100AB0EE490AD5ED030A30EE600A10EE\n" 
+"100AD0F7ABFE21F00041D0F7CFFE00EE100A2046DFED44\n" 
+"0AF4EE609AF1EE10FA00DB0120B4EE60AAF1EE10FA00DB\n" 
+"401CB4EE600AF1EE10FA00DB401C02286EDB0120686120\n" 
+"46286169E0012867D12E69322E02DA701C286161E00DD1\n" 
+"85ED010AB0EE680A85ED020AB0EE490A85ED030A286940\n" 
+"1C286152E0AE69322E4ADAD5ED010A30EE600A10EE100A\n" 
+"D0F767FE21F00041D0F78BFE09EE900AB0EE680AD5ED02\n" 
+"0A30EE600A10EE100AD0F757FE21F00041D0F77BFE0AEE\n" 
+"100AB0EE490AD5ED030A30EE600A10EE100AD0F747FE21\n" 
+"F00041D0F76BFE00EE100A2046711CA961DFED110AF4EE\n" 
+"609AF1EE10FA00DB0120B4EE60AAF1EE10FA00DB401CB4\n" 
+"EE600AF1EE10FA00DB401C022808DB01202870044604E0\n" 
+"204628616861A86168702046BDEC068B70BD0000010020\n" 
+"40B07288000FB480B5072200210846D0F7FBFA022801D1\n" 
+"022004E09DF80800FEF727FC012002BC5DF814FB80B507\n" 
+"2200210120D0F7E9FA032801D1032002BD012002BD10B5\n" 
+"82B000208DF80000314C00A96068FEF729FC002806D001\n" 
+"2000F03BF89DF8000020706070F19403D08C8600012016\n" 
+"BD10B5294CD0F7C8FAA060C9F7A7FA606000202070A068\n" 
+"2549C0F8681100F5B47023494160234981600FF20D01C1\n" 
+"600FF241010161012010BD014600201A4A926892F85121\n" 
+"002A02D0002900D109E0704780B5154800210170084600\n" 
+"F006F8012002BD154890F90000704713490870704718B4\n" 
+"40F249120B7812FB030301241C700B7812FB03035C700B\n" 
+"7812FB030307249C700B7812FB0300034A1278C2700878\n" 
+"401C087011BCD3E7607888006D8C8600938C8600AB8C86\n" 
+"00608889000FB480B50FF22C20C7F70EFB814800218170\n" 
+"0121C17001710021417181710170C7F78DFA007C000601\n" 
+"D4012000E0012002BC5DF814FB80B50FF20020C7F7F4FA\n" 
+"C7F77DFA007C000616D57248002181700121C170017100\n" 
+"2141718171417801290AD1002141700E220A210120D0F7\n" 
+"38FA032801D1032002BD012002BD38B566488169497AC0\n" 
+"69407A4518C7F758FA007C000631D55F4CA078002802D1\n" 
+"0120A07032BD6078EDB2002D06D0012824D10120E07000\n" 
+"2060701FE0002811D1E078012806D10E220A210120D0F7\n" 
+"0AFA0020E0700E220A210020D0F703FA0120607032BD94\n" 
+"F90000002802D0022803D004E000F005F801E000F034F8\n" 
+"012032BD38B5454CE06890F968502079012809D1512D07\n" 
+"DA00202071012000F07AF8002000F06AF8B4F908209542\n" 
+"17DBA079401CA07140B2022813DB022020700020A07129\n" 
+"460FF20410C7F771FA78202081012000F05FF8012000F0\n" 
+"4FF801E00020A071012032BD38B52C4CE06890F9685050\n" 
+"2D16DA6079401C607140B2022812DB00202070012000F0\n" 
+"45F8002000F035F800206071502229460FF2BC00C7F747\n" 
+"FA01E000206071012032BD10B51B4CD0F798F92061C9F7\n" 
+"77F9E0600020207020691849C0F8B81200F52E70164941\n" 
+"60164981600FF20D01C16015490161012010BD00000146\n" 
+"00200C4A126992F8A122002A02D0002900D109E070470D\n" 
+"49012802D10120087070470020087070470A4890F90000\n" 
+"7047084908707047C8028800EC038800918D8600C78D86\n" 
+"000D8E8600C19583006288890061888900537461727400\n" 
+"000053746F7000000000436C6F7365202564202564004F\n" 
+"70656E20256420256400000FB480B52A2200210846D0F7\n" 
+"3BF9022805D10FF22810C7F7D9F9022002E0FEF759FE01\n" 
+"2002BC5DF814FB80B52A2200210120D0F727F9032805D1\n" 
+"0FF20C10C7F7C5F9032002BD012002BD10B58CB000A8D0\n" 
+"F777F900A890EC030AFEF761FE0446012C0ED1FEF736FE\n" 
+"2F480470416891F8E0170029F194036090860001D00121\n" 
+"4170012000F034F803E0022C01D1FEF725FE01200CB010\n" 
+"BD80B5D0F7F5F8244948602449C0F8F81700F2F8702249\n" 
+"4160224981600FF20D01C1600FF23D010161012002BD1A\n" 
+"48406890F8E107002801D10020704708E080B515480021\n" 
+"0170084600F006F8012002BD154890F900007047134908\n" 
+"707047000018B440F249120B7812FB030301241C700B78\n" 
+"12FB03035C700B7812FB03032A249C700B7812FB030003\n" 
+"4A1278C2700878401C087011BCD2E748818800ED8F8600\n" 
+"179086003790860063888900445420414343206661696C\n" 
+"0044542041434332206661696C000000000FB480B51522\n" 
+"00210846D0F78FF8022801D1022002E0FEF7D3FF012002\n" 
+"BC5DF814FB80B5152200210120D0F77FF8032801D10320\n" 
+"02BD012002BD80B530484068FEF7C4FF40B2002804D000\n" 
+"F03AF8012000F034F8012002BD10B5294CD0F764F8A060\n" 
+"C9F743F8606000202070A0682549C0F8081400F2084023\n" 
+"494160234981600FF20D01C1600FF241010161012010BD\n" 
+"1B48806890F8F103002801D10020704708E080B5164800\n" 
+"210170084600F006F8012002BD164890F9000070471449\n" 
+"087070470F490870704718B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB030315249C700B78\n" 
+"12FB0300034A1278C2700878401C087011BCD0E7508188\n" 
+"0045918600679186007F918600658889000FB480B50FF2\n" 
+"1010C7F7AAF80F2201210020D0F701F8022805D10FF20C\n" 
+"10C7F79FF8022000E0012002BC5DF814FB80B50FF20010\n" 
+"C7F794F80F2201210846CFF7EBFF032805D10FF2FC00C7\n" 
+"F789F8032002BD012002BD80B5012000F031F8002000F0\n" 
+"27F8012002BD80B5CFF7D3FF244908602449C0F8E81200\n" 
+"F53A7022494160224981600FF20D01C1600FF23D010161\n" 
+"012002BD1A48006890F8D102002801D10020704708E080\n" 
+"B5002000F009F8012002BD174908707047164890F90000\n" 
+"7047144908707047000018B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB03030F249C700B78\n" 
+"12FB0300074A1278C2700878401C087011BCD2E7C88188\n" 
+"005992860087928600AF92860068888900678889005374\n" 
+"617274204779726F2054656D7000537461727420466169\n" 
+"6C00004779726F2054656D702053746F70000053746F70\n" 
+"204661696C0000000FB480B5202200210846CFF75DFF02\n" 
+"2801D1022005E0FFF723FB304800210170012002BC5DF8\n" 
+"14FB80B5202200210120CFF74AFF022801D1022002BD27\n" 
+"4800210170012002BD70B5F19403F09386008CB0254844\n" 
+"6BA069E168451800A8CFF796FF204E3078012801D10020\n" 
+"0BE000A890EC030AFFF704FB012803D128700120A07730\n" 
+"7001200CB070BD80B5CFF71EFF164908601649C0F81816\n" 
+"00F2186015494160154981600FF21101C1600FF2510101\n" 
+"61012002BD00000C48006890F80106002801D100207047\n" 
+"05E080B5002000F006F8012002BD094890F90000704707\n" 
+"49087070476C888900EC038800E8818800A9938600D193\n" 
+"8600EF9386006B88890018B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB030320249C700B78\n" 
+"12FB03000022C2700878401C087011BCC9E700000FB480\n" 
+"B5212200210846CFF7C5FE022801D102200EE021220121\n" 
+"0020CFF7BCFE022801D1022005E02120C7F753FF00F0BF\n" 
+"F8012002BC5DF814FB80B5212200210120CFF7A9FE0228\n" 
+"01D1022002BD212201210846CFF7A0FE022801D1022002\n" 
+"BD012002BDF0B58BB04848846BA069E1684518002600A8\n" 
+"CFF7EEFE0398D0F7A0F9434A444BDDF79AFADDF7ACF928\n" 
+"800498D0F796F93E4A3F4BDDF790FADDF7A2F968800598\n" 
+"D0F78CF9394A3A4BDDF786FADDF798F9A880384F387800\n" 
+"2809D1381D03A9D1EC031A00A991EC030A00F09EF80646\n" 
+"012E02D10120387006E03878002803D10020B880F88038\n" 
+"810020E880288168810120A0770BB0F0BD80B5CFF74AFE\n" 
+"264908602649C0F8481600F2486025494160254981600F\n" 
+"F21101C1600FF235010161012002BD00001C48006890F8\n" 
+"3106002801D10020704705E080B5002000F006F8012002\n" 
+"BD194890F90000704717490870704718B440F249120B78\n" 
+"12FB030301241C700B7812FB03035C700B7812FB030321\n" 
+"249C700B7812FB03000022C2700878401C087011BCD7E7\n" 
+"0000EC03880089AD84FA0A74513F0482880000828800D9\n" 
+"948600139586003D95860071888900CF490022CA630A64\n" 
+"01F148024A6201F1C4028A6201F5A072CA6201F5DE720A\n" 
+"6301F50E724A6301F52D728A630B2802DA1E2048647047\n" 
+"152802DA1920486470473D2802DA142048647047B52802\n" 
+"DA0F20486470470A20486470470000F8B52DED068B84B0\n" 
+"04460026B54DE86B00286CD185ED000AB0EE603A85ED01\n" 
+"3A85ED021AB0EE610A85ED030AB0EE420A85ED050AB0EE\n" 
+"620A85ED040A30460290019000901E222946E86A00F0DA\n" 
+"F81E22291DA86A00F0D5F81E2205F10801686A00F0CFF8\n" 
+"1E2205F10C01A86B00F0C9F81E2205F11001686B00F0C3\n" 
+"F81E2205F11401286B00F0BDF8696C286C81422ADA1E23\n" 
+"00AA09B2E86A00F0C8F8F1940380978600B0EE408A1E23\n" 
+"01AA696C09B2A86A00F0BFF8F0EE408A1E2302AA696C09\n" 
+"B2686A00F0B6F8DFED860AB4EE608AF1EE10FA0BD5F4EE\n" 
+"608AF1EE10FA06D5B4EE600AF1EE10FA01D50120E86328\n" 
+"6C401C286484E0AE6B6F6C1E22394609B2304600F0D3F8\n" 
+"F0EE408A1E22394609B2304600F0F1F8B0EE409A1E2239\n" 
+"4609B2304600F00EF9B81E00EE900AB8EEE08A78EEC90A\n" 
+"30EEC00AC0EE088AC5ED068A6E6B1E22394609B2304600\n" 
+"F0AFF8B0EE409A1E22394609B2304600F0CDF8F0EE409A\n" 
+"1E22394609B2304600F0EAF879EE690A30EEC00A80EE08\n" 
+"9A85ED079A2E6B1E22394609B2304600F090F8F0EE409A\n" 
+"1E22394609B2304600F0AEF8B0EE40AA1E22394609B230\n" 
+"4600F0CBF879EECA0A30EEC00A80EE088A85ED088A18EE\n" 
+"900ACFF7FCFF4A4A4B4BDDF7F6F8DDF708F8208019EE10\n" 
+"0ACFF7F1FF454A454BDDF7EBF8DCF7FDFF608018EE100A\n" 
+"CFF7E6FF3F4A404BDDF7E0F8DCF7F2FFA0800126304604\n" 
+"B0BDEC068BF2BD0388934201D30023038003885B1C0380\n" 
+"9BB2934201D300220280028800EB820009684160012070\n" 
+"4700002DE9F8432DED028B04460D4616461F469FED288A\n" 
+"4FF00008B4F9009000EE105AF8EEC08A3A4600F027F880\n" 
+"EE280A86ED000A05E0A7F101090FFA89F908F101080FFA\n" 
+"88F8A84511DA04EB890090ED010AD6ED000A30EE600A00\n" 
+"EE008AB9F1010FE8DBA9F101090FFA89F9E7E788EE280A\n" 
+"BDEC028BBDE8F18330B49FED0E0A0023B0F900400EE024\n" 
+"B2250006D400EB8505D5ED010A30EE200A641E24B2002C\n" 
+"00D5541E5B1C1BB28B42EDDB30BC704700006F12033B00\n" 
+"000000F8CB880089AD84FA0A74513F2DE9F04104460D46\n" 
+"164694ED010A0027B4F9008014E00FFA88F84046002807\n" 
+"D404EB8000D0ED010A00F03CF8A8F101080FFA88F8B8F1\n" 
+"000F01D5A6F101087F1C3FB2AF42E7DBBDE8F0812DE9F0\n" 
+"4104460D46164694ED010A0027B4F9008014E00FFA88F8\n" 
+"4046002807D404EB8000D0ED010A00F00FF8A8F101080F\n" 
+"FA88F8B8F1000F01D5A6F101087F1C3FB2AF42E7DBBDE8\n" 
+"F081B4EE600AF1EE10FA01D4B0EE600A7047F4EE400AF1\n" 
+"EE10FA01D4B0EE600A70470FB480B5102201210020CFF7\n" 
+"EDFB022801D1022002E000F08BF8012002BC5DF814FB80\n" 
+"B5102201210846CFF7DDFB032801D1032002BD012002BD\n" 
+"30B58BB000A8CFF731FC03A890EC030A00F077F8044632\n" 
+"4D2878A0420FD0012C05D1012000F03DF80120687006E0\n" 
+"022C04D1012000F035F8022068702C7001200BB030BD80\n" 
+"B5CFF7B0FB25494860F19403109B860000224A702449C0\n" 
+"F8181300F5467023494160234981600FF21101C1600FF2\n" 
+"3D010161012002BD00001A48406890F80103002801D100\n" 
+"20704708E080B5154800214170084600F006F8012002BD\n" 
+"154890F900007047134908707047000018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"10249C700B7812FB0300034A5278C2700878401C087011\n" 
+"BCD2E7C4848800899A8600AB9A8600C39A860072888900\n" 
+"834800210160416081607047F8B52DED0C8BB0EE408AF0\n" 
+"EE608AB0EE419A0027B0EE680A10EE100ACFF75AFE41EC\n" 
+"1A0BB0EE480A10EE100ACFF752FE41EC1C0B734E21F000\n" 
+"413A46724BDCF7A1FD18D251EC1A0B21F00041DCF79AFD\n" 
+"11D2B0EE490A10EE100ACFF73BFE21F000413A46684BDC\n" 
+"F78DFD04D2104630607060B060C3E09FED65BB9FED66DB\n" 
+"3068CFF728FE04460D4653EC1C2B51EC1D0BCFF74EFD53\n" 
+"EC1B2BCFF74AFD3A465F4BDCF716FF22462B46E0F794FE\n" 
+"CFF73AFE09EE900AC6ED009A7068CFF70BFE04460D4653\n" 
+"EC1A2B51EC1D0BCFF731FD53EC1B2BCFF72DFD3A46504B\n" 
+"DCF7F9FE22462B46E0F777FECFF71DFE0AEE100A86ED01\n" 
+"AAB068CFF7EEFD04460D46B0EE490A10EE100ACFF7E6FD\n" 
+"53EC1D2BCFF710FD53EC1B2BCFF70CFD3A46404BDCF7D8\n" 
+"FE22462B46E0F756FECFF7FCFD09EE100A86ED029A19EE\n" 
+"900ACFF7CCFD21F0004141EC1B0B1AEE100ACFF7C4FD41\n" 
+"EC180B21F0004141EC1C0B19EE100ACFF7BAFD41EC1A0B\n" 
+"53EC1B2B51EC1C0BE0F732FE53EC1A2B23F00043E0F72C\n" 
+"FECFF7D2FD00EE100ADFED260AB4EE600AF1EE10FA2EDB\n" 
+"51EC1A0B21F000410122214BDCF709FD25D8BBEE090AF4\n" 
+"EE409AF1EE10FA0BD551EC180B21F0004153EC1A2B23F0\n" 
+"0043DCF7DFFC00D201279FED170AF4EE409AF1EE10FA0B\n" 
+"DB51EC180B21F0004153EC1A2B23F00043DCF7CCFC00D2\n" 
+"0227002F03D0002030607060B0603846BDEC0C8BF2BD20\n" 
+"C888000000E03F0000000000004E40E6C1631ADCA54C40\n" 
+"00408F4001004842000044400100C8410FB480B5292201\n" 
+"210020CFF739FA022801D1022002E0FEF739FC012002BC\n" 
+"5DF814FB80B5292201210846CFF729FA032801D1032002\n" 
+"BD012002BD00B58BB000A8CFF77DFA03A890EC030AFEF7\n" 
+"35FC012807D12B4801210170084600F031F8FEF715FC01\n" 
+"200BB000BD80B5CFF707FA254908602549C0F8C81700F2\n" 
+"C87023494160234981600FF20D01C1600FF23D01016101\n" 
+"2002BD1B48006890F8B107002801D10020704708E080B5\n" 
+"1548002101700846F19403A09E860000F006F8012002BD\n" 
+"164890F900007047144908707047000018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"29249C700B7812FB0300034A1278C2700878401C087011\n" 
+"BCD2E774888900CC848800F19D8600139E86002B9E8600\n" 
+"738889000FB400B5AFB00020019000900D220146CFF7AA\n" 
+"F9022801D102204BE0764A01201060BDF8C30001909DF8\n" 
+"C2000090012803D14FF48070009015E0022803D14FF400\n" 
+"7000900FE0032803D14FF48060009009E0042803D14FF4\n" 
+"0060009003E0052801D11020009000A901A8FBF771F9AA\n" 
+"208DF866003C208DF8670001208DF8680000208DF80800\n" 
+"03208DF809000DF10B0019A95522C0F7A8F90A208DF80A\n" 
+"000020ADF8600002A8CFF747FA002801D1022000E00120\n" 
+"2FB05DF814FB00B5ADB0AA208DF802003C208DF8030001\n" 
+"208DF804008DF8580003208DF859000DF15B0000A95522\n" 
+"C0F781F90A208DF85A000020ADF8B00016A8CFF720FA00\n" 
+"2801D1032002E0FBF708FA01202DB000BD30B597B000A8\n" 
+"CFF789F90BA8E6F7BDFA374CBDF83A002071204600A991\n" 
+"EC030AFBF70FFA0546607A85420ED0022D05D1012000F0\n" 
+"3CF80120207206E0012D04D1012000F034F80220207265\n" 
+"72012017B030BD80B5CFF701F92549C86000220A722449\n" 
+"C0F8881200F5227022494160224981600FF20D01C1600F\n" 
+"F23D010161012002BD1A48C06890F87102002801D10020\n" 
+"704708E080B5154800210172084600F006F8012002BD15\n" 
+"4890F900007047134908707047000018B440F249120B78\n" 
+"12FB030301241C700B7812FB03035C700B7812FB03030D\n" 
+"249C700B7812FB0300034A127AC2700878401C087011BC\n" 
+"D2E7D0848800099F8600C39F860013A08600758889000F\n" 
+"B480B52E2200210846CFF7A7F8022801D1022006E00FF2\n" 
+"4810C6F743F900F0B9F8012002BC5DF814FB80B52E2200\n" 
+"210120CFF793F8022801D1022002BD4FF0FF3300221421\n" 
+"1620C6F73AFF002803D10FF21810C6F726F9012002BD70\n" 
+"B58CB02B48846DA069E168451800A8CFF7D5F800A890EC\n" 
+"030A00F097F8060019D0607A00280ED14FF0FF30009003\n" 
+"46002214211620C6F775FE002803D10FF2DC00C6F701F9\n" 
+"2E7031460FF2DC00C6F7FBF80120A07701200CB070BD80\n" 
+"B5CFF74DF8154908601549C0F8B81800F6B80013494160\n" 
+"134981600FF20D01C1600FF24D010161012002BD0B4800\n" 
+"6890F8A108002801D10020704705E080B5002000F006F8\n" 
+"012002BD084890F900007047064908707047EC038800E0\n" 
+"84880015A18600F1940330A286003FA1860071A1860076\n" 
+"88890018B440F249120B7812FB030301241C700B7812FB\n" 
+"03035C700B7812FB03032E249C700B7812FB03000022C2\n" 
+"700878401C087011BCCBE70000414444205368616B6500\n" 
+"0000524D205353204661696C0000414444205353204661\n" 
+"696C005368616B652053656E736F72202564005C480021\n" 
+"8160C16041604161816101617047000038B52DED028B00\n" 
+"24B0EE418AF0EE601A20EE000A01EEA10A08EE080A10EE\n" 
+"100ACFF7DCFA41EC100BE0F7CCFB51EC100BCFF7FCFA00\n" 
+"EE100A494D2878002801D0022860D12869012801DB401C\n" 
+"2861A868002828D19FED3E0AB4EE408AF1EE10FA0DDB4F\n" 
+"F0FF30A860E868401CE8602869401C286185ED050A3A48\n" 
+"A86132E09FED350AB4EE408AF1EE10FA2BD50120A860E8\n" 
+"68401CE8602869401C28613248A861324868611EE00128\n" 
+"0DD195ED050AB4EE408AF1EE10FA15DB4FF0FF30A860E8\n" 
+"68401CE8600EE010F1010F0BD195ED060AB4EE480AF1EE\n" 
+"10FA04DB0120A860E868401CE86028691F2801DBFFF77F\n" 
+"FFE868032824DB28691F2821DA012420462870FFF774FF\n" 
+"1BE0012819D1DFED130AB4EE600AF1EE10FA0ADBDFED10\n" 
+"0AB4EE600AF1EE10FA03D56868401C686001E020466860\n" 
+"68680B2802DB022420462870002C01D0002068602046BD\n" 
+"EC028B32BD000000008C41FFFF8BC1DE0CFB40A6493C41\n" 
+"28C388000000F0C000008CC10000F0400FB480B5172200\n" 
+"210846CEF71BFF022801D1022002E000F07FF8012002BC\n" 
+"5DF814FB80B5172200210120CEF70BFF032801D1032002\n" 
+"BD012002BD10B53148406800F072F8044664B2002C05D0\n" 
+"012000F037F8204600F037F8012010BD10B5294CCEF7EE\n" 
+"FEA060C7F7CDFE606000202070A0682549C0F8681400F2\n" 
+"684023494160234981600FF20D01C1600FF24101016101\n" 
+"2010BD1B48806890F85104002801D10020704708E080B5\n" 
+"164800210170084600F006F8012002BD164890F9000070\n" 
+"471449087070470F490870704718B440F249120B7812FB\n" 
+"030301241C700B7812FB03035C700B7812FB030317249C\n" 
+"700B7812FB0300034A1278C2700878401C087011BCD0E7\n" 
+"F48488002DA486004FA4860067A4860078888900DFF884\n" 
+"030021017041608160C160704770B52DED068B04460025\n" 
+"94ED020AD4ED010A94ED001A21EE011A00EEA01A00EE00\n" 
+"1A11EE100ACFF78DF941EC100BE0F77DFA51EC100BCFF7\n" 
+"ADF909EE100A9FEDCC8B94ED000A80EE090A10EE100ACF\n" 
+"F779F941EC100BEDF727FA53EC102B51EC180BCFF79DF8\n" 
+"CFF795F90AEEF19403C0A58600100A94ED010A80EE090A\n" 
+"10EE100ACFF763F941EC100BEDF711FA53EC102B51EC18\n" 
+"0BCFF787F8CFF77FF909EE900A94ED020A80EE090A10EE\n" 
+"100ACFF74DF941EC100BEDF7FBF953EC102B51EC180BCF\n" 
+"F771F8CFF769F908EE100AAC4E3078002853D11AEE100A\n" 
+"CFF737F941EC1A0B21F000412A46A84BDCF787F81CD219\n" 
+"EE900ACFF72AF921F000412A46A34BDCF77CF811D218EE\n" 
+"100ACFF71FF921F0004101229C4BDCF789F806D8706840\n" 
+"1C70602846B060F0601CE051EC1A0B21F000412A46954B\n" 
+"DCF761F80DD29FED910AF4EE409AF1EE10FA06D5B06840\n" 
+"1CB06010467060F06005E0F068401CF06010467060B060\n" 
+"7068052880F2F280B068052880F29880F0680528C0F2FA\n" 
+"80DFE0032845D11AEE100ACFF7E1F841EC1A0B21F00041\n" 
+"2A467D4BDCF731F81BD219EE900ACFF7D4F821F000412A\n" 
+"46784BDCF726F810D218EE100ACFF7C9F821F000410122\n" 
+"714BDCF733F805D87068401C70602846B06018E051EC1A\n" 
+"0B21F000412A466B4BDCF70CF80CD29FED670AF4EE409A\n" 
+"F1EE10FA05D5B068401CB0601046706002E01046B06070\n" 
+"607068052848DBA0E0012801D002284CD11AEE100ACFF7\n" 
+"97F841EC1A0B21F000412A46584BDBF7E7FF0CD29FED54\n" 
+"0AF4EE409AF1EE10FA05D5B068401CB0601046F06026E0\n" 
+"51EC1A0B21F000410122DBF7EAFF15D919EE900ACFF775\n" 
+"F821F000410122484BDBF7DFFF0AD918EE100ACFF76AF8\n" 
+"21F000412A46424BDBF7BCFF05D2F068401CF0602846B0\n" 
+"6002E01046F060B060F06805284FDAB068052865DB0425\n" 
+"284630700020B0605FE004285DD11AEE100ACFF748F841\n" 
+"EC1A0B21F000412A46314BDBF798FF1BD219EE900ACFF7\n" 
+"3BF821F000412A462B4BDBF78DFF10D218EE100ACFF730\n" 
+"F821F000410122254BDBF79AFF05D87068401C70602846\n" 
+"F06018E051EC1A0B21F0004101221E4BDBF78BFF06D99F\n" 
+"ED1D0AF4EE409AF1EE10FA05DBF068401CF06028467060\n" 
+"02E02846F0607060F068052805DB0325284630700020F0\n" 
+"6012E0706805280FDB94ED020AB5EE400AF1EE10FA03DD\n" 
+"01252846307002E0022528463070002070602846BDEC06\n" 
+"8B70BD46DF617EDCA54C40CCC8880000009CC200805340\n" 
+"00002440FFFF9BC20FB480B5192200210846CEF7C1FC02\n" 
+"2801D102200DE0BDF80E309DF90D209DF90C10BDF80A00\n" 
+"00F089F83F4800214170012002BC5DF814FB80B5192200\n" 
+"210120CEF7A6FC032801D1032002BD012002BD38B50024\n" 
+"344D95F90100002803D1686800F0ACF8044664B2002C07\n" 
+"D0012000F0F1940350A9860039F8204600F039F8012068\n" 
+"70012032BD10B5294CCEF782FCA060C7F761FC60600020\n" 
+"2070A0682549C0F8C81400F2C84023494160234981600F\n" 
+"F20D01C1600FF241010161012010BD1B48806890F8B104\n" 
+"002801D10020704708E080B5164800210170084600F006\n" 
+"F8012002BD164890F9000070471449087070470F490870\n" 
+"704718B440F249120B7812FB030301241C700B7812FB03\n" 
+"035C700B7812FB030319249C700B7812FB0300034A1278\n" 
+"C2700878401C087011BCD0E700858800E1A8860019A986\n" 
+"0031A986007988890070B52DED028B82B00C46154608EE\n" 
+"103A9C4E0021F1604FF47A7148433C2190FBF1F0CEF741\n" 
+"FE41EC100BFDF77BF851EC100BDBF735FF30617461B561\n" 
+"06F12C00F06106F13C00306206F14C007062B8EEC80ADF\n" 
+"ED8A0A80EE200A86ED0A0A10EE100ACEF70BFFCDE90001\n" 
+"B369726931690FF21820C5F792FC02B0BDEC028B70BD38\n" 
+"B52DED028B84B000247E4D01682960416869608068A860\n" 
+"204602900190009003222946E86900F07DF80322291D28\n" 
+"6A00F078F8032205F10801686A00F072F895ED020AD5ED\n" 
+"010A95ED001A21EE011A00EEA01A00EE001A11EE100ACE\n" 
+"F7CEFE41EC100BDFF7BEFF51EC100BCEF7EEFE00EE100A\n" 
+"D5ED020A80EE800A10EE100ACEF7BCFE41EC100BECF76A\n" 
+"FF53EC102B4FF000405C49CEF7DFFD41EC100BFDF701F8\n" 
+"51EC100BDBF7BBFE696988422DDBA96981422ADB032300\n" 
+"AA1946E86900F045F8B0EE408A032301AA1946286A00F0\n" 
+"3DF8F0EE408A032302AA1946686A00F035F8D5ED0A0AB4\n" 
+"EE608AF1EE10FA0DD5F4EE608AF1EE10FA08D5B4EE600A\n" 
+"F1EE10FA03D5E868401CE86001E02046E860E868296988\n" 
+"4200DB0124204604B0BDEC028B32BD0388934201D30023\n" 
+"038003885B1C03809BB2934201D300220280028800EB82\n" 
+"0009684160012070472DE9F8432DED028B04460D461646\n" 
+"1F469FED288A4FF00008B4F9009000EE105AF8EEC08A3A\n" 
+"4600F027F880EE280A86ED000A05E0A7F101090FFA89F9\n" 
+"08F101080FFA88F8A84511DA04EB890090ED010AD6ED00\n" 
+"0A30EE600A00EE008AB9F1010FE8DBA9F101090FFA89F9\n" 
+"E7E788EE280ABDEC028BBDE8F18330B49FED0E0A0023B0\n" 
+"F900400EE024B2250006D400EB8505D5ED010A30EE200A\n" 
+"641E24B2002C00D5541E5B1C1BB28B42EDDB30BC704700\n" 
+"0000401C460000000000C98800DCA54C4053504120696E\n" 
+"69743A2025642C2025642C2025642C202566000000000F\n" 
+"B410B53C4C012020700020607027220146CEF7CBFA0228\n" 
+"01D10220F19403E0AC860006E000206060A060E06000F0\n" 
+"7DF8012010BC5DF814FB10B5304C002020702722014601\n" 
+"20CEF7B4FA032805D10FF2C800C5F752FB032010BD0020\n" 
+"6070012010BD0120704780B5CEF7A1FA254908602549C0\n" 
+"F8681700F2687023494160234981600FF20D01C1600FF2\n" 
+"3D010161012002BD1B48006890F85107002801D1002070\n" 
+"4708E080B5002000F009F8194800210170012002BD1748\n" 
+"90F900007047154908707047000018B440F249120B7812\n" 
+"FB030301241C700B7812FB03035C700B7812FB03032724\n" 
+"9C700B7812FB0300094A1278C2700878401C087011BCD2\n" 
+"E7108588000C858800C5AC8600F7AC860021AD86007B88\n" 
+"89007A88890053532041434332206661696C0000000010\n" 
+"B5084C4FF0FF30A061182200212046CDF7E5FC08220021\n" 
+"04F11C00BDE81040CDF7DDBCDCC888000FB410B5AEB09D\n" 
+"F8C2005D49087001208DF8C400AA208DF8C2003C208DF8\n" 
+"C30000208DF8580003208DF859000DF15B0030A95522BF\n" 
+"F754FA0A208DF85A0016A8CEF7F6FA002805D10FF28010\n" 
+"C5F7ACFA022014E000A8DFF7CCF84A4C582200212046CD\n" 
+"F7A8FC0021E1652166582200A9C9F7B6FD0FF26810C5F7\n" 
+"96FA01202EB010BC5DF814FB80B50A210320C6F71CFD03\n" 
+"2801D1032002BD0FF25010C5F784FA012002BD80B5CEF7\n" 
+"D9F9364988653649C0F8381100F59C70344941600FF26D\n" 
+"0181600FF21101C1600FF2C5010161012002BD000010B5\n" 
+"94B02A49886D90F8210100281BD0264C2078002817D001\n" 
+"201390129084B068465822BFF702FA0FBCD2F73FFBC0B2\n" 
+"2178884208DB01460FF2E800C5F74AFA00F005F8012000\n" 
+"E0002014B010BD1748002101700120704700B597B000A8\n" 
+"DFF75EF81348C16D491CC165012902D10099016618E033\n" 
+"2916D30021C165016E009A914204D1582200A9C9F740FD\n" 
+"0BE0BDF84A10002907D1582200A9C9F737FD0FF29800C5\n" 
+"F717FA012017B000BD7C8889008C85880011AE860097AE\n" 
+"860010B50C4640F24911227811FB020201231370227811\n" 
+"FB02025370227811FB020206239370227811FB02000121\n" 
+"C170FFF7B0FF2078401C207010BD000050443A20506564\n" 
+"6F4F70656E4661696C2053530050443A20534320535441\n" 
+"000050443A2053432053544F000050443A204469666653\n" 
+"7465704F7665722025640050443A205343205245534554\n" 
+"2D53544F500000000FB410B52D2200210846CEF719F902\n" 
+"2801D102200AE0BDF80A40204600F098F821460FF21810\n" 
+"C5F7AFF9012010BC5DF814FB80B52D2200210120CEF701\n" 
+"F90328F1940370B0860001D1032002BD012002BD00B58B\n" 
+"B000A8CEF755F900A890EC030A00F088F840B201460129\n" 
+"01D0022904D100F03AF8012000F030F801200BB000BD80\n" 
+"B5CEF7DEF8194908601949C0F8881800F6880018494160\n" 
+"184981600FF21101C1600FF261010161012002BD00000F\n" 
+"48006890F87108002801D10020704708E080B50E480021\n" 
+"0170084600F006F8012002BD0B4890F900007047094908\n" 
+"707047074890F900007047054908707047F087880031B0\n" 
+"860063B086007BB086007E8889007D88890038B50C4640\n" 
+"F24911227811FB020201231370227811FB020253702278\n" 
+"11FB02022D239370227811FB0205FFF7D6FFE870207840\n" 
+"1C2070BDE83140BEE7232353535020544D207374617274\n" 
+"202564000000BF4B002119709962D96219633C2190FBF1\n" 
+"F0586324220021181DCDF714BB70B50024B74D286B0321\n" 
+"90FBF1F101EB4101401A286305EB800181ED010A05EB80\n" 
+"00F0EE601AC0ED041A80ED071A00F068F8064600F0EDF8\n" 
+"2978002920D1012E07D1012805D1A86A401CA8622046E8\n" 
+"6204E0E86A401CE8622046A862A86A062805DB2046A862\n" 
+"E8620320287044E0E86A062841DB2046A862E862042028\n" 
+"703BE003290FD1002E03D1A86A401CA86201E02046A862\n" 
+"A86A03282EDB2046A8620220287029E0042901D0022913\n" 
+"D1012E05D1012803D1A86A401CA86201E02046A862686B\n" 
+"A96A884217DA2046A86201202870044611E001290FD100\n" 
+"2E03D1A86A401CA86201E02046A862A86A042804DB2046\n" 
+"A862022028700446286B401C2863204670BD38B52DED06\n" 
+"8B00247548016B00EB810595ED070AD5ED040A95ED011A\n" 
+"21EE011A00EEA01A00EE001A11EE100ACEF7E4FA41EC10\n" 
+"0BDFF7D4FB51EC100BCEF704FB09EE100A9FED678B95ED\n" 
+"010A80EE090A10EE100ACEF7D0FA41EC100BECF77EFB53\n" 
+"EC102B51EC180BCEF7F4F9CEF7ECFA09EE900A95ED040A\n" 
+"80EE090A10EE100ACEF7BAFA41EC100BECF768FB53EC10\n" 
+"2B51EC180BCEF7DEF9CEF7D6FA0AEE100A95ED070A80EE\n" 
+"090A10EE100ACEF7A4FA41EC100BECF752FB53EC102B51\n" 
+"EC180BCEF7C8F9CEF7C0FA08EE100A19EE900ACEF792FA\n" 
+"21F000412246444BDBF7E4F912D21AEE100ACEF787FA21\n" 
+"F0004122463E4BDBF7D9F907D29FED3E0AB4EE408AF1EE\n" 
+"10FA00DB01242046BDEC068B32BD38B52DED028B002431\n" 
+"48056B2946204600F018F8B0EE408A2946012000F012F8\n" 
+"DFED310AB4EE608AF1EE10FA05D5B4EE600AF1EE10FA00\n" 
+"D501242046BDEC028B32BD000030B49FED260ADFED250A\n" 
+"0022F1940300B486001F4D13E0CC1CE31A032493FBF4F4\n" 
+"04EB44041B1B1BB200EB400405EB840404EB830393ED01\n" 
+"1A30EE010A521C12B21346032BE7DBB0EE081A80EE010A\n" 
+"002215E0CC1CE31A032493FBF4F404EB44041B1B1BB200\n" 
+"EB400405EB840404EB830393ED011A31EE401A41EE010A\n" 
+"521C12B21346032BE5DBB0EE080A80EE800A30BC7047C0\n" 
+"CB8800E6C1631ADCA54C4000001440000000000100AA42\n" 
+"CDCCCC3D0FB480B5182208210020CDF7E3FE022801D102\n" 
+"200CE03C48002101709DF8091041609DF80A1081609DF8\n" 
+"0B10C160012002BC5DF814FB80B5334800210170182208\n" 
+"210120CDF7C6FE032801D1032002BD012002BD10B52C4C\n" 
+"2078012801D1002010BD642061684143E268012A0FD101\n" 
+"291CDAA1684843002818D4012000F041F8012020700FF2\n" 
+"D000C4F748FF0EE0012903DAA1684843002808D5012000\n" 
+"F031F8012020700FF2B800C4F738FF012010BD80B5CDF7\n" 
+"8DFE154908601549C0F8981400F2984013494160134981\n" 
+"600FF20D01C1600FF24D010161012002BD0B48006890F8\n" 
+"8104002801D10020704705E080B5002000F006F8012002\n" 
+"BD084890F900007047064908707047F8878800F4878800\n" 
+"9DB48600D3B48600F1B486007F88890018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"18249C700B7812FB03000122C2700878401C087011BCCB\n" 
+"E7000054656D7020496E0054656D70204F757400000000\n" 
+"70B504460D461646E06818B915210548CDF7A1F82A4631\n" 
+"462069E368BDE87040184700BFE06086003B2202490368\n" 
+"9B69184700BF0062860010B51148C16A21B1012180F830\n" 
+"10417111E0016A491C0162426A891A5CBF0121417190F8\n" 
+"281031B1491E80F82810C9B209B9012101710548046824\n" 
+"B1606880472468002CFAD110BD1C278800C8D2880010B5\n" 
+"0446044979440E31044878440C30C4F7D4FA204610BD18\n" 
+"0000000400000021E5FBFFBD69FDFF91A7FBFF65ACFBFF\n" 
+"00000000000000000000000010B50446C4F709FC204610\n" 
+"BD0838FFF795BFE9F7EDBB70470838FFF7FCBF816807E0\n" 
+"02681168536889185B18C36008320260C2689142F4D04A\n" 
+"1C82600878704738B504460D46A068E168884212D12068\n" 
+"6168884208BFE9F7CBFB2068227C016802B14944A16042\n" 
+"685218E260083020609142ECD0A068401CA06000F8015D\n" 
+"31BD2DE9F04589B000F1080105910168059A490802EBC1\n" 
+"0106910021079108910168490800EBC101083100910179\n" 
+"01F001018DF8101040680099400801EBC0000190002002\n" 
+"90F1940390B78600039088E005A8FFF7A8FF044614F003\n" 
+"0503D105A8FFF7A1FFC51C26090F2E1BD105A8FFF79AFF\n" 
+"00F10F0615E00598016808180599079049680818089005\n" 
+"9808300590079808998842F0D0401C079010F8011D00A8\n" 
+"FFF792FF6D1EF2D1002E55D005A8FFF77AFF0546A00800\n" 
+"F00300032804BF05A8FFF771FF009C0299DDF80C8005EB\n" 
+"002008E0083C801A54F8041C54F8082C01EB0208414654\n" 
+"F8082C8A1A8242F1D3404247180025B61C2FD0474507D1\n" 
+"54F8047B54F8040B00EB07084745F7D00298039917F801\n" 
+"AB884217D100980199884208BFE9F72AFB009800689DF8\n" 
+"1010029009B148440290009902984968009A0918083203\n" 
+"9100928842E7D00298401C02906D1C00F801ADB542CFD1\n" 
+"0298039988427FF477AF0198009981427FF472AF09B0BD\n" 
+"E8F08500005BCAFBFFCC5A0100D02D88000000000085FE\n" 
+"FFFF0200000002000000280000006A02000000008800C0\n" 
+"2D000083CBFBFF0C000000D4FDFFFFC02D880000000000\n" 
+"99FDFFFF520001F30E0100011002503F00FF07F206271F\n" 
+"F2060318F00904A0A1A2A3AAABA4A5A9A7A62010048083\n" 
+"8C8D8F9009200AFF00600B110000898B9D9E9F6F527821\n" 
+"4001FF3C410940058B00848586878115F00118FFFE00BA\n" 
+"F18220520604F18903F2440C56F33D803F0415FE6B0401\n" 
+"013109B27870511B820512F33DE80304F131C4E10421C9\n" 
+"F002B50101010001300160048804F1FF01F5FF11F9FF21\n" 
+"FDFF3103FDFF4104FDFF5105FDFF6106FDFF7107FDCB4C\n" 
+"083001C40D8804F1FF01F5FF11F9FF21FDFF3103FDFF41\n" 
+"04FDFF5105FDFF6106FDFF7107FDFF8108FDFF9109FDFF\n" 
+"A10AFDFFB10BFDFFC10CFDFFD10DFDFFE10EFDFFF10FFD\n" 
+"FF0111FDFF1112FDFF2113FDFF3114FDABEC144C01E50D\n" 
+"E5F514FE09021015F206011FF2024728F20A104412C804\n" 
+"FE7204E015920104F11BF0A120F12F0360062D431CEBE2\n" 
+"361A3F08F20A14A8F11303120A04520704F30E0500C1F1\n" 
+"FF1BF13661F21BFF8EF2064018F0010FCA9A3B3BA9C02D\n" 
+"0E262D5403400880A20000C924840080A8081004F56800\n" 
+"00E12308427008A1011221105001B8278886C00D803FFF\n" 
+"CAA3BFF986F43EFBB54A3D7E67F1FF03F5FF13F9FF23FD\n" 
+"E013037C05BB6D8200736E827C06610370052BB1820091\n" 
+"B1821010035FC38200CD043C03EFBEADDE629C06BE90AC\n" 
+"288004D38482002585308F0002C10610033C6E86005804\n" 
+"F10F011201346D1805F11734120234216AF21202349EF3\n" 
+"5407100337BF82008904121A0C1264043001F112000C2D\n" 
+"F14C0020BB8600E40852F20C12908952F30C1E20F42920\n" 
+"02F412E03D0C23800C30A00124000F5D7308080BF0040A\n" 
+"807486009C74BC2002A00C407420431BB70461028E061C\n" 
+"2C12B420F20AD0440000F11400F043820049219844687B\n" 
+"040000408200EFBEADDE>\n" 
diff --git a/drivers/sensors/brcm/platform/bbd_tm2_patch_file.h b/drivers/sensors/brcm/platform/bbd_tm2_patch_file.h
new file mode 100644 (file)
index 0000000..b26f196
--- /dev/null
@@ -0,0 +1,12881 @@
+"<FormatVersion=0x00010001>\n" 
+"<Crc=206>\n" 
+"<BlobLength=296020>\n" 
+"<AsicVersion=0x47730A20>\n" 
+"<ChangeList=4294967295>\n" 
+"<PatchLevel=0>\n" 
+"<PostPatchLevel=1>\n" 
+"<Name=bcm_sensorhub_a2>\n" 
+"<Type=Patch>\n" 
+"<PatchAddress=0x00824401>\n" 
+"<Blob=F194030040820050AA8900014482004151860075518600\n" 
+"A9518600DD518600115286000000000000000000000000\n" 
+"000000000043528600435286000000000039778200ED7C\n" 
+"820043528600435286004352860059A282004352860043\n" 
+"52860043528600435286004789820069898200C1898200\n" 
+"E3898200058A8200278A8200498A82006B8A82008D8A82\n" 
+"00AF8A8200D18A8200F38A8200158B82002F8B8200498B\n" 
+"8200638B820043528600435286004352860043528600DB\n" 
+"8C8200018D8200398D82008B8D820065D98200AFD98200\n" 
+"75DA820043528600657582009D75820043528600435286\n" 
+"00C9BC8200EDBC820039BD820043528600435286004352\n" 
+"8600C9E382008FC8820043528600435286004352860043\n" 
+"52860043528600435286004F54830071548300C9548300\n" 
+"EB5483000D5583002F558300AB778300BD778300435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286004352860043528600435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286004352860043528600435286\n" 
+"0043528600435286004352860043528600435286004352\n" 
+"8600435286004352860043528600435286004352860043\n" 
+"5286004352860043528600435286004352860043528600\n" 
+"4352860043528600435286000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000F1\n" 
+"9403904382000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000AA\n" 
+"AAAAAA72B6DFF82C00016841F47001016009494FF0E020\n" 
+"C0F8081D4FF0000080F31488DFF814D0C046C04600F008\n" 
+"F800F014F888ED00E00040820050AA89004EF68851CEF2\n" 
+"0001086840F4700008604FF00070E1EE100A7047704701\n" 
+"20C046002801D000F014F80020C046C04600F0FFF800F0\n" 
+"13FA8268521C8260426832B10268531C03601170416849\n" 
+"1E4160704710B5074979441831064C7C44163404E00A68\n" 
+"081D511888470146A142F8D110BD0C7404004C74040080\n" 
+"B501211E2000F0FCF901211F2000F0F8F900F045FA28B1\n" 
+"022830D03ED303280ED048E0022100F0ECF90221012000\n" 
+"F0E8F90221022000F0E4F90221032037E00021002000F0\n" 
+"DDF90021012000F0D9F90021022000F0D5F90021032000\n" 
+"F0D1F901210A2000F0CDF901210B2000F0C9F901211320\n" 
+"00F0C5F90121142018E00121002000F0BEF90121012000\n" 
+"F0BAF90121022000F0B6F90121032005E00321002000F0\n" 
+"AFF90321012000F0ABF90121092000F0A7F903E0D821A9\n" 
+"4800F00DFC0120BDE8024000F052BD80B5A64800210160\n" 
+"A54800F06FFD00F095FD00F0B7FD00F0B5FEFCE700B585\n" 
+"B0A04800F063FD01F057FB00F0DFFA10F1010F00D1FEE7\n" 
+"9C4800F058FDFFF77CFF00F0CAF928B102280FD015D303\n" 
+"281AD027E001208DF80C0000F0B8F9049010B94FF46120\n" 
+"0490914818E003208DF80C00002004908E4811E004208D\n" 
+"F80C00002004908C480AE002208DF80C0000F09EF90490\n" 
+"10B94FF461200490874800F026FD04E04FF4D6717C4800\n" 
+"F0B2FB01F0CBFB824800F01BFD03A801F015FC804800F0\n" 
+"15FD01F08AFE7F4800F010FD022002904FF4407001907C\n" 
+"4800907C4B04227C497C4801F099FE7C4800F000FD05B0\n" 
+"00BD10B586B0794800F017FD794800F014FD00F0A3F977\n" 
+"4800F00FFD7748006800F00BFD764800F008FD75480021\n" 
+"01607548016000F02FF90020C046C0466F4800F0DDFC02\n" 
+"F06AF801211E2000F0FEF801211F2000F0FAF86C4800F0\n" 
+"D0FC00F0E8F800F0E8F800F0E8F80021002000F0EDF800\n" 
+"A9002002F0EEFD00208DF800008DF8020000A902F03AFD\n" 
+"0021012000F0DDF800A9012002F0DEFD00208DF800008D\n" 
+"F8020000A9012002F029FD0021022000F0CCF800A9F194\n" 
+"0320478200022002F0CDFD00208DF8000002208DF80200\n" 
+"00A902F018FD0021032000F0BBF800A9032002F0BCFD00\n" 
+"208DF800008DF8020000A9032002F007FD00F067F9F0B9\n" 
+"454800F081FC03A80020C04660B962B603A802F08DFF04\n" 
+"4600F076FC24B14FF41371244800F002FB9DF80C0000F0\n" 
+"DFF8049800F0D6F872B6384800F065FC00F0D9F818B100\n" 
+"F0D6F803280ED100F0CCF83349884209D3334800F056FC\n" 
+"022002F02DF8052002F02AF805E0042002F026F82D4800\n" 
+"F049FC03F013F82C484078401C2A49487003F04EFA03F0\n" 
+"81FA03F074FCFFF7D2FE0220C046C046254800F034FC00\n" 
+"F0FCF923480121017002F0C8FF002006B010BD28728600\n" 
+"1882890000005505000066060100660602006606030066\n" 
+"060400660605006606190066061A0066061B0066061C82\n" 
+"89007D458200347286001C858900000166060100220214\n" 
+"2023080000110140000B40010011010C200E4010200E40\n" 
+"040022020200220203002202016A18000A002202090022\n" 
+"021C278800000122028488890003F034BD00F0C9B91448\n" 
+"00E0144808214FF0FF3240F8042B491EFBD17047002224\n" 
+"2819D20F220F4B03EBC0035B689A400C4B53F830301B68\n" 
+"9343DFF828C00CEBC00CDCF804C001FA0CF11140194305\n" 
+"4A52F83000016001221046704780E100E080E200E09865\n" 
+"8600A4480021016041608160C1600161416100F0C3BB9F\n" 
+"48A049096841619F490968016170479E48002101609E48\n" 
+"0160704710B1012802D07047994800E099480160704794\n" 
+"49C86070479248C06870479149486070478F4840687047\n" 
+"00B5024692480221002303F008FD8A49086000BD894909\n" 
+"68884200D2704780B508E04FF47A714843844909688842\n" 
+"00D2704780B581490968B0FBF1F0009001E0C046C04600\n" 
+"98411E00910028F8D101BD002000687047042000687047\n" 
+"7D480068006870477B4800684068704780B57948006800\n" 
+"F00700062802D007281ED001BD764800F062FB02211E20\n" 
+"FFF767FF02211F20FFF763FF02212020FFF75FFF022121\n" 
+"20FFF75BFF02212220FFF757FF02212320FFF753FF6948\n" 
+"6A4904E06A4800F044FB664869490160654800680028FB\n" 
+"D101BD10B560480468654800F036FB600704D4634800F0\n" 
+"31FB002010BD04F00700042806D048D3062816D00AD307\n" 
+"2837D042E05C4800F021FB4C4802214160012010BD5948\n" 
+"00F019FB4848032141604FF46121C160022010BD4C4800\n" 
+"F00EFB02211E20FFF713FF02211F20FFF70FFF02212020\n" 
+"FFF70BFF02212120FFF707FF02212220FFF703FFF19403\n" 
+"B04A820002212320FFF7FFFE3F48404901603E48006800\n" 
+"28FBD1032010BD3D4800F0EAFA39483C49016038480068\n" 
+"0028FBD1042010BD3D4800F0DEFA33483C490160324800\n" 
+"680028FBD1052010BD81B0384839490160022000903848\n" 
+"00990160374800680090009820F0020000903448009901\n" 
+"6003200090304800990160314800680090009840084000\n" 
+"0090009840F0010000902B480099016000980028FCD101\n" 
+"B0704780B52848009001232748026846F26661022003F0\n" 
+"ADFD01BD80B5022003F082FD02280BD11F48009001231F\n" 
+"48026846F26661022003F09CFD012002BD4FF0FF3002BD\n" 
+"0000785D890020000E4024000E4030000E4034000E4000\n" 
+"1A711808ED00E000020E4006001101905D8900020011C9\n" 
+"07001101030011C9090011010300110104001101050011\n" 
+"0108001101040011C9FC000B407347BCBCE0000B40E400\n" 
+"0B4000000B4041B686003C2C88002DE97043002003F013\n" 
+"FE0646002146F26662002303F0B2FB46F26662A2FB0089\n" 
+"A6EB0800411C022003F0DAFD0220BDE8464303F093BD02\n" 
+"2003F0BCBD2DE9FC420646022003F0B6FD002003F0F1FD\n" 
+"0446002146F266621546002303F08FFB2A46A2FB0079E0\n" 
+"1B421C0023E5FB062311462A46022003F0B4FD0220BDE8\n" 
+"F64203F06DBD0000DFF85CD3D748D8497047DFF854D3D5\n" 
+"48D54A704772B670470047704772B602464FF0000080F3\n" 
+"1488D0488047104772B64FF0000282F314888546084700\n" 
+"BF00BF00BF00BF72B64FF0000282F314884FF0807282F3\n" 
+"0388854604B402B400B54FF0FF3C4DF804CDDFF8083308\n" 
+"B4DFF8042304B4DFF8041302B40000000000000000DFF8\n" 
+"F40201B46FF0060E704700BF00BF00BF00BF2DE9FF5FB8\n" 
+"4D05F10406B84D46F8045B002546F8045B009D46F8045B\n" 
+"019D46F8045B029D46F8045B039D46F8045B049D46F804\n" 
+"5B059D46F8045B069D46F8045B079D46F8045B089D46F8\n" 
+"045B099D46F8045B0A9D46F8045B0B9D46F8045B0C9D46\n" 
+"F8045B0EAD46F8045B46F804EB0D9D46F8045BBDE8FF9F\n" 
+"2DE9FF1F9A4D05F104069A4D46F8045B002546F8045B0D\n" 
+"AD46F8045BEFF3088546F8045BEFF3098546F8045B009D\n" 
+"46F8045B019D46F8045B029D46F8045B039D46F8045B04\n" 
+"9D46F8045B059D46F8045B069D46F8045B079D46F8045B\n" 
+"089D46F8045B099D46F8045B0A9D46F8045B0B9D46F804\n" 
+"5B0C9D46F8045B46F804EB7E4D46F8045BEFF3038546F8\n" 
+"045BBDE8FF1F04F01BBD2DE9FF1F754D05F10406754D46\n" 
+"F8045B002546F8045B0DAD46F8045BEFF30885F1940340\n" 
+"4E820046F8045BEFF3098546F8045B009D46F8045B019D\n" 
+"46F8045B029D46F8045B039D46F8045B049D46F8045B05\n" 
+"9D46F8045B069D46F8045B079D46F8045B089D46F8045B\n" 
+"099D46F8045B0A9D46F8045B0B9D46F8045B0C9D46F804\n" 
+"5B46F804EB5A4D46F8045BEFF3038546F8045BBDE8FF1F\n" 
+"04F001BD2DE9FF1F504D05F10406504D46F8045B002546\n" 
+"F8045B0DAD46F8045BEFF3088546F8045BEFF3098546F8\n" 
+"045B009D46F8045B019D46F8045B029D46F8045B039D46\n" 
+"F8045B049D46F8045B059D46F8045B069D46F8045B079D\n" 
+"46F8045B089D46F8045B099D46F8045B0A9D46F8045B0B\n" 
+"9D46F8045B0C9D46F8045B46F804EB364D46F8045BEFF3\n" 
+"038546F8045BBDE8FF1F04F0E8BC2DE9FF1F2B4D05F104\n" 
+"062B4D46F8045B002546F8045B0DAD46F8045BEFF30885\n" 
+"46F8045BEFF3098546F8045B009D46F8045B019D46F804\n" 
+"5B029D46F8045B039D46F8045B049D46F8045B059D46F8\n" 
+"045B069D46F8045B079D46F8045B089D46F8045B099D46\n" 
+"F8045B0A9D46F8045B0B9D46F8045B0C9D46F8045B46F8\n" 
+"04EB124D46F8045BEFF3038546F8045BBDE8FF1F04F0C2\n" 
+"BC0000000050AA890050AA890000400000814C82007856\n" 
+"3412CEFABEBA734773475C6F8900331114918D4D820021\n" 
+"4E8200B54E8200494F8200012100F0CBB9002100F0C8B9\n" 
+"10B50446FFF796FC30B92146012004F049FD2146022012\n" 
+"E0022814D0012806D12146002004F03EFD2146012007E0\n" 
+"032809D12146132004F035FD21460A20BDE8104004F02F\n" 
+"BD10BD10490860104949680F4A02EB810188605068401C\n" 
+"50605068102824BF00215160506802EB80000949816010\n" 
+"68401C1060704705480021016041607047014908607047\n" 
+"0000FC000B405C7689000DF00DF004F037BE80B501220A\n" 
+"494FF4000004F0ADFE0122084909488008800004F0A6FE\n" 
+"01220749074880088000BDE8084004F09DBE0000FF3F82\n" 
+"00FFFF870069BB8600FFFF8B0053EA890000B583B0FFF7\n" 
+"DAFF00A804F03DFE0320009960F35F71009100A804F059\n" 
+"FE0521062004F0CBFE04F039FF012004F076FE07BD0268\n" 
+"531C036011707047DFF88C0A406B00B9704780B502F05A\n" 
+"FBDFF87C0A406B8047DFF8740A407808B902F04AFBDFF8\n" 
+"680A00214163C16280F8301001BD80B5DFF87809002100\n" 
+"220B460EC04FF4C071DFF86C0904F0F3FFDFF864090021\n" 
+"017301214173006980088000DFF8501908610846182181\n" 
+"820821C182007E00F0800040F00A00DFF838190876DFF8\n" 
+"34090021016041600FF2413181600FF2A931F19403D051\n" 
+"8200C160002001F06CFDDFF81C09DFF81C190160DFF81C\n" 
+"0968210160DFF818094FF486710160DFF8C0090168DFF8\n" 
+"C009006801F0D6FCDFF8B809DFF8B8190160DFF8B80900\n" 
+"68DFF8B819884205D100210120BDE8044004F0A8BF01BD\n" 
+"38B5044600F0F3FD05462046DFF89C1926E038B5044600\n" 
+"F0EAFD05462068800800F0010004F089FC207800F00C00\n" 
+"0C2808BF04F08DFCDFF88C08007E00F07F00217A01F07F\n" 
+"01884207D0DFF87808007E00F07F00DFF870180876DFF8\n" 
+"4C0921462C2205F040F82846BDE8324000F0C5BD38B505\n" 
+"4600F0BBFD0446DFF84808007B002818BF01281CD1002D\n" 
+"DFF838080BD000210173002001F0C1FC002001F0F3FCDF\n" 
+"F8F40800210AE00121017301F0D6FC012001F0B3FCDFF8\n" 
+"DC08DFF8DC18016007E0681E8041C043C00FDFF8F81781\n" 
+"F870012046C8E710B500F089FD0446DFF8E407007B0028\n" 
+"47D00020DFF8D81704E000281CBF0A68002A3ED1401C09\n" 
+"1D0328F6DB05F0CAFA002836D1DFF8B8070068002801BF\n" 
+"DFF8B0070069C0F34000002808D1DFF8A407C06820B1DF\n" 
+"F89C07C068804768B9DFF89007007CC0071CD4DFF88807\n" 
+"8068C0B1DFF880078068804798B1DFF874070121017390\n" 
+"F8700128B1DFF86407002180F870110173FFF7D2FE2046\n" 
+"BDE8104000F041BDFFF7CBFE204600F03CFD30BF10BD38\n" 
+"B504460D46032C05DB40F23A21DFF81808FFF7E3FC00F0\n" 
+"27FDDFF8241751F824100DB1491C02E00A0018BF491EDF\n" 
+"F8102742F8241054E738B5040005D14FF41671DFF8E407\n" 
+"FFF7C9FC00F00DFD05462146DFF8E80605F0D9FA41E770\n" 
+"B584B0DFF8C8070468DFF8C8070568DFF8C4070560DFF8\n" 
+"C4070460DFF8C406007E10F07F0624D0DFF8B806007EC0\n" 
+"091BD100213046FFF738FA00A9304601F039FF01208DF8\n" 
+"000000208DF802008DF8010000A9304601F081FEDFF888\n" 
+"06007E40F08000DFF87C1608760021304601F0A2FF40F6\n" 
+"FF702843DFF85817086044F47C10DFF84C17086030BFDF\n" 
+"F84807DFF8481709680160DFF83807DFF8401709680160\n" 
+"DFF84006007E10F07F0424D0DFF83406007EC0091BD100\n" 
+"212046FFF7F5F900A9204601F0F6FE01208DF800000020\n" 
+"8DF802008DF8010000A9204601F03EFEDFF80006007E40\n" 
+"F08000DFF8F81508760121204601F05FFF04B070BD38B5\n" 
+"00F085FC044605F08EFA0546DFF8D80502210173417305\n" 
+"F064FADFF8C406007828B900F033FCDFF8BC26C2E90001\n" 
+"2946022000F070FADFF8B006006820F00400DFF8A81608\n" 
+"60012001F0ADFBFFF759FF002001F0A8FBF19403605582\n" 
+"0005F04BFADFF88805012101734173204680F310882846\n" 
+"32BD2DE9F04F85B000F04BFC8046012505F053FA814605\n" 
+"F0E9FA012800F07581DFF85805808A8145C0F26F810020\n" 
+"05F0E9FADFF84C060068401CDFF84416086000F02FFC82\n" 
+"460024DFF82C05066807E0B06820B10320B16888470400\n" 
+"01D176680EB1002CF4D05CB1DFF80C05076805E0F86810\n" 
+"B10320F96888477F68B742F7D1504680F31088002C40F0\n" 
+"138105F0C7FADFF8E80403210173417305F0F9F9DFF8D8\n" 
+"04C08AA9EB0009B9F1010F05DA40F23741DFF8AC05FFF7\n" 
+"AEFB05F097FA012800F0D980DFF8B005007828B900F0A8\n" 
+"FBDFF8A825C2E9000100F065FB01F022FA05F084FA0128\n" 
+"00F0BC8000F040F9DFF8940500680390DFF89005006807\n" 
+"023F0ADFF8640500684FEA002A4FEA1A2ADFF87C050468\n" 
+"DFF87C05066805F067FA012800F08C8000254946032000\n" 
+"F0BEF900F0F5F8DFF84404007E10F07F0B23D0DFF83804\n" 
+"007EC0091AD100215846FFF7F8F800A9584601F0F9FD01\n" 
+"208DF800008DF802508DF8015000A9584601F042FDDFF8\n" 
+"0804007E40F08000DFF8001408760021584601F063FE04\n" 
+"F0FCF9DFF808050570DFF8EC04006840F00400DFF8E014\n" 
+"086005F053FADFF8D804006820F00400DFF8CC140860DF\n" 
+"F89C040068DFF89C1488422ED10121102004F033FD04F0\n" 
+"57FD05F084FA04F06CFDDFF8C00408210160DFF8B40400\n" 
+"7830B1DFF8B4040068401CDFF8AC140860DFF8A0040078\n" 
+"88B1DFF878040078022808BF03F070FADFF8942440F6B8\n" 
+"30002103F03BFADFF85C0402210170DFF8740400780028\n" 
+"B2D1DFF878040068401CDFF87014086000F085F8DFF848\n" 
+"0403990160DFF844040760DFF81804C0F800A0DFF83804\n" 
+"0460DFF83804066000F0B5F801F069F900F0ADFA25B901\n" 
+"F050FA012001F02DFA05F015F9BF48477B00F010FB0446\n" 
+"05F03CF8BB48066805E0F06810B13846F1688847766800\n" 
+"2EF7D1204680F31088B5480121017341730DB904F07FF9\n" 
+"012005F0A6F93DBBAF48007E10F07F0524D0AD48007EC0\n" 
+"0919D100212846FFF736F800A9284601F037FD01208DF8\n" 
+"000000208DF802008DF8010000A9284601F07FFCA14800\n" 
+"7E40F080009F4908760121284601F0A2FD01E04FF00009\n" 
+"404680F31088484605B0BDE8F08F18B4DFF88803DFF888\n" 
+"13024602230C6842F8044B41F8044B5B1EF8D14022DFF8\n" 
+"7413103018BC04F02ABD10B5DFF86043402204F11001DF\n" 
+"F85C0304F020FDDFF85803022154F8042B40F8042B491E\n" 
+"F9D110BDDFF83803DFF844130968C0F8F19403F0588200\n" 
+"0011DFF840130968C0F80411DFF838130968C0F80811BB\n" 
+"490968C0F80C11DFF82C130968C0F81011DFF824130968\n" 
+"C0F82011DFF820130968C0F824110021DFF818238A5C80\n" 
+"F81421491C401C0C29F6DB7047B748D0F80011B94A1160\n" 
+"D0F80411B84A1160D0F80811B74A1160D0F80C11A44A11\n" 
+"60D0F81011B44A1160D0F82011B34A1160D0F82411B24A\n" 
+"11600021B24A90F814318B54491C401C0C29F8DB70472D\n" 
+"E9F84305F037F801F07FF8FFF779FFFFF7A0FF95480468\n" 
+"954805688B480668944807689448D0F800808148D0F800\n" 
+"908049016004F098F88A48006840F004008849086005F0\n" 
+"F4F87948C0F80090874804602802000A86490860300200\n" 
+"0A7B490860844807608448C0F80080FFF7A1FF01F055F8\n" 
+"7B48006820F0040079490860FFF754FF05F001F8BDE8F1\n" 
+"4304F083B82DE9F04704460E4600F0F6F982466F480778\n" 
+"022C35D0032C4AD1380002D0012F03D045E0B6F1405F39\n" 
+"DA022002F0B0FE022002F0EBFE04460025022002F0E9FD\n" 
+"2046002146F266620B4602F085FC46F26662A2FB008902\n" 
+"FB0199B4EB080065EB0901401C41F1000105F02DF9624A\n" 
+"731E4FF47A74C4FB030103F0B4F85348022115E0380014\n" 
+"D1B6F1405F08DA022E18DB701EFFF7C1F84D4801210170\n" 
+"0CE0022002F076FE022002F0B4FD4848032101703FB946\n" 
+"48007820B10FF22D01304605F035F95046BDE8F04700F0\n" 
+"9CB9C05C8900E0448800CC5C890008000E4018030A0004\n" 
+"000E404C000E40D0B500F085F9044600F041F94D4AC2E9\n" 
+"00011046D0E900233348D0E90067BB4207D828BFB24204\n" 
+"D24FF4DF612848FFF729F945482B490978017001290DD0\n" 
+"12D3032902D00FD203F087F8022002F048FDFEF7FAFFFF\n" 
+"F74EF805E01A4890F8300008B9FFF765F81F4800210170\n" 
+"154890F8300050B13448007800281EBF32480078012802\n" 
+"D10F48C06A0BE02E48D0E900231548D0E90067901B63EB\n" 
+"070105F085F808B105F0E3F82046BDE8D04000F036B914\n" 
+"2C8800102C880030000E4007AC8200F00F0B401C278800\n" 
+"200A7347F0448800C466860018F00B402CF00B40085D89\n" 
+"000C5D89008A8889006046880010ED00E0FC5C890010F0\n" 
+"0B4014F00B401CF00B4020F00B408988890080E200E004\n" 
+"5D890041B68600005D89001C45880080E100E000E400E0\n" 
+"00E100E004ED00E008ED00E00CED00E014ED00E024ED00\n" 
+"E088ED00E018ED00E0684688008B88890080B501F048FA\n" 
+"FFF789FA05F0C2F82148FFF700FA02F091FC02F09BFF1E\n" 
+"48FFF7F9F905F039F91D48FFF7F4F9F19403805C820005\n" 
+"F0ACFA1B48FFF7EFF906F093F81A48FFF7EAF904F08EFB\n" 
+"1848FFF7E5F906F030FA1748FFF7E0F906F05CFC1548FF\n" 
+"F7DBF907F031FD1448FFF7D6F901F048FA1248FFF7D1F9\n" 
+"08F0B2F81148FFF7CCF908F0FAFB0F48FFF7C7F908F0C3\n" 
+"FC0E48BDE80240FFF7C0B9060066060700660608006606\n" 
+"090066060A0066060B0066060C0066060D0066060E0066\n" 
+"060F00660610006606110066061200660680B5002002F0\n" 
+"46FD012002F043FD002002F081FC0120BDE8024002F07C\n" 
+"BC80B5002002F053FC012002F050FCBDE8014058B53748\n" 
+"0068C608F60035480660354840F2022101603448016002\n" 
+"F02FFF4FF0FF3404F087FF201A64EB01012F4A10602F48\n" 
+"016046F0010029490860294840F2822101602848016051\n" 
+"BD70B5012002F047FD05462E46002002F042FD04460120\n" 
+"02F03EFD0546B042F4D14FF0FF300146001BA94170BD80\n" 
+"B5002002F055FC18B1C3211C48FEF7DCFF012002F04DFC\n" 
+"012803D0C5211748FEF7D3FF17484FF4807101604FF400\n" 
+"710160BDE80140A8E780B5FFF7CBFFBDE8044004F055BF\n" 
+"80B5FFF7C4FFBDE8044004F068BF0000EFF3108072B670\n" 
+"470020704780F3108870477047B0000B4008900B402890\n" 
+"0B4000900B4020900B40286A860080E100E080B5DFF894\n" 
+"0400F051F8DFF890240FF2D101BDE8084008F00FBC0146\n" 
+"DFF8780474E180B500220321DFF874041EE224E2DFF870\n" 
+"14032251F8043B83420BD0521EF9D10021DFF85C2452F8\n" 
+"043B2BB1491C0329F9DB14E200207047DFF8482442F821\n" 
+"00F8E70021DFF83C2452F8043B834203D0491C0329F8DB\n" 
+"02E2DFF82804002240F821200020704780B500220521FF\n" 
+"E7DFF80C04006805F07BF808B14FF0FF3002BD38B5EFE1\n" 
+"DFF80004704710B50446DFF8F80320606460214604F108\n" 
+"0008F0C2FB04F524500021016043F24450015504F52450\n" 
+"001D08F00BFE204610BD00002DE91040044604F5245000\n" 
+"1D08F058FE04F1080008F0D2FB204610BD10B596B00446\n" 
+"0878012807D0C0F0A880032851D02AD304284ED0A1E0DF\n" 
+"F8940300904868019004F5245014300290DFF888030790\n" 
+"4FF4C0500390DFF8800304904FF4C0500590DFF8780306\n" 
+"9000A94FF4007004F0E4FF04F52451086004F524500068\n" 
+"002869D1002016B010BDDFF8440300904868019004F524\n" 
+"5014300290DFF8380307904FF4C0500390DFF830030490\n" 
+"4FF4C0500590DFF82803069000A940F2012004F0BCFF04\n" 
+"F52451086004F5245000680028D7D040E0042804D10220\n" 
+"8DF82000692003E001208DF82000F19403106082000020\n" 
+"09904FF4C0500A90DFF8E4020B9006208DF8300000208D\n" 
+"F83100C020ADF8320000200D900E904FF4C0500F90DFF8\n" 
+"C402109006208DF8440000208DF845004FF48070ADF846\n" 
+"00002012901390DFF89C02149008A94FF4C06004F07AFF\n" 
+"04F52451086004F524500068002895D04FF48072042104\n" 
+"F52450006804F0A5FFDFF878024FF4C0510160DFF87002\n" 
+"4FF48071016004E0FD21DFF86802FEF76FFE04F5245000\n" 
+"6800283FF478AF012016B010BD38B5044600256D1C0122\n" 
+"00A904F52450006804F098FF012803D19DF80000802802\n" 
+"D1102DEFDB31BD012200A904F1080008F005FB31BD00BF\n" 
+"10B5A0B00446FFF7DFFF802200A904F52450006804F07B\n" 
+"FF012805DB82B200A904F1080008F0EFFAFFF76BFE43F2\n" 
+"4851095901F57A718142E7D20022032104F52450006804\n" 
+"F04CFF43F24C5000210153FFF757FE43F248510851D6E7\n" 
+"30B585B004460D4643F24450005D20B14FF4B4716948FE\n" 
+"F70FFE43F2445001210155FFF740FE43F24851085143F2\n" 
+"4C500021015329462046FFF7DAFE20B940F26F115E48FE\n" 
+"F7F8FD5348002100220B460EC00394022002904FF44060\n" 
+"019004F5245044300090564B5A22564904F52450143008\n" 
+"F037FD05B030BD11F1010F05D00A464FF4C4714D48FEF7\n" 
+"20BE704780B54FF4C8714948FEF7CFFD002002BD2DE9F0\n" 
+"4182B004460D46904600274146606800F52450006804F0\n" 
+"17FE06E0434632464FF4D4713D48FEF74BFE4246294660\n" 
+"6800F52450006804F03AFF0646464517D0002EEBD4B045\n" 
+"E9DB062F13D30B2001F080FF28B13346424633490B2001\n" 
+"F089FF0095434632464FF4D7712C48FEF772FEBDE8F381\n" 
+"A8EB060875197800801D01F010FD7F1C43F24C50616840\n" 
+"5A401C43F24C5162688852C8E740F2C1111F48FEF77BBD\n" 
+"08461146FEF777BD0029406800F524501CBF001D08F05F\n" 
+"BC001D08F07DBC006804F08FFE13490968081A02BD1248\n" 
+"006870474FF0FF307047074C0325206800B18047241D6D\n" 
+"1EF9D131BD7C258900248089007C4E890070F588008425\n" 
+"890018628600DD830F00EB5E82007CF588007C0D890068\n" 
+"F588006CF588003C628600F76082005062860068628600\n" 
+"10B5174C204608F0B9FC04F10C0008F0E3FC04F1180008\n" 
+"F058FD04F1240008F0D0FD104A0FF20D012046BDE81040\n" 
+"08F097B90000704710B5FFF7C9FD0446084908F061FB08\n" 
+"49204608F05DFB0749204608F059FB06492046BDE81040\n" 
+"08F053BB50858900248089005C85890068858900748589\n" 
+"00F0B50E4681B0044617461D46F19403A0638200302103\n" 
+"F0E5FE11496774207C097808432074089884F8250006B1\n" 
+"2662079806994018C008C000002140F8501D4FF0807141\n" 
+"6407490164C5646FF002014162606001B02046BDE8F040\n" 
+"01F0DBBB85888900937782002DE9F04104460E004FF000\n" 
+"08454618D0206847007F08C00F0BD12DB94FF46871DFF8\n" 
+"B008FEF7B8FC606840EA0800386004E001253868616801\n" 
+"EA00080834761EE6D1BDE8F081DFF890281268DFF88C38\n" 
+"1B7838B142F08000DFF87C28106041EA030007E033EA01\n" 
+"0004D122F08001DFF868281160DFF8641808707047DFF8\n" 
+"58381B6820B141EA0300DFF84C1830E0107800281FBF40\n" 
+"1E10701078002804D123EA0100DFF8341808607047DFF8\n" 
+"343853F831301B6850B1DFF8280800EBC10040681843DF\n" 
+"F81C3853F8311011E01078401E1070107858B9DFF80808\n" 
+"00EBC100406823EA0000DFF8F82752F831100860704708\n" 
+"601078401C1070704710B50C460028DFF8E00700783AD0\n" 
+"88BB02E00A20FEF734FADFF8D4070068C003F7D5DFF8CC\n" 
+"07006880088000DFF8C4170860DFF8C007006840F00100\n" 
+"DFF8B8170860DFF8B407006840084000DFF8AC17086002\n" 
+"E00A20FEF713FADFF8900700680004F7D5DFF894070068\n" 
+"20F00200DFF888170860DFF8740700782043DFF86C1708\n" 
+"7010BDA043DFF8601708700878B8B9DFF86807006840F0\n" 
+"0300DFF85C170860DFF85407006840084000DFF8481708\n" 
+"60DFF84007006840F00300DFF83417086010BD0B380628\n" 
+"0FD8DFE800F0040F151B040F1500DFF828074FF4E04209\n" 
+"03036823EA0202114301607047DFF810074FF4E0220904\n" 
+"F3E7DFF804074FF4E0020905EDE7DFF8FC064FF0E06209\n" 
+"06E7E7F8B504460D461F2D00F2BE80DFE805F0101418BC\n" 
+"BCBCBCBCBCBC1E26262626494949497F7F9393A8A8A8A8\n" 
+"A8A8A8AEAEDFF8C426002106E0DFF8C026012102E0DFF8\n" 
+"BC260221BDE8F8402AE70821FFF7F6FEDFF8B026102120\n" 
+"4684E000260827DFF8A406007828B940F2B941DFF85C06\n" 
+"FEF78EFBDFF890060078052806D110212046FFF7DCFE01\n" 
+"264FF4807724B1002231462846FFF78EFFDFF870263946\n" 
+"204661E0DFF864060078052805D040F2D741DFF81806FE\n" 
+"F76CFB10212046FFF7BFFEFCB10B3D062D1CD8DFE805F0\n" 
+"130E0904130E0900DFF81C064FF0E0610DE0DFF810064F\n" 
+"F4E00108E0DFF804064FF4E02103E0DFF8FC054FF4E041\n" 
+"026822EA01010160DFF808264FF4807120462BE0DFF800\n" 
+"060078062805D040F2E941DFF8AC05FEF736FB20210020\n" 
+"FFF789FEDFF8E42520212046F194033067820017E0DFF8\n" 
+"D8050078072805D040F2F541DFF88405FEF722FB202120\n" 
+"46FFF775FEDFF8BC254FF40071204602E0DFF8B4254021\n" 
+"BDE8F84083E6DFF8AC05006820F0F850002C12BF40F000\n" 
+"4040004008DFF898150860F1BD80B5DFF8440500210170\n" 
+"DFF844050170DFF870050170DFF870050170DFF8700501\n" 
+"70DFF848050170DFF848050170DFF844050170DFF84405\n" 
+"0170DFF840050170DFF844050170DFF84C05017001F015\n" 
+"F8DFF848054078401CDFF8401548701621DFF83C05FFF7\n" 
+"03FEDFF82C05012101704FF0C870FEF7AEF8DFF8200540\n" 
+"78401EDFF8181548704878002804BFBDE8014000F0EDBF\n" 
+"01BD10B5044600F0EEFFDFF8F8044078401CDFF8F01448\n" 
+"70601E022807D9C01E01286DD9801E012840F29380BCE0\n" 
+"DFF8D0040078844200F0BD800821DFF8D004FFF7CBFD01\n" 
+"2C19D10621DFF8C404FFF7C4FDDFF85C040068DFF85C14\n" 
+"0978FE22114204D120F08000DFF84814086001210020FF\n" 
+"F72FFE4FF0C87036E0022C1BD1DFF83004006840F08000\n" 
+"DFF824140860DFF82404007840F00100DFF81814087004\n" 
+"21DFF87004FFF798FD01210020FFF711FE4FF0487018E0\n" 
+"01210120FFF70AFE0421DFF85404FFF788FDDFF8E40300\n" 
+"68DFF8E4130978FE22114204D120F08000DFF8D0130860\n" 
+"DFF83404FEF729F80621DFF83004FFF771FDDFF8080404\n" 
+"7059E0042C06D10621DFF81C04FFF766FD082106E00621\n" 
+"DFF81404FFF75FFD4FF48071DFF8C8030470DFF8C40300\n" 
+"78002841D1DFF880030068DFF87C231278EF231A4204D1\n" 
+"20F08000DFF868231060DFF8A02326E0062C06D10621DF\n" 
+"F8D403FFF73DFD202106E00621DFF8C803FFF736FD4FF4\n" 
+"0071DFF87C030470DFF87C030078C8B9DFF830030068DF\n" 
+"F82C231278DF231A4204D120F08000DFF818231060DFF8\n" 
+"58230020FFF758FD05E040F25661DFF80003FEF7DFF9DF\n" 
+"F850034078401EDFF8481348704878002804BFBDE81040\n" 
+"00F005BF10BD10B5044600F006FFDFF828034078401CDF\n" 
+"F82013487021460120FFF7F9FDB24850F834000068B049\n" 
+"01EBC40149680843AD4951F834100860DFF8F802407840\n" 
+"1EDFF8F01248704878002804BFBDE8104000F0DABE10BD\n" 
+"10B5044600F0DBFEB5484078401CB3494870002C1CBF01\n" 
+"2C022C0CD09D4850F8340000689B4901EBC40149688843\n" 
+"984951F83410086021460020FFF7BEFDA7484078401EA6\n" 
+"4948704878002804BFBDE8104000F0AEBE10BDAD48AD49\n" 
+"0F2250F8043B41F8043B521EF9D1704738B5A74C00F0A5\n" 
+"FE9A484078401C98494870F19403C06A82008548002101\n" 
+"7016219648FFF793FC9348007828B19148007890490022\n" 
+"0A7000E00120FFF79BFE8748007818B185480078FFF794\n" 
+"FE8548007818B184480078FFF78DFE8448007860B10020\n" 
+"8DF8000000A86E49096841F040016C4A11600178491C01\n" 
+"7077480078C0B100208DF800006748006840F080006549\n" 
+"08606548007840F008006349087000A86049096841F010\n" 
+"015E4A11600178491C01707E480F217E4D16E0624A9442\n" 
+"07D112687C4B1A4003682B401A435D4B0AE05D4A944208\n" 
+"D1126822F0E062036803F0E0631A43584B1A6050F8042B\n" 
+"44F8042B491EE2D160484078401E5F494870487808B900\n" 
+"F023FE31BD70B504460D4658480668F00348BF00F037F8\n" 
+"B00305D55448006820F400305249086063480068634908\n" 
+"40290401F4E0210843210201F4E06108435F4908435C49\n" 
+"08604948006840F03C004749086070BD3248006840F006\n" 
+"00304908604248006840F4403009E02D48006840F00100\n" 
+"2B4908603D48006820F440303B49086070472648006840\n" 
+"F00100244908603648006820F48030F1E710B5044600F0\n" 
+"D9FD34484078401C32494870002C4448006812BF40F003\n" 
+"0080088000404908602C484078401E2B49487048780028\n" 
+"04BFBDE8104000F0B8BD10BD3A484FF0FF310160394800\n" 
+"68C00CC00440F4802040F45F30354908603548006840F0\n" 
+"070033490860704700283248006814BF40F0040020F006\n" 
+"002E49086070470000CC66860040000B408C888900D866\n" 
+"86008D8889000C000B4010000B40E80F0B4014000B405C\n" 
+"000B4060000B4091888900928889009388890094888900\n" 
+"958889008E888900968889008F8889009088890044000B\n" 
+"40978889001C278800D867860048698600B8698600E869\n" 
+"8600086A860000E1F5058869860088688600B8688600E8\n" 
+"6886001869860050000B40105D890000707700FF8F88FF\n" 
+"48000B40FFF8F8FF0010101180000B4068000B4078000B\n" 
+"407C000B4070000B4030B40023DFF874482568A84224BF\n" 
+"656885420BD30B6003EB8301C900DFF85C38C958401A10\n" 
+"60012030BC70475B1C2834022BE9D3002030BC704738B5\n" 
+"DFF840080068DFF840180860DFF83C0800684860DFF838\n" 
+"0800688860DFF834080068C860DFF8300800680861DFF8\n" 
+"2C080068DFF82C180860DFF8280800684860DFF8240800\n" 
+"68DFF824180860DFF82008006848600024DFF81C58287A\n" 
+"00F00300032804BFA87A03281FD1204600F0A0FA012807\n" 
+"D1052029894FF69B72114041F0200106E0042029894FF6\n" 
+"9F72114041F044012981F19403506E8200E8722889C0F3\n" 
+"001028B12889C0F34111204602F02FFE641C0C35242CD3\n" 
+"DB002032BDF0B583B00520FFF7B8FD0620FFF7B5FDDFF8\n" 
+"7C07DFF87C1709680160DFF874074068DFF870170860DF\n" 
+"F868078068DFF868170860DFF85C07C068DFF860170860\n" 
+"DFF850070069DFF858170860DFF8740710210160202101\n" 
+"60DFF84C074FF0FF310160DFF848071F210160DFF85807\n" 
+"4FF0FF310160DFF854071F210160DFF85007DFF8341709\n" 
+"680160DFF82C074068DFF840170860DFF84007DFF81C17\n" 
+"0968C9430160DFF810074068C043DFF82C1708600024DF\n" 
+"F80857287AC00703D5E97A204600F085F8641C0C35242C\n" 
+"F4DBDFF8D806DFF8D81609680160DFF8D0064068DFF8CC\n" 
+"160860DFF8F806DFF8C0160968C9430160DFF8B4064068\n" 
+"C043DFF8E4160860DFF8C4060068DFF8C0160968DFF8D8\n" 
+"26126802F00F02DFF8D0361B6803F00F03DFF888462468\n" 
+"E443204201BFDFF87C064068C043014241D11A423FD100\n" 
+"24DFF8AC06017801F00B010B2933D101A900AA0025DFF8\n" 
+"34663768BC4224BF7768A74204D26D1C2836022DF5D308\n" 
+"E0156005EB8502D200DFF814565259A21A0A600099DFF8\n" 
+"702652F821100122019B9A401143009ADFF85C3643F822\n" 
+"100099243149B24A09DFF85036012501F01F0105FA01F1\n" 
+"43F82210641C0C30242CC2DBDFF83C0610210160202101\n" 
+"60002003B0F0BDFCB400EB4002DFF8E83503EB820200AB\n" 
+"01AC0025DFF8A4653768B84224BF7768874204D26D1C28\n" 
+"36022DF5D308E0256005EB8504E400DFF884556459001B\n" 
+"18601068DFF8EC3518404B1E022B06D9DB1E07D05B1E08\n" 
+"BF40F4404004E040EAC10001E040F400401060019901EB\n" 
+"8102DFF84C1501EBC201496A009A41F82200F3BC704710\n" 
+"B5DFF8AC050468FEF796FEDFF8A41508600868001B1528\n" 
+"05D2DFF89805BDE8104007F0ACBF10BD80B5DFF8440510\n" 
+"210160202101600520FFF777FC0620FFF774FCDFF81005\n" 
+"4FF0FF310160DFF810051F210160DFF820054FF0FF3101\n" 
+"60DFF818051F2101604FF4D871DFF8000503F01EF8DFF8\n" 
+"2C050021016041601622DFF83815DFF83005BDE8084007\n" 
+"F06CBF80B5DFF82C05FEF747F9DFF81005102101602021\n" 
+"016001BD7CB431B300AA01AB0024DFF888542E68B04224\n" 
+"BF6E68864204D2641C2835022CF5D316E01C6004EB8403\n" 
+"DB00DFF864441B59C31A13600A78022ABCBF4A78062A07\n" 
+"DA8A78032ABFBFCA78092A0A79062A00DBD1E000EB4002\n" 
+"DFF86C0400EB820000220B7803B901224B785B1E022B06\n" 
+"D9DB1E08D05B1E08BFF19403E071820042F4404205E04B\n" 
+"7842EAC30201E042F400428B78012B08BF42F0060203D0\n" 
+"022B08BF42F00202CB78082B1CBF43F0080342EA43124B\n" 
+"790BB142F400528B790BB142F480520B7942EA43220260\n" 
+"019B03EB8304DFF8C83303EBC4035B6A009C43F824204A\n" 
+"78012A06D0022A0CD0042A02D0052A08D010E004220389\n" 
+"4FF69F74234043F0440306E0052203894FF69B74234043\n" 
+"F02003038105E002894FF69F731A4002810022C2724A78\n" 
+"827202894FF6F5731A40019BDFF8844354F82330009C04\n" 
+"F01F04E34003F0010383F0010342EA4302028189684160\n" 
+"018941F00101018152E07CB471B100AA01AB0024DFF830\n" 
+"532E68B04224BF6E68864204D2641C2835022CF5D33DE0\n" 
+"1C6004EB8403DB00DFF80C431B59C31A136000EB4002DF\n" 
+"F8340300EB8200019A02EB820304EBC302526A009B52F8\n" 
+"232002F0010383F001030B70837A4B70930704D5530754\n" 
+"BF0223012300E000238B70D30546BF530903F00F030823\n" 
+"CB70530B03F001034B71130B03F001038B71520A02F007\n" 
+"020A714068886002E0002076BC7047012076BC70477CB4\n" 
+"002100AA01AB0024DFF884522E68B04224BF6E68864204\n" 
+"D2641C2835022CF5D314E01C6004EB8401C900984BC958\n" 
+"401A1060019800EB800103EBC100C0680068009901F01F\n" 
+"01C84000F00101FFE7084676BC7047FCB4002200AB01AC\n" 
+"00258B4E3768B84224BF7768874204D26D1C2836022DF5\n" 
+"D317E0256005EB8502D200834C1259801A186000290198\n" 
+"00EB800104EBC1000CBF406900690121009A02F01F0291\n" 
+"40016001221046F6BC704700EB4002844B03EB82022428\n" 
+"13D2137ADB0710D50029118906D041F0100111811189C1\n" 
+"F3411104E04FF6EF7319401181002102F03ABB704700EB\n" 
+"4002764B03EB8202242806D2107AC00703D5108961F3C3\n" 
+"001081704730B583B00446002500AA01A9FFF780FCB0B1\n" 
+"04EB44006A4901EB8000018941F002010181019800EB80\n" 
+"01584800EBC100006A0121009A02F01F02914001600125\n" 
+"20E030B583B00446002500AA01A9FFF75FFCB8B104EB44\n" 
+"00594901EB800001894FF6FD7211400181019800EB8001\n" 
+"474800EBC100C0690121009A02F01F0291400160012528\n" 
+"4603B030BD2DE9F04104460F4690460126B84523D307EB\n" 
+"4700484901EB8005287AC00716D5A87AE97A884203D001\n" 
+"463846FFF78BFD686800281FBF2889C0F3400000283442\n" 
+"05D02889C0F3800138466A6890477F1C76000C35B845E0\n" 
+"D2FEF752FC474908604748BDE8F04107F06EBD80B54748\n" 
+"0078401C45490870F194037075820045480078401C4449\n" 
+"08702F4800682E490860384909680843364900220A601F\n" 
+"220021FFF7B2FF3D4810211AE080B539480078401C3749\n" 
+"087037480078401C3649087022480068214908602A4949\n" 
+"680843284900224A6023222021FFF796FF2F4820210160\n" 
+"2B480078401E2A4908702A480078012804D12848406808\n" 
+"B100F0FEF825480078401E2449087001BD3C6586000004\n" 
+"0B40845C890004040B4008040B400C040B4010040B40A0\n" 
+"100B40985C8900A0200B4000100B40A05C890000200B40\n" 
+"CC5A890084E100E080100B4080200B4040100B4040200B\n" 
+"4060100B4060200B40C0100B40C0200B4014200E401020\n" 
+"0E40D45A89007C5C890000E200E004E100E0E73FFFFFA8\n" 
+"5C8900AC5C8900C3708200002C8800868889001C278800\n" 
+"84E200E038B504462148FDF7E7FC0020002103C4083C07\n" 
+"F031FD1E48FDF7DEFC0720FFF7B5F8012007F08BFD07F0\n" 
+"57FD05461948FDF7D2FC012D04D11748FDF7CDFC022005\n" 
+"E0022D07D11548FDF7C6FC01202070FDF735F910E0032D\n" 
+"0ED11148FDF7BCFC00202070FDF72BF907F093FD6060FD\n" 
+"F720F96068FDF7B0FC07F095FD0948FDF7ABFC681E8041\n" 
+"C00F32BD00BF0000770701007707020077070300770704\n" 
+"007707050077070600770734488168002904BF08B008E0\n" 
+"EFF30982A2F12802036882E8F84F83685A6000F069F881\n" 
+"6859B14A6892E8F84F036002F1280282F3098813F47F4F\n" 
+"3FD07047264826490968401A80F308884FF08071C16123\n" 
+"4981617FF0060E704701BC2046DFF884E000BDFEE72048\n" 
+"00681C490968401A203820F0070080F308884FF0000115\n" 
+"48417081F3118862B600F014F8FEE703680CB44FF00001\n" 
+"41704FF0000181F311881249134A0A604FF0800181F311\n" 
+"880CBC036070470D490E4A0A6070474FF0000181F31188\n" 
+"704700BF4FF0800181F31188704700BF1C27880030AA89\n" 
+"009C618600457D82009D7782000040820004ED00E00000\n" 
+"001070B5DFF8B8440020607001202070606B50B1FFF7DF\n" 
+"FF606B8047FFF7D5FF00206063E06284F83000A0680028\n" 
+"1CBF816A002904D009680A001CBF4068884794F8290000\n" 
+"2846D0A06894F8281080F82410207900283ED0FFF7BDFF\n" 
+"A56800202071FFF7B2FF002D1CBF2E68002E30D0687C71\n" 
+"7C81422CD100E00E463168A1B14A7C824211D10E463168\n" 
+"71B14A7C82420BD10E46316841B14A7C824205D10E4631\n" 
+"6811B14A7C8242E7D0FFF794FF28682169A94208BF2061\n" 
+"E9690860C161EE613068286000B1C561356096F8250086\n" 
+"F82400FFF77AFFF1940300798200206928B303E0286820\n" 
+"61FFF773FFFFF777FF2569F5B12E7CE6B170070ED5E868\n" 
+"216A411A012905DA284600F0D0F8287C20B90DE0616A41\n" 
+"1A48BF606206F0FB001028E0D1A86880684068007C0028\n" 
+"DAD1FFF756FF607960B92069002800F07F802069007C00\n" 
+"28206967D080688068406863E000206071206AE16900F1\n" 
+"8040606208001CBF20468847FFF734FFE56812E0012060\n" 
+"71607808B9FFF72CFFFFF730FF287C0028D6D0E868616A\n" 
+"411A48BF6062FFF720FF2D68002DCAD0FFF721FF206920\n" 
+"B1687C2169497C8842C3D3287C4007EED5E868216A401A\n" 
+"0128E4DAA86840B1216AE9600168406801B14860016000\n" 
+"20A860287C10F003002874CFD1206980B1697C427C8A42\n" 
+"0CDBA8420BD09142C5D12A461268002ABDD0537C9942BA\n" 
+"D18242F7D1256120780028B2D1012020702046FFF7C9FE\n" 
+"00202070ACE7A060A068816A21B149680A001CBF406888\n" 
+"47A06890F8240084F8280084F82900204670BD84F82900\n" 
+"84F82800A0602070FFF7C3FE204670BDDFF87402407800\n" 
+"2808BFFFF7BABE704710B5DFF860422078401E2070C0B2\n" 
+"98B9606888B1FFF7B3FE606830B1012020702046FFF78F\n" 
+"FE002020706078002804BFBDE81040FFF79DBE10BD8168\n" 
+"0A68496802B151600A6000218160704730B581B0816884\n" 
+"4C41B1226AC2600A68496802B151600A6000218160017C\n" 
+"11F00301017427D1216999B92061207838B90120207020\n" 
+"46FFF75FFE0020207001E0012060716078B0B901B0BDE8\n" 
+"3040FFF76ABE427C4B7C9342E7DB8142E6D09A4209D103\n" 
+"461B68002BECD05D7CAA42E9D18B42F7D1D9E701B030BD\n" 
+"30B5674C81B02169A9B92061207838B9012020702046FF\n" 
+"F732FE0020207001E001206071607820B901B0BDE83040\n" 
+"FFF73DBE01B030BD427C4B7C9342E5DB8142E4D09A42EE\n" 
+"D103461B68002BEAD05D7CAA42E7D18B42F7D1D7E730B5\n" 
+"504C2178054681B0687C491C217004F10C0100E011460A\n" 
+"68A2B1537C984211DA11460A6872B1537C98420BDA1146\n" 
+"0A6842B1537C984205DA11460A6812B1537C9842E7DB2A\n" 
+"60E9610D6042B1D561517C81420CBF95F82500002085F8\n" 
+"2400287C40B9FFF7FBFD2846FFF75FFF607808B9FFF7EE\n" 
+"FD2078401E2070C0B298B9606888B1FFF7EBFD606830B1\n" 
+"012020702046FFF7C7FD00202070607820B901B0BDE830\n" 
+"40FFF7D5BD01B030BDC16902680A60016809B1C069C861\n" 
+"704730B5214C2578681C207081B02046FFF7ABFD607825\n" 
+"7020B901B0BDE83040FFF7BABD01B030BD00B581B007F0\n" 
+"E6FA16480121F19403907C8200017001B000BD30B5134C\n" 
+"81B0216A0D18207830B1FFF7A6FD206A401BFCD401B030\n" 
+"BDFFF7A5FDA068C5600421A06801742578681C20702046\n" 
+"FFF77DFD6078257020B901B0BDE83040FFF78CBD01B030\n" 
+"BD01498968886270471C278800704780B5FFF786FD1448\n" 
+"4078401C1349487007F0C7FAFCF731FF10F1010F00D1FE\n" 
+"E70F480F49016000200F49E02201F8012B401C8028FADB\n" 
+"FCF76AFF07484078401E064948704878002804BFBDE801\n" 
+"40FFF75ABD01BD000030BFFDE71C27880008ED00E00040\n" 
+"820000E400E070B504460D46DFF86C0506F003FFDFF868\n" 
+"0590F82400002861D1002D5FD0DFF85805C069DFF85015\n" 
+"096A884233D3DFF848058069DFF84015C969401A2E4685\n" 
+"4288BF064632462146DFF82C05C06902F0A3FADFF82405\n" 
+"C06A3018DFF81C15C862C8693018AD1B3419896988420C\n" 
+"D1DFF808054069DFF80015096A814204D1DFF8F8140122\n" 
+"81F82420DFF8EC14C86135B391F8240018BBDFF8E00480\n" 
+"6ADFF8D814C96A401A854288BF05462A462146DFF8C804\n" 
+"C06902F070FADFF8BC04C06A2818DFF8B414C862C86928\n" 
+"18C861C869096A884204D1DFF8A004012180F82410DFF8\n" 
+"9404BDE8704006F0B6BEDFF89014012007F02ABA2DE9F0\n" 
+"438FB00446894690461D4602A8DFF87814092202F055FA\n" 
+"05A8DFF87014222202F04FFAFDF7C2FF0026DFF85414C9\n" 
+"7939B9DFF84C144979A1422DD00A212970012604F00701\n" 
+"02AA89560191DFF84414B0FBF1F1DFF83C2402FB110000\n" 
+"90E00805A94356DFF81C048279DFF82814701907F00FFA\n" 
+"0746002F04D5C521DFF81C04FCF75DFFBE19DFF8F80300\n" 
+"21C1718079401CDFF8EC13887143464A46C6F1B4017019\n" 
+"07F010FA070004D5CC21DFF8EC03FCF745FF3E44B52E0B\n" 
+"D3B32695F8B30020B1D621DFF8D403FCF739FF0A2085F8\n" 
+"B200284607F015FA40B1401910F8010C0A2803D1DFF89C\n" 
+"030121C171DFF89403447130460FB0BDE8F083F8B50446\n" 
+"0D0016465AD0DFF8780306F009FEDFF87403806ADFF86C\n" 
+"13C96A471A332FDFF8640329D38069DFF85C13C969401A\n" 
+"B52828BFB42F10D30B46324629462046FFF75FFFDFF840\n" 
+"13C9694118DFF83823D161D16A4018D06213E0DFF84433\n" 
+"324629462046FFF74DFF01468F4204D3DFF83003FFF7CC\n" 
+"FE04E0C3488079401CC1498871C048C06858B14FF48071\n" 
+"C64800F0E2F878B10146C348BB4AD268904709E0B94800\n" 
+"7A30B1C048FDF741FFB749012007F051F9B348BDE8F240\n" 
+"06F0D3BDF1BD30B589B0B0480121017401E0FDF75BFF01\n" 
+"2007F0B4F9F194032080820014E0FDF764FF014602A807\n" 
+"F0F3F9014600A807F07EFB2246AD4907F0A3FB002102A8\n" 
+"07F0D8F902A8C046C046FDF713FF0446FDF70AFF8442DD\n" 
+"D39C4806F086FDA34C9B48C56A65B380699949096A401A\n" 
+"B0F5807F88BF4FF48070854288BF05462A46204602F034\n" 
+"F99148C06A401B9049C862C5F580718E48006A28182C19\n" 
+"8C4A9269904204BF8A484069894A10621046002280F824\n" 
+"2089B2204600F071F8441900E00024814806F072FDA4B2\n" 
+"002CA8D18848FDF7EBFEA0E700B583B07C480121C17100\n" 
+"21818001608171784806F024FD764806F03BFD76480021\n" 
+"41618161C161016280F824108162C162704806F04FFD02\n" 
+"2002904FF40070019077480090774B642277496B48FEF7\n" 
+"35F903B000BD6849086070476649087170476548006870\n" 
+"476348007970476249097900F00702D14001F001015E4A\n" 
+"1268C00822FA00F000F00100084070470CB438B504460D\n" 
+"46FFF7EAFF20B104AA29462046FFF7E5FE31BC5DF80CFB\n" 
+"70B504460D461646FFF7DBFF28B1324629462046BDE870\n" 
+"40D4E670BD70B504460D004A48C66A18BF002E01D10020\n" 
+"70BD80694649096A401A854238BF2846864288BF064632\n" 
+"46204602F090F83F48C06A801B3E49C862AD1B086A3018\n" 
+"08623419086A8969884202D13848416901623748002180\n" 
+"F82410A9B22046FFF7CFFF801980B270BD10B504463048\n" 
+"007CF0B12E4806F0AAFC2D48007A844212D0002C2B4808\n" 
+"D0407C58B1294800214174284807F0F3FC04E001214174\n" 
+"254807F0CDFC234804722148BDE8104006F0AFBC10BD70\n" 
+"B505460E4600241C4806F086FC4DB91B4844618461C461\n" 
+"046280F824408462C46224E040F2FE708542B8BF4FF4F9\n" 
+"711ADBBEB129463046FFF789FF10494E61A9190E4A9161\n" 
+"8119D161166200219562D062A84204BF0121D661084880\n" 
+"F82410012404E040F20E210B48FCF766FD024806F074FC\n" 
+"204670BD0000C0298800DC278800D0298800A0618600AC\n" 
+"61860080969800D0618600E06186000C288800C0288800\n" 
+"437E8200002A88000B808200EC618600074607F0CAFC38\n" 
+"4607F0EAFCFBE750F8041B61B150F8042BD30744BFA9F1\n" 
+"01039A18002342F8043B091FFAD1EFE7704713F0004C03\n" 
+"D55B42524263F100039CEA210C00F0178010B5644603D3\n" 
+"4942404261F1000100F00EF8640004D34942404261F100\n" 
+"01244203D55B42524263F1000310BD00001B4213D10942\n" 
+"36D12AB18446B0FBF2F002FB10C2704707F0B3BCFCD300\n" 
+"22002370470B000200002100207047904271EB030CF6D3\n" 
+"70B5B1FAF19403B083820081F4B3FA83F52C1BA340C4F1\n" 
+"200532FA05F63343A2405FF00046E64002E05B085FEA32\n" 
+"02841A71EB030524BF204629467641F4D302000B003000\n" 
+"002170BD012ACFD970B5140C20D0B1FA81F4B2FA82F5C4\n" 
+"F120046419B4F12006D6D3B2405FF00044F440002502E0\n" 
+"52085FEA3303C61A71EB020E24BF3046714664416D41F3\n" 
+"D302000B002000290070BD0C46B1FBF2F102FB11452D04\n" 
+"45EA1045B5FBF2F402FB145580B240EA0545B5FBF2F002\n" 
+"FB105240EA044070BD10B450F8041B81B102681218001D\n" 
+"50F8043BDC0744BFA9F10104E31852F8044B43F8044B09\n" 
+"1FF9D1EBE710BC7047002100EB4002DFF88C38D25C3AB1\n" 
+"022A0BD007D3032A08BFDFF87C1807E0DFF87C1804E0DF\n" 
+"F8781801E0DFF81C1900EB4000C0184078401E01EB4010\n" 
+"704738B507F012FC0024DFF804591BE0002C1CBF012C02\n" 
+"2C16D0287800F00600022811D12046FFF7CDFF696821F0\n" 
+"80018160204600F0B2F92046FFF7C3FF4068E860204600\n" 
+"F08DF8641C2035102CDFDB002032BD2DE9F04180460025\n" 
+"DFF8B06823E0002D18BF012D1FD0022D1CBF706800281A\n" 
+"D03078C0F38000B0B977682846FFF7A0FF0446284600F0\n" 
+"46F827F08000A060284600F082F9B06820603078C0F340\n" 
+"0010B147F08000A0606D1C2036102DD7DB404607F0F3FB\n" 
+"0020BDE8F08138B54FF40071DFF8480801F0EAFDDFF844\n" 
+"0800210160DFF840081021012590F900205309DFF83848\n" 
+"02F01F0205FA02F244F8232010F9032B5309DFF8244802\n" 
+"F01F0205FA02F244F82320491EE7D1DFF81408BDE83240\n" 
+"FCF700BF002800D5704710B500EB4000DFF83017445CDF\n" 
+"F8E807205C78B92CB1022C07D004D3032C06D008E00920\n" 
+"04E0172002E0182000E01920FEF7E5F9DFF8C007205C40\n" 
+"1CDFF8B817605410BD00281DD400EB4000DFF8EC16405C\n" 
+"DFF8A017415C491EDFF898278154815C79B928B1022807\n" 
+"D004D3032806D07047092004E0172002E0182000E01920\n" 
+"FEF7E8B9704738B50446102C05DB40F29511DFF87407FC\n" 
+"F782FBFDF7C6FB05466001DFF84C17405CC0070BD46001\n" 
+"405C40F001006101DFF8382788542046FFF79CFF01E04F\n" 
+"F0FF34284680F31088204632BD2DE9F84380460F461446\n" 
+"9946DFF8100700EB48152878C00705D440F2C511DFF818\n" 
+"07FCF753FB4046FFF7D4FE064624F08000B060404600F0\n" 
+"B9F837600898A8610020C5E90400AF606C60B9F1000F08\n" 
+"EB4800DFF8141606D0401890F902004109DFF8D82605E0\n" 
+"401890F902004109DFF8BC26012300F01F0003FA00F042\n" 
+"F82100F1940340878200B460287800F0FD00E10901F001\n" 
+"0140EA41002870BDE8F183DFF8841601EB4011002200EB\n" 
+"4003DFF8C0C513F80C306BB1022B05D007D3032B0AD1DF\n" 
+"F8B02507E0DFF8582604E0DFF8AC2501E0DFF8A02500EB\n" 
+"40006044407802EB401050F8182D42F080020260087840\n" 
+"F002000870704738B50446DFF8280600EB44152046FFF7\n" 
+"69FE50F8081F21F080010160204600F04DF8287800F0FD\n" 
+"00287031BD70B4002400EB4005DFF84065AD5D6DB1022D\n" 
+"05D007D3032D0AD1DFF8344507E0DFF8DC4504E0DFF830\n" 
+"4501E0DFF8244500EB40039B195B785B1E04EB4313DFF8\n" 
+"C44504EB4010826019609A6170BC7047002100EB4002DF\n" 
+"F8F434D25C6AB1022A05D007D3032A0AD1DFF8E41407E0\n" 
+"DFF8901504E0DFF8E01401E0DFF8D81400EB4000C01840\n" 
+"7801EB401050F81C0C704710B4DFF8B844002200EB4003\n" 
+"1B5D6BB1022B05D007D3032B0AD1DFF8A42407E0DFF84C\n" 
+"2504E0DFF8A02401E0DFF8942400EB40010919497802EB\n" 
+"4111012241F8142C002200EB40031B5D6BB1022B05D007\n" 
+"D3032B0AD1DFF8682407E0DFF8102504E0DFF8642401E0\n" 
+"DFF8582400EB40010919497802EB411151F8101C0029C2\n" 
+"D100EB4000001990F902004109DFF8F424012300F01F00\n" 
+"03FA00F042F8210010BC704710B50446DFF8CC0400EB44\n" 
+"11D1E90423521C43F10003C1E90423886900281EBF0878\n" 
+"C0F34000002802D02046896988472046BDE8104092E780\n" 
+"B5DFF8B4040078401CDFF8AC140870DFF8AC040078401C\n" 
+"DFF8A414087000200FE080B5DFF894040078401CDFF88C\n" 
+"140870DFF888040078401CDFF8801408700120FFF7C1FF\n" 
+"DFF870040078401EDFF868140870DFF868040078012805\n" 
+"D1DFF85C04406808B1FEF71EFFDFF850040078401EDFF8\n" 
+"4814087001BD80B5DFF83C040078401CDFF834140870DF\n" 
+"F830040078401CDFF8281408700220D2E780B5DFF81804\n" 
+"0078401CDFF810140870DFF810040078401CDFF8081408\n" 
+"700320C1E780B5DFF8F8030078401CDFF8F0130870DFF8\n" 
+"EC030078401CDFF8E41308700420B0E780B5DFF8D40300\n" 
+"78401CDFF8CC130870DFF8CC030078401CDFF8C4130870\n" 
+"05209FE780B5DFF8B4030078401CDFF8AC130870DFF8A8\n" 
+"030078401CDFF8A013087006208EE780B5DFF890030078\n" 
+"401CDFF888130870DFF888030078401CDFF88013087007\n" 
+"207DE780B5DFF870030078401CDFF868130870DFF86403\n" 
+"0078401CDFF85C13087008206CE780B5DFF84C03007840\n" 
+"1CDFF844130870DFF844030078401CDFF83C1308700920\n" 
+"5BE7F19403D08A820080B5DFF82C030078401CDFF82413\n" 
+"0870DFF820030078401CDFF8181308700A204AE780B5DF\n" 
+"F808030078401CDFF800130870DFF800030078401CDFF8\n" 
+"F81208700B2039E780B5BA480078401CB8490870B84800\n" 
+"78401CB74908700C202CE780B5B3480078401CB2490870\n" 
+"B2480078401CB04908700D201FE780B5AD480078401CAB\n" 
+"490870AB480078401CAA4908700E2012E780B5A6480078\n" 
+"401CA5490870A5480078401CA3490870A349D1E9042352\n" 
+"1C43F10003C1E90423886900281EBF0878C0F340000028\n" 
+"02D00F20896988470F20FFF764FEF2E691484FF0805101\n" 
+"609748002101609648016096480F2101608C484FF08051\n" 
+"0160704738B59348016893480068FDF7EDFFFEF713F891\n" 
+"480468914800688505AD0D90480068854203D08C480468\n" 
+"8D480560FEF70EF8002200211019694134BD1CB5894B1B\n" 
+"6813B16FF0010016BD874B1A6002F043F804467E480168\n" 
+"7E480068FDF7C4FFFDF7EAFF7C480068210901EB101080\n" 
+"018009744908606C484FF0805101607248012101607748\n" 
+"0160FDF7E1FF69484FF080510160002016BD7248006800\n" 
+"B9704780B560484FF0805101606948016869480068FDF7\n" 
+"99FFFDF7BFFF634800210160684801606848016060480F\n" 
+"210160FDF7BEFF55484FF08051016001BD10B504465048\n" 
+"4FF0805101605748002101605D480160564804605C4800\n" 
+"6828B15A4800688047594800210160504800682042FBD1\n" 
+"10BD80B548480078401C4749087047480078401C454908\n" 
+"700120FFF7D7FF3E484FF08051016045E680B53F480078\n" 
+"401C3D4908703D480078401C3C4908700220FFF7C4FF34\n" 
+"484FF00051016032E60000746D860000800C4000900B40\n" 
+"00A00B4080B531480078401C2F4908702F480078401C2E\n" 
+"49087027484FF0805101602E4800210160334801602C48\n" 
+"042101603248006828B13048006880472F480021016026\n" 
+"4800684007FBD41B484FF08041016000E680B51C480078\n" 
+"401C1B4908701B480078401C1949087012484FF0805101\n" 
+"601948002101601F4801601848082101601D48006828B1\n" 
+"1C48006880471A4800210160124800680007FBD407484F\n" 
+"F000410160D7E500700C40604D8800DC758900766D8600\n" 
+"80E100E080E200E0482C8800686D860000E100E0868889\n" 
+"001C278800404F88000C200E4010200E4014200E40142C\n" 
+"8800102C880000200E4004200E40E4758900E0758900E8\n" 
+"758900F8B506460C46FCF7DEFF07464FF4CC61DFF80C0B\n" 
+"07F014F8DFF8085BDFF8080B28606C6006F12800A86030\n" 
+"68F19403608E8200E86056F8040F286156F8040F686256\n" 
+"F8040FA86256F8040FE86256F8040F286356F8040F6863\n" 
+"56F8040FA86356F8040FE86356F8040F286456F8040F68\n" 
+"6156F8040FA86156F8040FE86156F8040F286256F8040F\n" 
+"686456F8040FA86456F8040FE86456F8040F28656F658C\n" 
+"22DFF8FC1A05F1580001F01CFADFF8780ADFF8F01AC0F8\n" 
+"5C15A868A96CDFF8682A126DDFF8E43A01251D60DFF8E0\n" 
+"5A44F000432B606A60A960E860FCF778FF2861DFF8CC3A\n" 
+"A3A2802105F1140000F0EFBC8169097881708169497881\n" 
+"8081698978C1800321C288002A4ED0D20703D58169C978\n" 
+"017204218279920703D582698A5C4272491C8279520703\n" 
+"D582698A5C8272491C8279120703D582698A5CC272491C\n" 
+"8279D20603D582698A5C0273491C8279920603D582698A\n" 
+"5C4273491C8279520608D582698A5C8273491C8288837B\n" 
+"42EA032282808279120608D582698A5CC273491CC288C3\n" 
+"7B42EA0322C280C288D20503D582698A5C0274491CC288\n" 
+"920503D582698A5C4274491C82698A5C491C13060AD502\n" 
+"F07F0212024282428A8369CB5C1A434282491C00E04282\n" 
+"82698A5C491C13060AD502F07F0212028282828A8369CB\n" 
+"5C1A438282491C00E08282C182828A11FA82F18269895C\n" 
+"017770472DE9F04182B00446002600258DF800502F46FC\n" 
+"F7DEFE804600A801F0CBFA00286AD09DF80000112818BF\n" 
+"132872D036B1012E08D0132E0CD0162E17D05CE0B0285A\n" 
+"D1207055E008B960704DE0B02853D051E0B02808BF1626\n" 
+"4ED0B7F50A7F4AD2A0699DF8001039547F1C45E0A0779D\n" 
+"F80000012819D1A069401C0021BA1E07D010F8013B5940\n" 
+"DFF8D839C95C521EF7D10A0942EA01110078C9B281422B\n" 
+"D1012539462046FFF726FF25E0032805D1B7F50A7F20D2\n" 
+"A069B02106E0042808D1B7F50A7F19D2A069112139547F\n" 
+"1C132613E0052808D1B7F50A7F0DD2A069132139547F1C\n" 
+"132608E010B91326002704E0B02801D1012600E00026FC\n" 
+"F76BFE40452FBFA0EB08004FF0FF31A1EB08014018B0F5\n" 
+"FA6F02D8002D3FF47FAF2846BDE8F68130B400232AB3DF\n" 
+"F83C4994F8E8400D786C40DFF82C59645DDFF8285985F8\n" 
+"E8400C78B02C03D11C545B1C03240CE0112C04D1B0241C\n" 
+"545B1C042405E0132C03D1B0241C545B1C05241C545B1C\n" 
+"491C521ED9D1184630BC70472573000080B58DF8001001\n" 
+"2200A9FFF7CBFF02BD2DE9F04104460D461E46AF1C4FF4\n" 
+"0A71304606F055FE812DA8BF7F1CDFF8B808002180F8E8\n" 
+"10B02030707170B170F9B2F01CFFF7DDFFC01C1FFA80F8\n" 
+"F19403F0918200BFB2FF2F0ADDC02108EB0600FFF7D2FF\n" 
+"8044390A1FFA88F0801902E0802108EB0600FFF7C7FF00\n" 
+"EB08070221B8B28019FFF7C0FFC7190021B8B28019FFF7\n" 
+"BAFFC719BFB2812C0BD3200A40F08001C9B2B819FFF7AF\n" 
+"FFC719E1B2B8B2801901E0E1B2B819FFF7A6FFC419A4B2\n" 
+"812D0ADB280A40F08001A019FFF79CFF0419E9B2A0B280\n" 
+"1901E0E9B2A019FFF793FF001980B2BDE8F08170B5DFF8\n" 
+"4807006801280CBFDFF84447DFF8F84704F1140006F057\n" 
+"F8451CEDB2812DA8BF8025DFF8E4372A4605F1150189B2\n" 
+"1820FFF77BFF064604222146DFF88C06301800F54D70FF\n" 
+"F73BFF86190422211DDFF87806301800F54D70FFF731FF\n" 
+"8619042204F10801DFF86406301800F54D70FFF726FF86\n" 
+"19042204F10C01DFF84C06301800F54D70FFF71BFF8619\n" 
+"042204F11001DFF83806301800F54D70FFF710FF861929\n" 
+"46DFF82406301800F54D70FFF735FF86196A1E92B204F1\n" 
+"1401DFF80C06301800F54D70FFF7FBFE84190021DFF8FC\n" 
+"05201800F54D70FFF720FF0419DFF8EC0590F8E8000109\n" 
+"41EA0011C9B2DFF8DC05201800F54D70FFF710FF0019DF\n" 
+"F8CC154118B02281F83423401CDFF8BC154118012281F8\n" 
+"3423411CDFF8F006BDE8704001F04EB9F8B5C18A82698A\n" 
+"18D2788369CB189B781B0443EA02628369CB185B7842EA\n" 
+"03228369CB5C43EA020782698A1852798369CB181B7943\n" 
+"EA0224806908188579B4F5807F88BF4FF48074B4FBF5F0\n" 
+"05FB104018B1B4FBF5F005FB0054DFF88836A2B2E11D89\n" 
+"B22620FFF7CEFE0646F9B2DFF83405301800F54D70FFF7\n" 
+"BDFE86193904090EDFF82005301800F54D70FFF7B3FE86\n" 
+"193902090EDFF80C05301800F54D70FFF7A9FE8619390E\n" 
+"DFF8FC04301800F54D70FFF7A0FE8619E1B2DFF8E80430\n" 
+"1800F54D70FFF797FE86192104090EDFF8D404301800F5\n" 
+"4D70FFF78DFE86192946DFF8C404301800F54D70FFF784\n" 
+"FE86190DE057F8040B0090042200A9DFF8A804301800F5\n" 
+"4D70FFF748FE8619241F012C31DB012D13D0022D02D004\n" 
+"2DE9D01DE037F8020B0090022200A9DFF87804301800F5\n" 
+"4D70FFF731FE8619A41EE7E717F8010B0090012200A9DF\n" 
+"F85C04301800F54D70FFF722FE8619641ED8E72A463946\n" 
+"DFF84404301800F54D70FFF716FE8619EF19641BCBE7DF\n" 
+"F82C0490F8E800010941EA0011C9B2DFF81C04301800F5\n" 
+"4D70FFF731FE8019DFF80C144118B02281F83423401CDF\n" 
+"F800144118012281F83423411CDFF8300501F071F8F1BD\n" 
+"38B50024418A1A295FD0222904D0232904D0242956D0F1\n" 
+"9403809582006CE001246AE0DFF80C35E422E6212520FF\n" 
+"F710FE0546E4208DF8020001220DF10201DFF8B0032818\n" 
+"00F54D70FFF7CCFD45198DF8014001220DF10101DFF894\n" 
+"03281800F54D70FFF7BFFD4519E422DFF88813DFF88003\n" 
+"281800F54D70FFF7B4FD4519DFF8700390F8E800010941\n" 
+"EA00108DF80000012200A9DFF85803281800F54D70FFF7\n" 
+"A1FD4019DFF848134118B02281F83423401CDFF83C1341\n" 
+"18012281F83423411CDFF86C0401F00FF816E0FFF7BEFE\n" 
+"13E00124FBF775F9FBF72FF9FBF72FF9FBF72FF9DFF850\n" 
+"0400210160DFF84C04016002210160FBF74FFA204632BD\n" 
+"30B591B00124DFF83804006820F00600DFF82C140860B7\n" 
+"480460012001F00CFC9CB14FF40024402100A8FEF789FD\n" 
+"050008D0412D06D2294600A800F0A1F9641B012CF0DAFF\n" 
+"F7EFFD00242021DFF8F40306F0E0FB4FF40A71DFF8EC03\n" 
+"06F0DAFBA448DFF8E413C0F80411DFF8D803FFF7ABFC40\n" 
+"B1DFF8CC03FFF747FFF0B19D48002101601EE09B480068\n" 
+"D8B1DFF8BC0300788007C1D501F034FA01280ED0002001\n" 
+"F03BFA00F0DBFF002001F0C5FBFCF73FF901F019F80120\n" 
+"01F02FFA8D4800680028AAD10020006804460420006805\n" 
+"46FBF7F8F8FBF7B2F8FBF7B2F8FBF7B2F8DFF854030021\n" 
+"0160DFF85003016002210160A048006801282946204603\n" 
+"D1FBF7B1FA11B030BDFBF7A2FA11B030BD0221FFF760BB\n" 
+"0321FFF75DBB0421FFF75ABB0521FFF757BB70B50646FC\n" 
+"F736FB05464FF4CC616F4806F06DFB6F4C6F4820600620\n" 
+"606006F12800A0603068E060301D0168216150F8041F61\n" 
+"6250F8041FA16250F8041FE16250F8041F216350F8041F\n" 
+"616350F8041FA16350F8041FE16350F8041F216450F804\n" 
+"1F616150F8041FA16150F8041FE16150F8041F216250F8\n" 
+"041F616450F8041FA16450F8041FE16450F8041F216565\n" 
+"658C226C4904F1580000F077FD4C486A49C0F85C15A068\n" 
+"A16C494A126D684B01241C60674C9D4B23606260A160E0\n" 
+"60FCF7D9FA2061644B5EA2802104F1140020E070B50446\n" 
+"0D463E4EFCF7CCFA70658C22594906F1580000F050FD38\n" 
+"485749C0F85C15564800210160844E35607160B160F160\n" 
+"FCF7B7FA306123464DA2802106F1140006F0F0FA854800\n" 
+"68C00700D5FEE78449844800090001BDE87040FBF7FCB9\n" 
+"F8B504460D461646264FFCF79BFA78658C22404907F158\n" 
+"0000F01FFD20483E49C0F85C153E48002101606B4F3D60\n" 
+"7E60B960F960FCF786FA3861234635A2802107F1140006\n" 
+"F0BFFA6D480068C00700D5FEE76B496C4800090001F194\n" 
+"0310998200BDE8F440FBF7CBB92DE9F04180460D461646\n" 
+"1F460C4CFCF768FA60658C22274904F1580000F0ECFC06\n" 
+"482549C0F85C15244800210160524C25606660A760E160\n" 
+"23E000005C6F8900606F8900331114912DE9F04180460D\n" 
+"4616461F46544CFCF744FA60658C22154904F1580000F0\n" 
+"C8FC42481349C0F85C15124800210160404C25606660A7\n" 
+"600698E060FCF72EFA2061434609A2802104F1140006F0\n" 
+"67FA41480068C00700D5FEE73F49404800090001BDE8F0\n" 
+"41FBF773B92573000000ED00E0BEBA3412306E8900346E\n" 
+"8900646B860070B582B004460D462A4BAAB2E91C89B219\n" 
+"20FFF7DFFB0646E9B22448301800F54D70FFF7CFFB8619\n" 
+"2904090E1F48301800F54D70FFF7C6FB8619AAB221461B\n" 
+"48301800F54D70FFF78FFB841900208DF8010001220DF1\n" 
+"01011448201800F54D70FFF782FB0419114890F8E80001\n" 
+"0941EA00108DF80000012200A90C48201800F54D70FFF7\n" 
+"71FB001908494118B02281F83423401C05494118012281\n" 
+"F83423411C044800F0E2FD73BD746B86005C6F8900C86E\n" 
+"89009072890008ED00E00CED00E070000B404870890068\n" 
+"708900442C880006000080F0ED00E061968200B8758900\n" 
+"606F8900202802DB384A203804E01028A6BF354A103833\n" 
+"4A400013684FF0030C0CFA00FC23EA0C0301FA00F01843\n" 
+"106070472F490860704780B52E4801682E480068FDF755\n" 
+"F8FDF77BF82C4800682C49884203D12B48006828490860\n" 
+"2748006840F0010015E080B52248016822480068FDF73E\n" 
+"F8FDF764F8204800682049884203D1204800681D490860\n" 
+"1C480068400840001A4908601B4809680160BDE80140FD\n" 
+"F759B818490968002814BF41F4007021F4007014490860\n" 
+"70471348006840F400701149086040F0100008600F4800\n" 
+"6840F008000D4908600548006840F48070A7E700008000\n" 
+"0E4084000E4088000E404C000E40142C8800102C880038\n" 
+"2C8800EFBEADDE44000E4008000E4004000E4010B55E48\n" 
+"06F074F95D4C204604F056FD5C4820605C48A0605C4820\n" 
+"605C48A0605C4A5D495548BDE8104004F041BD30B589B0\n" 
+"04460D465948844203D031215848FBF7BCF825B9002232\n" 
+"215548FBF700F9FCF765F9014602A805F0F4FB014600A8\n" 
+"05F03FFF2246A9B205F044FF012102A805F0D9FB4B4B4F\n" 
+"F4007248493F4806F0E9F902A8C046C04609B030BD0838\n" 
+"10B50C462E20FEF76FFA38B1002C14BF5422462241492E\n" 
+"20FEF776FA002C334804BFBDE8104006F09AB906F040F9\n" 
+"394B4FF4007236492D48BDE8104006F0C3B90838F19403\n" 
+"A09C82007CB50C4615461E462E20FEF74CFA70B1002D14\n" 
+"BF54234623002C14BF542246220698019000962D492E20\n" 
+"FEF74CFA73BD0838F8B50C461546022605E023463A468E\n" 
+"212348FBF7E6F8A4B222462946174806F086F90746A742\n" 
+"0FD0002FEED4BC42ECDB5EB92B20FEF71EFA30B1E21B1C\n" 
+"492B20BDE8F840FEF726BAF1BDE41B7D190620FDF7B8FF\n" 
+"761EDEE780B52E20FEF70AFA18B113492E20FEF715FAFC\n" 
+"F7D7F80349BDE8044004F06EBE0000D0D2880024E58800\n" 
+"8C648600A0648600DC5F8600FC5F860024808900CDB686\n" 
+"0030E5880010608600FF9B820038608600506086006C60\n" 
+"86002060860010B58CB0044600A8FBF74BFA206800F060\n" 
+"402060400040080099490840EAC17020600098C0082168\n" 
+"60F39E71216000988008216860F35D7121609DF8080000\n" 
+"F07F0060600CB010BD10B58CB0044600A8FBF727FA0098\n" 
+"20F002002168C90F40EA410000902068800F009960F3C3\n" 
+"0100912068400F009960F38201009160689DF8081060F3\n" 
+"06018DF8081000A8FBF712FA0CB010BD80F00100FBF73B\n" 
+"BA06F084B930B583B0044608788DF8000048780728B2BF\n" 
+"00250125801F8DF8010088788DF802004868029008208D\n" 
+"F803000020ADF804008DF8060000A92046FDF781F920B1\n" 
+"29462046FDF7F1FA012003B030BDFAF71EBD80B5FDF776\n" 
+"FAC0B202BDFDF79DBA10B504460121FDF7C4FA2046BDE8\n" 
+"1040FDF7EABA10B504460021FDF7BAFA2046BDE81040FD\n" 
+"F701BB054800687047054800687047024A106002480160\n" 
+"00F00EBE882788008C27880010B582B000208DF800009D\n" 
+"4C04F1100314220D2104F5067006F0C8F904F58A731422\n" 
+"0D2104F50C7006F0C0F906F0CAF9002849D006F0E3F9A0\n" 
+"6006F097FD07F08EFAA0680178002903D0217841F00101\n" 
+"2170072106F031FAA06806F009FAA068C178002903D021\n" 
+"7841F0020121704179002903D0217841F0040121708179\n" 
+"002903D0217841F00801217021780F2902D15521817500\n" 
+"E0817500220121084606F01DFC08F04DF93221A06806F0\n" 
+"98FBA06806F060FB06F00CFC06F00DFC08F050F90021C0\n" 
+"F8801016BD002016BD10B584B06B4CFFF795FF60600220\n" 
+"02904FF48060019004F512700090664B78220FF2981104\n" 
+"F5B0507830FCF7E5F9022002904FF48050019004F5C960\n" 
+"00900FF215036E220FF2801104F5B0504830FCF7D3F91F\n" 
+"BD7FB50020C046002801D0C046C0460020C046002801D0\n" 
+"C046C04608F0D5F9504C3E2005F0B9F9064608F061FD04\n" 
+"F5B055A835B00710D56068D0F8800006F035FCF1940330\n" 
+"A0820008F0AAFC04F10C01284608F0D9FF04F10C012846\n" 
+"09F03EF8F0060AD5002006F0AFFB102007F0D3FE04F10C\n" 
+"01284609F031F8B0060CD504F10C01284608F0CFFF0420\n" 
+"07F0C4FE04F10C01284609F022F8700703D56068C06F07\n" 
+"F0B3F804F10C01284609F0F5FC30071FD4B9E7BDF80100\n" 
+"001D0AF07BFCCDF8090002220DF103010AF09EFC02220D\n" 
+"F10101DDF80900801C0AF096FC04F10C02294600A809F0\n" 
+"42FD00A904F50C700AF091FC00A904F506700AF0B0FC00\n" 
+"2893D19DF8030010F00300D4D00128F1D104F10C022946\n" 
+"00A809F03DFEBDF801000028E7D0DDF809009DF8031049\n" 
+"0718D50421ADF803100121ADF8011002220DF103010AF0\n" 
+"62FC02220DF10101DDF80900801C0AF05AFC00A904F50C\n" 
+"700AF05BFCC8E70AF040FCC5E70000088888000D838600\n" 
+"534820436F6D5461736B00005348204D61696E5461736B\n" 
+"0000220AF085BC000002004F4800684E4B19604E490A70\n" 
+"114618BF4D494D4A11604D4901220A604D4909680029FB\n" 
+"D14C4908220A60704738B504460D460820FCF71DFC4248\n" 
+"007810B9424841490160424801210160414800680028FB\n" 
+"D1404808210160002005B102203E49086004B901243D48\n" 
+"04603548007810B936480021016031BD3248007810B932\n" 
+"48314901603748082101603348006840F0010031490860\n" 
+"3348096801602948007810B92948002101607047254800\n" 
+"7810B92648244901602C48082101602748006840084000\n" 
+"254908602748002101601C48007808B91D4801600820FC\n" 
+"F7F5BB80B523480078401C2149087021480078401C2049\n" 
+"08701248006810B1104800688047134801210160124800\n" 
+"680028FBD111480821016016480078401E144908701448\n" 
+"0078012804D11248406808B1FDF7A1FA10480078401E0E\n" 
+"49087001BD00004C7689009988890051E5CC1A009C0C40\n" 
+"0C900C4014900C4080E200E05076890000900C4000E100\n" 
+"E008900C4080E100E0868889001C27880062B38B0708D0\n" 
+"521E11F8013B00F8013B00F024808B07F6D1830740F020\n" 
+"8000BF103A07D330B4B1E83810103AA0E83810F9D230BC\n" 
+"530724BFB1E80810A0E8081044BF51F8043B40F8043BD2\n" 
+"0724BF31F8022B20F8022B44BF0B7803707047083A07D3\n" 
+"B1E80810083A40F8043B40F804CBF7D25307E4E700007C\n" 
+"B504460D4616466F20FDF7E8FE48B1019600952346DFF8\n" 
+"9C25DFF89C156F20FDF7EDFE73BD7CB504460D4616466F\n" 
+"20FDF7D5FE48B1019600952346DFF87C25DFF874156F20\n" 
+"FDF7DAFE73BD80B50AF004FF0BF0C0FBBDE8F19403C0A3\n" 
+"8200014058E238B504462079062804D10AF051FD00280E\n" 
+"D420710AF0F2FC050017D425602562607900280CBFDFF8\n" 
+"3C05DFF83C0502E04FF0FF3032BDE06120460AF047FD28\n" 
+"B128460AF00FFD6FF0030032BD284632BD10B504460AF0\n" 
+"9FFE20460AF003FD40B210BD0BF0F4BB0BF0B9BC10B5A0\n" 
+"B004460023802200A920460BF0B0FC0128F7DA20460BF0\n" 
+"3FF920B010BDC0EB0011DFF8DC0400EB01104169096A42\n" 
+"69526A130C03F001034FEA114C0CF0010C9CEA030303D0\n" 
+"90B289B2401A70474069C06A001D89B2401A10FA82F070\n" 
+"47C0EB0012DFF89C0400EB021040690BF054BDC0EB0011\n" 
+"DFF8880400EB01104069816921F0040181617047C0EB00\n" 
+"11DFF8700400EB0110406902210160816941F004018161\n" 
+"70472DE9F84F804600200090DFF854040068C20704D440\n" 
+"F00100DFF844241060DFF84404D0F800A0DFF840040068\n" 
+"041DDFF83C040668DFF838040068020C02F00102330C03\n" 
+"F001035A401CD080B2B2B2871A57D08F4288BF0F460097\n" 
+"3A4641461AFA86F0FFF7DBFEDFF80C0402210160DFF808\n" 
+"04006820F00200DFF8FC1308600022B9193AE0B2B2A51A\n" 
+"1FFA80F919EB050737D08F4288BF0F460097BD4288BF3D\n" 
+"462A4641461AFA86F0FFF7B8FEA84405EB060B1FFA8BF0\n" 
+"A1B2884205D14FF0000BF00358BF4FF4803B781B08D081\n" 
+"4588BF81464A4641465046FFF7A0FECB44DFF894030221\n" 
+"0160DFF89003006820F00200DFF88413086000225946DF\n" 
+"F878030AF06FFA0098BDE8F28F2DE9F04104460025DFF8\n" 
+"68030668DFF86803D0F80080FBF702FC0746DFF85C0300\n" 
+"68DFF85C130968884212D016FA80F109782170012581B2\n" 
+"414506BF00F4803080F48031411C0122DFF838030AF044\n" 
+"FA0AE0FBF7E4FBB8422FBFC01B4FF0FF31C91B40186528\n" 
+"D9D32846BDE8F08170B504460D46BD4802210160FBF7D0\n" 
+"FB064629462046FFF738FF0128A4BF04192D1AFBF7C5FB\n" 
+"B0422FBF801B4FF0FF31891B4018B0F57A7F02D8002DE9\n" 
+"D105E025B140F2A321B448FAF77BFBAC4800688007FBD5\n" 
+"AA4802210160A948006840F00200A7490860A3480068A3\n" 
+"4909688842F9D170BD9D480068A9494860A94800688860\n" 
+"9F480068C8609B48006808619A48006848619648006888\n" 
+"6195480068C861A14800680862A04800684862A0480068\n" 
+"88629F480068C8629F4800689F4948609F48006888609E\n" 
+"480068C8609048006808618F48006848618B4800688861\n" 
+"8A480068C8619848006808629748006848629748006888\n" 
+"6296480068C862704780B58D4800210160F1940350A782\n" 
+"008C4880688C4908608A48C0688B4908607D4800210160\n" 
+"87488069794908608548C069784908608348006A854908\n" 
+"608148406A8449086076480BF0B7F874480BF0BFF87348\n" 
+"40F2DF3101608148012101607848406876490860624800\n" 
+"2101606E4880686E4908606C48C0686449086060480021\n" 
+"0160684880695B4908606648C0695A4908606448006A65\n" 
+"4908606248406A6449086058480BF088F857480BF090F8\n" 
+"554840F2DF3101606A48012101605A4840684C49086001\n" 
+"BD5FEA805C18BF5FEA815C07D1884203D0900503D19805\n" 
+"01D10120704700207047C0EB0011404800EB0110406981\n" 
+"6941F004028261026802F0040202608161042101600121\n" 
+"0163704710B504460AF090FF40B920460AF0B2FF20B120\n" 
+"46BDE810400AF0C2BF4FF0FF3010BD0AF0FFBF80B53348\n" 
+"0BF03EF832480BF046F836480BF038F835480BF040F845\n" 
+"480BF032F844480BF03AF843480BF02CF842480BF034F8\n" 
+"41480BF026F840480BF02EF83F480BF020F83E48BDE802\n" 
+"400BF026B8F8B5002400253B4E307801281ED17768062F\n" 
+"04D340F28B312148FAF755FAC7EB0710124901EB001000\n" 
+"7C20B940F28F311B48FAF749FA38460AF03CFF012803D0\n" 
+"38460AF05DFF08B9012403E06D1C1036062DD9D32046F2\n" 
+"BDA46D8600B86D8600006E86008FA3820069A38200187A\n" 
+"890010600B4028600B402C600B4020600B4024600B4000\n" 
+"600B4018600B4028620B402C620B4020620B4024620B40\n" 
+"00620B40146E8600EC75890014600B4030600B4040600B\n" 
+"4044600B4048600B4010620B401C76890014620B401862\n" 
+"0B4030620B4040620B4044620B4048620B4004620B4004\n" 
+"600B4000700B4000720B4000800B4000820B40B87F8900\n" 
+"38B504000D4603D14E210848FAF7E0F95DB10020686060\n" 
+"682860002814BF4560256065602089401C208131BD606D\n" 
+"860000200F49096809B102200DE070470C48406808B102\n" 
+"2010E0704700200849096809B1032000E0704705490968\n" 
+"08470448406808B1032000E07047014949680847CC5C89\n" 
+"0080B50BF097FA0128B8BF002002BD000000B583B00820\n" 
+"8DF8030000208DF80000ADF804008DF802008DF8060004\n" 
+"208DF801000FF215000290FFF722FA00A9FCF77BFB03B0\n" 
+"00BD000000B583B0FFF718FAFCF717FD08208DF8030000\n" 
+"208DF80000ADF804008DF802008DF8060005208DF80100\n" 
+"0FF221000290FFF702FA00A9FCF75BFB0020FAF7AEFAFF\n" 
+"F7FAF9FCF7D8FC03B000BD80B5FFF7F3F9FCF7F2FCFFF7\n" 
+"B7FF0020FAF7A1FAFFF7EAF9BDE80240F19403E0AA8200\n" 
+"FCF7C6BC00B583B0FFF7E5F90021F9F7E2FEFFF7DDF900\n" 
+"21F9F7DDFEFFF7DBF9FCF7D7FCFFF7D7F90121FCF75AFC\n" 
+"08208DF8030001208DF800000020ADF804008DF802008D\n" 
+"F806008DF801000290FFF7C2F900A9FCF718FB18B97721\n" 
+"1B48FAF725F9FFF7B5F90221FEF7BCFFFFF778FFFFF7AE\n" 
+"F9FCF78CFC15480121017003B000BD80B51248007828B1\n" 
+"FFF7A1F9BDE80240FCF7FBBBFF2002BD10B504460C4800\n" 
+"7830B1FFF797F92146BDE81040FCF718BC10BD80B50648\n" 
+"007828B1FFF788F9BDE80240FCF785BC01BD00008C6586\n" 
+"0087888900000000000000000000000000EFF310822DE9\n" 
+"FC5F72B62848006801B42748006801B4EFF314834FF000\n" 
+"0080F314886C464FF0020080F314886D46EFF311862049\n" 
+"78C183F3148830BF1E49087800282BD1FFE772B6DFF860\n" 
+"00016841F470010160174978C986F311884FF0020080F3\n" 
+"1488AD46002080F31488A54683F314880F4A01BC10600C\n" 
+"4A01BC1060BDE8FC5F82F310880C49087800280AD17047\n" 
+"0A490120087008490870B1E7074900200870D0E7044900\n" 
+"200870704788ED00E008ED00E0DC5C8900888889008988\n" 
+"890018B402460B464FF44874A4FB020104FB031114BC70\n" 
+"474FF47A720023FDF76CBBC90341EA5041C00309B1274A\n" 
+"F5E7264915E038B44FF47A720023A2FB004502FB015514\n" 
+"F5480055F1000100D01FE04FF0C871B0FBF1F032BC7047\n" 
+"4FF47A71B0FBF1F00021704738B4174A0023A2FB004502\n" 
+"FB015514F5480055F1000100D006E04FF0C871B0FBF1F0\n" 
+"002134BC70474FF0C87201B030BCFDF72FBB1CB44FF0C8\n" 
+"74A4FB002304FB01333BB110461946064A002302B010BC\n" 
+"FDF71FBB0348B2FBF0F000211CBC7047000040420F0030\n" 
+"B581B004460D46FCF754FD0548C4624563407820B901B0\n" 
+"BDE83040FCF744BD01B030BD1C27880010B50446FCF742\n" 
+"FD0548016A611801624078002804BFBDE81040FCF731BD\n" 
+"10BD1C27880010B53C4800680069C0B202F070FDC0B138\n" 
+"4800680069C0B202F07CFD0446FBF758F842F21071B4FB\n" 
+"F1F11030B0FBF1F0411C31480BF0DAF82F48BDE8104004\n" 
+"F033B900210920BDE81040FCF7EEBA00B583B0F9F7B3FD\n" 
+"002818BF032820D100210920F9F75CFD08208DF8030001\n" 
+"208DF800000020ADF804008DF802008DF801008DF80600\n" 
+"029000210920FCF7CEFA00A90920FCF79DF90022184917\n" 
+"4804F0F8F803B000BD38B504460D46F9F787FD002818BF\n" 
+"03281DD10F4804602069C0B202F029FD0446FBF705F842\n" 
+"F21071B4FBF1F140191030B0FBF1F0F1940370AE820041\n" 
+"1C07480BF086F8054804F0E1F801210920BDE83440FCF7\n" 
+"9CBA31BDD0758900BC75890099AD820010B584B00446F9\n" 
+"F759FD002818BF03281ED100210920F9F702FD08208DF8\n" 
+"030001208DF800000020ADF804008DF802008DF801008D\n" 
+"F806000290002C14BF012100210920FCF771FA00A90920\n" 
+"FCF740F904B010BD80B51C21DFF8DC02FFF73CF9DFF8D8\n" 
+"020021018101604160DFF8C80203F016FEDFF8C802BDE8\n" 
+"0240FAF768BA38B504460D46B4F9080000F0F0F800B153\n" 
+"E004F1200003F003FEE56100202063DFF8940203F016FE\n" 
+"FAF76AFF05462146DFF88802FFF736FD284680F31088DF\n" 
+"F8780203F028FE002032BD70B50C4600F0CEF8050013D0\n" 
+"6E6905F1200003F0FAFD214628463268904744B214B928\n" 
+"6B401C286305F1200003F00EFE04B10025284670BD38B5\n" 
+"0446B4F9080000F0B0F8A0B1A04212D1656904F1200003\n" 
+"F0DBFD204669688847050002D1206B401E206304F12000\n" 
+"03F0F0FD284632BD4FF0FF3032BD70B504460D461646B4\n" 
+"F9080000F08FF800B97DE06369986830B1324629462046\n" 
+"9B68BDE8704018476FF0050070BDF8B504460D461646B4\n" 
+"F9080000F078F800B940E06FF00500A17A00296769F968\n" 
+"08D031B14FF0FF33324629462046FC68A047F2BD0029FC\n" 
+"D04FF0FF33324629462046FC68A047F2BDF8B504460D46\n" 
+"16461F46B4F9080000F053F800B91BE06FF00500A17A00\n" 
+"29D4F814C0DCF80C1008D031B13B46324629462046DCF8\n" 
+"0C40A047F2BD0029FCD03B46324629462046DCF80C40A0\n" 
+"47F2BD4FF0FF30F2BD70B504460D461646B4F9080000F0\n" 
+"2AF800B918E06FF00500A17A00296369196908D031B132\n" 
+"46294620461B69BDE87040184770BD0029FCD032462946\n" 
+"20461B69BDE8704018474FF0FF3070BD80B5203003F03B\n" 
+"FD002002BD80B5203003F056FD002002BD38B50446FAF7\n" 
+"85FE30490D6900E06D68002D1CBFB5F90810A142F8D1FA\n" 
+"F77FFE284632BD2DE9F04104460025FAF771FE80462548\n" 
+"07690CE0386B48B1BA693AB1106828B121463846126890\n" 
+"47050001D17F680FB1002DEFD08DB11B4806690CE0306B\n" 
+"00281CBFB269002A05D0506818B1214630465268904776\n" 
+"68BE42F0D1404680F310882846BDE8F081F8B504460026\n" 
+"FAF73FFE05460C4807690DE0386B00281CBFBA69002A06\n" 
+"D0506820B1214638465268904706467F680FB1002EEED0\n" 
+"284680F310883046F2BD00004C5D89005C5D8900182C88\n" 
+"0080B5DFF88C0BDFF88C1B0160DFF8880B006820F41010\n" 
+"DFF8801B0860086840F410100860F1940300B28200DFF8\n" 
+"680B00210160DFF8641B0160DFF8640B006820F49000DF\n" 
+"F8581B0860086840F490000860DFF8440B00210160DFF8\n" 
+"401B0160DFF83C0B006820F41000DFF8341B0860086840\n" 
+"F410000860DFF81C0B002101608421DFF8200BFEF789FF\n" 
+"DFF8180B0021417128210171DFF8101B01600021017201\n" 
+"2180F83110292180F83010DFF8FC1AC162002180F83410\n" 
+"022180F85D102A2180F85C10DFF8E81A8165002180F860\n" 
+"1001BD002128B1022806D038BF4FF4900104E04FF41011\n" 
+"01E04FF41001DFF8A80ADFF8A82A0260DFF8A80A006888\n" 
+"43DFF8A02A1060106808431060DFF88C0A002101607047\n" 
+"DFF89C1A0860704738B50C462C21DFF8802A01FB002529\n" 
+"6800224A6495F90710002901BF2968096A01F0C001C029\n" 
+"03D12968496D490703D4FFF7C1FF0020E8712868FF2181\n" 
+"6495F904004109DFF8542A012300F01F0003FA00F042F8\n" 
+"21002868C12101622868DFF8381A0968C16228689F2181\n" 
+"642868C06C000A00022968C8642868C06B40F080002968\n" 
+"C8632868C06B20F080002968C863286800218166286841\n" 
+"66286801672146284600F045F82868C06C40F001002968\n" 
+"C8642C610020686195F9060028B9002105F124000AF0FA\n" 
+"FD04E0002105F124000AF032FE95F904004109DFF8C429\n" 
+"012300F01F0003FA00F042F8210000202873AB7131BD2C\n" 
+"22DFF8903902FB003000290168496E12BF41F001014908\n" 
+"49000068416670472C22DFF8703902FB0030017270472C\n" 
+"21DFF8602901FB00200069704710B40022DFF86C391C88\n" 
+"1A2C08D15C688C420DD0A14207DA012A09DB521E07E01B\n" 
+"2C01D300220AE0521C0C33052AEBDB052A08BF042202D0\n" 
+"12F1010F2ED00168C96C490849000368D9640168496A89\n" 
+"098901036859620168496A02EB4203DFF8144904EB8303\n" 
+"1B7A1943036859620168C96C21F07E010368D9640168C9\n" 
+"6C02EB420304EB83035B7A19430368D96402EB420104EB\n" 
+"810149890068816510BC704730B490F904205309DFF8CC\n" 
+"48012502F01F0205FA02F244F82320026841F005015164\n" 
+"90F904004109DFF8A42800F01F0005FA00F042F8210030\n" 
+"BC704710B5044642F210702268126A02F03002102A04D0\n" 
+"401EF7D16FF0010010BD0028FAD02068006A20F00E0069\n" 
+"B1022907D002D303290CD010E0216840F002000AE02168\n" 
+"40F00A0006E0216840F0040002E0216840F00600086208\n" 
+"E04B20FCF7F5FD20B1DFF83C184B20FCF7FFFD08212046\n" 
+"FFF7A8FF002010BD03681B6A23F00E03D0F800C0CCF820\n" 
+"3013040FD50B0A5B0003F00603F1940390B5820043F0F0\n" 
+"03920748BF43F00103026893620068C9B2816270474B00\n" 
+"DBB2910748BF43F0010300688362704770B4B0F91C208B\n" 
+"68D318CA88B0F91C40141B002205682D6A25F00E050668\n" 
+"356204E013F8015B0668B562521C24B1641E05686D6D2D\n" 
+"07F4D51AB3838BD3188383B0F91C30C9888B4204BF0121\n" 
+"C17290F904104B09DFF88847012501F01F0105FA01F144\n" 
+"F82310016807234B6490F904004109DFF8603700F01F00\n" 
+"05FA00F043F82100104670BC704738B50446C888B4F91C\n" 
+"10451A05D540F23731DFF84807F9F798FB42F210702168\n" 
+"096A890604D5401EF9D16FF0010032BD0028FAD042F210\n" 
+"702168096A01F03001102902D0401EF7D1EFE70028EDD0\n" 
+"802D02DB7F20E08302E02800E08318D02168496C21F00A\n" 
+"01226851642168496C41F01001226851640146A84208BF\n" 
+"41F080012268126A22F00E0223681A622268916632BDB0\n" 
+"F91C208B68D218B0F91E303BB15B1ED0F800C0DCF86CC0\n" 
+"02F801CBF7D1828BC38B9A188283B0F91C20C9888A4204\n" 
+"BF0121C1720168496C21F01001026851640168496C41F0\n" 
+"080102685164B0F91E007047000038B5044601E0012020\n" 
+"7394F90A0000EB4001A06900EB8105207B401E062800F2\n" 
+"EA80DFE800F0044389AEC3C9E20094F90A0000280CBF01\n" 
+"2002200221217342F210712268126A02F03002102A02D0\n" 
+"491EF7D131BD002900F0CE802168096A21F00E0140B102\n" 
+"280AD00DD3032810D1206841F006010AE0206841F00401\n" 
+"06E0206841F00A0102E0206841F00201016208E04B20FC\n" 
+"F7C4FC20B1DFF8D8154B20FCF7CEFC08212046BDE83440\n" 
+"75E694F90A00002804BF2069B0F5486F3BD10320207342\n" 
+"F210702168096A890602D5401EF9D115E0A0B142F21070\n" 
+"2168096A01F03001102902D0401EF7D109E040B1206800\n" 
+"6A20F00E002168086220680F21816294F904004109DFF8\n" 
+"6825012300F01F0003FA00F042F8210020680D21416494\n" 
+"F904004109DFF8442500F01F0003FA00F042F8210031BD\n" 
+"042067E742F210702168096A01F03001102903D0401EF7\n" 
+"D1042051E00028FBD02068006A20F00E0040F00A002168\n" 
+"086208212046FFF716FE2068806D40F400402168886520\n" 
+"6834214162042038E02A68A9882046FFF760FE0020A083\n" 
+"E072287880072946204603D5FFF7BDFE062027E0FFF775\n" 
+"FE052023E029462046FFF76FFE48B131BD29462046FFF7\n" 
+"F6FE29462046FFF7A9FEA8B9A07A401CA07294F90A0094\n" 
+"F9091088427FF414AF00212046FFF7F7FD072004E004F1\n" 
+"24000AF04FFB0020207331BDF1940320B98200F8B50446\n" 
+"94F90A0000EB4001A06900EB810529462046FFF740FE06\n" 
+"003FD02068076F0520207394F90B0088B394F90A0094F9\n" 
+"0910491E88421FD0A07A401CA0720020A083E07247F004\n" 
+"0755F80C2FA9882046FFF7FFFD287880070AD529462046\n" 
+"FFF75FFEA0B106212173E98888420FD106E02068002181\n" 
+"660AE02068002181662068406C40F020002168486447F0\n" 
+"10072068006F47F002010843216808673046F2BD70B504\n" 
+"4694F90A0000EB4001A06900EB81062068056F31462046\n" 
+"FFF731FE98B106212173F188884207D12168496C41F020\n" 
+"012268516445F010052168096F45F00202114322681167\n" 
+"70BD70B50446002594F90A0000EB4001A06900EB810694\n" 
+"F90900032805DB40F29941DFF87003F9F7ACF9207B0128\n" 
+"06D0052851D0062854D0072868D16BE002202073206801\n" 
+"21016794F90A000028206802D0052101672DE009210167\n" 
+"2069B0F5486F27D142F210702168096A890602D5401EF9\n" 
+"D115E0A0B142F210702168096A01F03001102902D0401E\n" 
+"F7D109E040B12068006A20F00E002168086220680F2181\n" 
+"622068806D40F40040216888652068342141623268B188\n" 
+"2046FFF756FDA583E57230788007204644BFBDE87040FF\n" 
+"F773BFBDE870401EE72046FFF71CFFC8B907E031462046\n" 
+"FFF7F0FD2046FFF764FF80B994F90A0094F90910491E88\n" 
+"420EBF0720012001252073A07A401CA072002D7FF479AF\n" 
+"70BD2068456C680604D440F2FA419C48F9F72DF9206825\n" 
+"F0200141642068406C10F0600F04D04FF4A0619548F9F7\n" 
+"1FF904F124000AF031FA0020207370BD70B582B00C4615\n" 
+"462C21844A01FB002696F90710002901BF3168096A01F0\n" 
+"C001C02903D13168496D490702D43169FFF7B1FB306800\n" 
+"21416471613068806C40F0FF00316888643068C06C40F0\n" 
+"01003168C8643068C06B40F080003168C8633068C06B20\n" 
+"F080003168C8633068C06B40F040003168C8633068C121\n" 
+"016296F905002C21664A10FB012002E00168C96E009101\n" 
+"68496D4907F8D5B46175720020B072306201203073307A\n" 
+"0028304602D0FFF78DFD01E0FFF7FCFE4FF47A7106F124\n" 
+"000AF01CFA50B94B20FCF78FFA18B15E494B20FCF79AFA\n" 
+"6FF003003062306A00B928463169B1F5486F05D1316889\n" 
+"6D21F400413268916576BD38B52C21474A01FB00242068\n" 
+"806C21688864616940EA010500206061E80705D5207B03\n" 
+"281CBF6FF008002062680703D56FF00900206201E0206A\n" 
+"28B104F12400BDE832400AF08EB9207A002820461CBFBD\n" 
+"E83240FFF73EBDFFF7AEFEF19403B0BC820015F0120F07\n" 
+"D02068406C400603D52046BDE83240A2E631BD80B53748\n" 
+"0078401C3549087035480078401C344908700020FFF7B8\n" 
+"FF32484FF4807110E080B52E480078401C2C4908702C48\n" 
+"0078401C2B4908700120FFF7A6FF29484FF40071016025\n" 
+"480078401E2449087024480078012804D12248406808B1\n" 
+"FBF760FD1F480078401E1E49087001BD80B51B48007840\n" 
+"1C1949087019480078401C184908700220FFF780FF1648\n" 
+"4FF48061D8E72C21064A01FB00200121C17100207047FC\n" 
+"000B407347BCBCEC000B406086890000300B4000500C40\n" 
+"00600C40442D880080E200E000E100E0082D880080E100\n" 
+"E0347486005074860058748600868889001C27880084E2\n" 
+"00E038B500247B4D64212046FFF797FA7A48F9F750F944\n" 
+"212846FEF7D0F97748F9F749F90CB9062003E0012C0CBF\n" 
+"0720082028810020A872AC81714868610020A86105F134\n" 
+"0002F09EFE6E48F9F733F929462846FFF787F86C48F9F7\n" 
+"2CF9641C4435032CD0DB6948BDE83240F9F7E3BA80B5B0\n" 
+"F90C0008B91A2003E001280CBF1B201C20FAF7D9FD0220\n" 
+"F9F7EAF8002002BD80B5016B01290AD1B0F90C0008B91A\n" 
+"2003E001280CBF1B201C20FAF7F0FD0220F9F7D9F80020\n" 
+"02BD2DE9F04104460D4616460027C069C046804608F134\n" 
+"0002F073FE2DB26D1E0CD06D1E0FD04FF4FF702D1A0FD0\n" 
+"6D1E19D06D1E1DD06D1E21D026E0B4F90C00FFF7FCF923\n" 
+"E03046FFF719FA1FE0B4F90C00FFF7A9FAB04219D03146\n" 
+"B4F90C00FFF711FA13E0B4F90C00FFF79DFA30600DE031\n" 
+"46B4F90C00FFF77FFA07E03146B4F90C00FFF789FA01E0\n" 
+"4FF0FF3708F1340002F057FE3846BDE8F081F8B504460D\n" 
+"461646C069C046074607F1340002F028FE32462946B4F9\n" 
+"0C00FFF71AFE044607F1340002F03EFE2046F2BD70B500\n" 
+"24224D28460AF0B1F8B8B94FF0FF36641E012C10DB04EB\n" 
+"0410154901EB800000F134052046FFF7FDFE284602F023\n" 
+"FE641E443D012CF5DA304670BD20460020C0460600E4D1\n" 
+"641C4435032CDADBF3E738B500240D4D2046FFF7E4FE28\n" 
+"4602F00AFE641C4435032CF5DB002032BD000088858900\n" 
+"1400660615006606207486001600660617006606F82C88\n" 
+"00BC858900DFF8A8030068DFF8A8130840DFF8A413DFF8\n" 
+"A4230A6020F44071DFF8902311601060DFF89003002101\n" 
+"60704780B5FFF7E7FFDFF888034068C0F3035007282ED1\n" 
+"DFF878034068C0F38140032827DADFF86C034068C0F381\n" 
+"40000140F00700DFF85C134968C1F3814169B9DFF85013\n" 
+"4968C1F34041DFF84423F1940340C082005268C2F30042\n" 
+"D20142EA81110843DFF834134968C1F3072140EA0120DF\n" 
+"F824130979C90702D54FF0FF3002BDDFF814130979DFF8\n" 
+"1023127A02F003021201DFF808331A60DFF8FC32DA60DF\n" 
+"F800231060DFF8FC020160002002BDDFF8E802C06840F0\n" 
+"0200DFF8DC12C860C868DFF8D8120860DFF8D002406800\n" 
+"0EFF2805D0DFF8C4028068C0F3800116E07047AD48C068\n" 
+"20F00200AB49C860C868AB490860A9484068000EFF2806\n" 
+"D0A6488068C0F38000C0F1010100E07047A2484068000E\n" 
+"FBF760B910B59F48002100220B460C461EC00E20FAF76B\n" 
+"FC9F480068C0B2222801BF9D480068C0B2102821D19C48\n" 
+"0068C0B224281CD19A480068000601BF99480068C0B20D\n" 
+"2813D198480068C0B2F02801BF96480068C0B2052809D1\n" 
+"95480068C0B2B12804D1FFF730FF9248F9F73DF90E20BD\n" 
+"E81040FAF765BC38B50C468148007810B16FF0010032BD\n" 
+"14B94FF0FF3032BD0E20FAF72BFC8848007878B1874821\n" 
+"46022250F8043B51F8045BAB4206D1521EF7D174480121\n" 
+"0170002032BD7E48012101707048D4E90023C0E9012310\n" 
+"0EFF2806D0C3F38000C0F10101100EFBF7F1F8FFF708FF\n" 
+"0400E4D00E20FAF72AFC204632BD80B56348007858B162\n" 
+"48007B800748BFFFF763FF0E20FAF71BFC5D4800210170\n" 
+"002002BD70B40024694E03E011F8015B3560641CE4B284\n" 
+"4201D2082CF6DB001B0AD0634D2D686D07FBD5604D2D68\n" 
+"11F8015B3560401EF4D1E4B25CB1641E5C4800684007FB\n" 
+"D559480068F5E7584800210160641CE4B2944201D2082C\n" 
+"F6DB101B0CD0534909684907FBD55049096803F8011B4E\n" 
+"4900220A60401EF2D1E4B24CB1641E4B4800684007FBD5\n" 
+"4848006803F8010BF3E7002070BC7047F8B504460D0016\n" 
+"461F4600D10CB92FB926B140F29F314148F8F762FDFFF7\n" 
+"E7FE3B46324629462046FFF79FFF0446FFF7F7FE2046F2\n" 
+"BD70B506460D00144618BF002C04D140F297413448F8F7\n" 
+"49FDFFF7CEFE00202F4A03E015F8011B1160401CC1B2B1\n" 
+"4202D2C0B20828F5DBC0B2311A89B271B1311A89B21346\n" 
+"274A12685207FBD51A6804F8012B15F8012B1A60491EF3\n" 
+"D1C0B248B1401E1F4909684907FBD51C49096804F8011B\n" 
+"F3E7FFF7B9FE002070BD0948007810B14FF0FF30704713\n" 
+"480021017000207047E8000B403FFF677DFC000B407347\n" 
+"BCBC685D890004300C4000300C4010300C40E03F0C40E4\n" 
+"3F0C40E83F0C40EC3F0C40F03F0C40F43F0C40F83F0C40\n" 
+"FC3F0C40282C8800988889006C5D890008300C400C300C\n" 
+"40346A860000207047F19403D0C3820080B5DFF88C05C3\n" 
+"6A8269816A4069FEF713FA20B9CB21DFF87C05F8F7CFFC\n" 
+"DFF87005C16AC0F8B010080071D0DFF8600590F8301080\n" 
+"F8A410012180F8A510002180F8A61090F8311080F8A710\n" 
+"816AC0F8A810418EC0F8AC10416BC0F8B410816BC0F8B8\n" 
+"10C16BC0F8C410DFF82C05FDF7C1FFDFF81C15C1F89C00\n" 
+"D1F89C00002811D5DFF81805006800F4E060DFF80C1508\n" 
+"60DFF8FC04C06EFDF7D4FFDFF8F004D0F89C0031E00846\n" 
+"8969C0F8801008002ED0DFF8DC04017F80F87410002180\n" 
+"F8751080F87610417F80F8771041698167C18BC167016A\n" 
+"C0F88410416AC0F88810DFF8BC04FDF786FFDFF8A414C8\n" 
+"66C86E002811D5DFF8A404006800F4E060DFF89C140860\n" 
+"DFF88804C06E10F1010F02D16FF0020002BDBFE0C86EFD\n" 
+"F7A0FFDFF87C04006840F00100DFF870140860C820F8F7\n" 
+"3CFADFF86404006840084000DFF85C140860DFF8480400\n" 
+"7B18B102280FD008D31CE0086800F4E06040F00A000860\n" 
+"002002BD086800F4E06040F00800F6E7086800F4E060DF\n" 
+"F818140969090601F0FE41084340F00C00DFF81014E7E7\n" 
+"4FF0FF3002BD80B5CC21DFF8F403FDF700FEDFF8EC03DF\n" 
+"F8FC130160DFF8FC1341602F2101720121DFF8F40309F0\n" 
+"0FFD0121DFF8EC0309F00AFDDFF8C413DFF8E403BDE804\n" 
+"40FEF7B8BC10B5DFF8DC034FF40042026011B94FF0FF30\n" 
+"10BDDFF8CC033422FDF7A5FE1C21DFF8C403FDF7D0FD04\n" 
+"20FAF70BFAFFF7FBFE040004D00420FAF72FFA204610BD\n" 
+"DFF8A8034FF400410160002010BD80B5DFF88C034FF400\n" 
+"410160DFF85C03C06E00280BD4DFF85003C06EFDF7FFFE\n" 
+"DFF848134FF0FF32CA66002813D4DFF83803D0F89C0000\n" 
+"280ED4DFF82C03D0F89C00FDF7ECFEDFF820134FF0FF32\n" 
+"C1F89C20002800D50CE0DFF81C03006800F4E060DFF810\n" 
+"1308600420FAF7EFF9002002BD6FF0070002BD70B50D46\n" 
+"16466FF00704DFF80C034FF400410160B748D0F89C0000\n" 
+"2810D4BB4809F0ADFC32462946B248D0F89C00FDF7C3FE\n" 
+"040048BF6FF00704B44809F085FC1EE070B50D4616466F\n" 
+"F00704B3484FF400410160A748C06E002811D4AD4809F0\n" 
+"8EFC4FF0FF3332462946A148C06EFDF7A5FE040048BF6F\n" 
+"F00704A54809F065FCA9484FF400410160204670BD10B5\n" 
+"0024A2484FF400430360012911D002294ED003291DD004\n" 
+"2922D0052927D006292BD0B1F5007F2ED040F201208142\n" 
+"36D041E08F48006840F001008D490860C820F8F71EF98A\n" 
+"480068400840008849086033E08448D0F89C00FDF77BFE\n" 
+"04462CE011468048F1940360C78200D0F89C00FDF793FE\n" 
+"25E07D48D0F89C00FDF796FE1FE07A48D0F89C00FDF79C\n" 
+"FE19E07748C06E002804D47548C06EFDF74EFE10E06FF0\n" 
+"07040DE07148007B022804D132B16E481168016104E06F\n" 
+"F0050401E04FF0FF3477484FF400410160204610BD80B5\n" 
+"0020744A126802B10120734A126802B10120032900D150\n" 
+"B96048C06EFEF736F828B95E48D0F89C00FEF730F800B1\n" 
+"B4E66A4800686A4908606748006848605A480068886067\n" 
+"480068C860674800686749086060480068486065480068\n" 
+"886065480068C860002002BD80B54F48006840F001004D\n" 
+"490860C820F8F79EF84A48006840084000484908605448\n" 
+"012101605448C0685449086052488068434908603F48C0\n" 
+"6EFEF704F850480F2101604F48C068504908604D488068\n" 
+"4D4908603748D0F89C00FDF7F4FF002002BD38B5002000\n" 
+"21494A1278521C484B1A70484A1278521C464B1A70374A\n" 
+"4FF4004313603D4A1268404B1B68394C246824EA02023A\n" 
+"4C246824EA0303254CA46D641C244DAC65940724D4D407\n" 
+"03D501202C6D641C2C65DC0703D501212C6C641C2C649C\n" 
+"0704D541F002016C6C641C6C645C0704D541F00401AC6C\n" 
+"641CAC641C0704D541F00801EC6C641CEC64002808BF00\n" 
+"2902D1686D401C68651E4802602048036019484FF40041\n" 
+"016021480078401E1F4908701F480078012804D11D4840\n" 
+"6808B1FAF74DFF1B480078401E1949087031BD00002087\n" 
+"8900A4748600C08789000CC00A409087890000C00A4000\n" 
+"D00A40848789007C8789008C2D880084E100E02C878900\n" 
+"6087890004E100E008D00A4008C00A4004C00A40EC8789\n" 
+"0010C00A4004D00A40FC8789000CD00A4010D00A408688\n" 
+"89001C27880000EB4012DFF8480D00EBC20090F82820D2\n" 
+"0702D44FF0FF307047426892699206FBD4406801600846\n" 
+"7047F8B50446F9F711FA054694F8F700B0B9012084F8F7\n" 
+"000220F8F705FB0FE007EB4710DFF8001D01EBC00090F8\n" 
+"2810C90705D5416889698906FBD4406806606068806980\n" 
+"0625D404F1E00009F052FB00BB04F1E00009F078FB0646\n" 
+"277807EB4710DFF8C41C01EBC00090F82810C907E6D580\n" 
+"6ADFF8581D08400828D0D131463846FFF7A9FF0A2EDAD1\n" 
+"0D213846FFF7A3FFD5E794F8F70050B104F1E00009F029\n" 
+"FB28B1002084F8F7000220F8F7BFFA2846BDE8F240F9F7\n" 
+"BFB9F8B5044694F8F600A0B9012084F8F6000220F8F7AC\n" 
+"FA0DE041688969C906FBD44068066816F4706F04D1F1B2\n" 
+"04F1CC0009F019FB60688069C00665D404F1CC0009F003\n" 
+"FB00285FD12578F19403F0CA820005EB4510DFF81C1C01\n" 
+"EBC00090F82810C90758BF4FF0FF36DFD5806ADFF8AC1C\n" 
+"0840082805EB4510DFF8F81B01EBC00090F828103FD1C9\n" 
+"0758BFFF2605D541688969C906FBD44068066816F4706F\n" 
+"C4D10D2E08BF0A26F1B22846FFF73BFFF7B20A2F03D10D\n" 
+"212846FFF734FF082EB4D105EB4510DFF8AC1B01EBC000\n" 
+"90F82810C90706D5416889698906FBD440682021016005\n" 
+"EB4510DFF88C1B01EBC00090F82810C90799D541688969\n" 
+"8906FBD440680821016091E7C90789D4FF268DE794F8F6\n" 
+"0058B160688069C00607D5002084F8F6000220BDE8F240\n" 
+"F8F727BAF1BD38B504462578032D05DB4FF42B71DFF8E0\n" 
+"0BF8F7D4F805EB4510DFF8281B01EBC00595F82800C007\n" 
+"58BF4FF0FF3529D595F99A004109DFF8542D012300F01F\n" 
+"0003FA00F042F82100686869686A680023136340F8383F\n" 
+"41F8483F05F1AC0009F090FA05F1B40009F08CFA05F1BC\n" 
+"0009F088FA05F1C40009F084FAA86A40084000A8620025\n" 
+"0020C4F8F000C4F8DC0094F80401F9F7EFFE284632BD70\n" 
+"4770472DE9F24F84B0074614469A46032F05DB4FF47271\n" 
+"DFF83C0BF8F782F807EB4710DFF8841A01EBC0064FF484\n" 
+"713046FDF769FA377027B9DFF81C0C706020200CE0012F\n" 
+"04D1DFF8100C7060212005E0022F05D1DFF8080C706022\n" 
+"2086F89A001698C6F8F0001898C6F8DC00D6F8F00028B9\n" 
+"40F2CF31DFF8DC0AF8F752F8D6F8DC0028B94FF47471DF\n" 
+"F8CC0AF8F749F80498DFF8601C884227BF07F10F004FF0\n" 
+"487707F10B004FF0C87786F8040196F80401F9F766FE01\n" 
+"2106F1AC0009F041F9012106F1B40009F03CF9002106F1\n" 
+"BC0009F037F9002106F1C40009F032F9179AD6F8DC1006\n" 
+"F1CC0009F0BDF9159AD6F8F01006F1E00009F0B6F9C6F8\n" 
+"9070706800F12C0830300190706800F1340900F1380500\n" 
+"F1480B443002904FF440700090149818B1009840F08000\n" 
+"00903CB1009840F440400090B06A40F40020B062019800\n" 
+"990160049A3946706800F006FD12981399084311990843\n" 
+"40F0100000900098C8F800000F980E9941EAC000009000\n" 
+"98C9F8000001E07068006870688069C006F9D51098BAF1\n" 
+"000F0AD00321CBF80010B16A41F00601B1624FF4F06129\n" 
+"600DE038B14FF4FE612960B16A41F00401B16201E00021\n" 
+"29600021CBF80010B16A41F00101B1620199096841F001\n" 
+"01019A11607168096C029A116096F99A104A09DFF8203C\n" 
+"012401F01F0104FA01F143F8221050B196F99A004109DF\n" 
+"F80C2C00F01F0004FA00F042F82100002005B0BDE8F08F\n" 
+"38B500EB4011F1940380CE8200DFF8D40C00EBC1046068\n" 
+"00F1440100F14002001D15680D6094F82810C90703D401\n" 
+"2084F88C0031BD15F4F06F16D0290648BF03210AD4E905\n" 
+"48BF042106D4A90548BF052102D4690502D5062184F88C\n" 
+"10012184F899100168016031BD002084F88C0015F0500F\n" 
+"0CD02046FFF7DCFD94F8F40030B1002084F8F40004F1C4\n" 
+"0009F05BF8A8060CD52046FFF771FD94F8F50030B10020\n" 
+"84F8F50004F1BC0009F04CF8012084F8980031BD2DE9F1\n" 
+"4F90B00C46C069C046054628780B9000200C904FF0010A\n" 
+"012660680E902068C0F3012040010F902068C0F3802000\n" 
+"B108200D902068000B00F00700012802D0022802D003E0\n" 
+"022000E006200C906769D4F80C802078C00740F12381A3\n" 
+"69226939464046FDF73BFC28B940F26651DFF82408F7F7\n" 
+"F6FEB7F1011F28BF4FF0FF3080F08B81B8F1011F2CBF4F\n" 
+"F4803040462168C1F3405139B10B99002918BF012902D1\n" 
+"B146B34602E04FF00009CB4621690A910990A069089007\n" 
+"972068C0F3C02006900D9805900F9804900C9803900020\n" 
+"0290CDF804B0CDF8009001232068C0F300120E990B98C0\n" 
+"B2FFF72BFE0090A86ADFF8401B084040EA892040EA4B30\n" 
+"40F00200A8620B9818B1022805D002D309E0022002E003\n" 
+"2000E0042085F83A0085F866000DE0052085F83A0085F8\n" 
+"66000B98032805DB40F2A151DFF85C07F7F791FEE069A8\n" 
+"652068C0F34050002814BF4FF003094FF000092068C00B\n" 
+"00F00700401E062819D8DFE800F004070A0D101316004F\n" 
+"EAD71A10E04FEA971A0DE04FEA571A0AE04FEA171A07E0\n" 
+"4FEAD70A04E04FEA970A01E04FEA570ABAF1000F08BF4F\n" 
+"F0080A05F10800B4E80E58A0E80E5806CC06C054F8200D\n" 
+"C0F3420085F8380085F8396085F83B90EF63C5F840A0A0\n" 
+"696864DFF8640AA8641098E864A068E86505F13400FDF7\n" 
+"5AF9E862002805D540F2E551DFF8A406F7F735FEE86A00\n" 
+"284BD42068800C00F00700401E062819D8DFE800F00407\n" 
+"0A0D101316004FEAD81610E04FEA98160DE04FEA58160A\n" 
+"E04FEA181607E04FEAD80604E04FEA980601E04FEA5806\n" 
+"06B901262068C0F3421085F86400002085F8650085F867\n" 
+"90C5F86880EE6620692867DFF8D40968671098A867A068\n" 
+"E86505F16000FDF711F92863002805D540F22261DFF810\n" 
+"06F7F7ECFD286B00283FD5E86AFDF72AF92846FFF704FD\n" 
+"6FF002007BE02068C0F3C239C0F3824B20690A90CDF824\n" 
+"80A069089007972068C0F3C02006900D9805900F980490\n" 
+"0C9803900296CDF804B0CDF8009000232068C0F300120E\n" 
+"990B98C0B2F1940310D28200FFF72CFD009005F10800B4\n" 
+"E8CE51A0E8CE51203CA86ADFF84019084040EA892040EA\n" 
+"4B3040F00400A862A86A40F00100A862A86A20F4E02021\n" 
+"68C1F3023140EA0140A8622068C0F30120401DA96A21F0\n" 
+"F00141EA0010A8622068C0F38020401CA96A21F4407141\n" 
+"EA0020A862A86A20F008002168C1F3805140EAC100A862\n" 
+"A86A20F400202168C1F3001140EAC140A862A86A20F480\n" 
+"102168C1F3C02140EA0150A8620E98C5F8940095F89B00\n" 
+"401C85F89B00009811B0BDE8F08F38B50024C069C04605\n" 
+"4695F89B00401E85F89B0095F89B0060B9287AC00705D5\n" 
+"E86AFDF792F8286BFDF78FF82846FFF769FC0446204632\n" 
+"BDF8B50E4615460024C069C04636B2761E012E40F29180\n" 
+"B61E14D0761E17D0761E1AD0761E1CD04FF4FD71761A1C\n" 
+"D0761E38D0761E3AD0761E59D0761E5ED0761E63D077E0\n" 
+"C06AFDF781F8044674E02946C06AFDF79BF86FE0C06AFD\n" 
+"F7A0F86BE0C06AFDF7A8F867E0007800EB4011DFF8A003\n" 
+"00EBC10090F82810C90758BF6FF0070459D5416801F130\n" 
+"06376831684908490031602A46D0F89010406800F011FA\n" 
+"376049E0D0F89400286045E0017AC90703D5006BFDF73A\n" 
+"F83EE0007800EB4011D44800EBC10505F1B40008F00EFE\n" 
+"05F1CC0008F07FFE01E06868006868688069C006F9D505\n" 
+"F1B40008F0E5FD24E0406800F13001086840F4404019E0\n" 
+"406800F13001086820F4404012E0DFF85C27126803781B\n" 
+"B940F64940024305E0012B04BF42F4400242F4922242F4\n" 
+"4040DFF83C17086001E04FF0FF342046F2BD2DE9F04104\n" 
+"460D4616469846C069C0460746387AC0070FD507F1B400\n" 
+"08F0C7FD434632462946386BFCF7E0FF044607F1B40008\n" 
+"F0A2FD06E0324629462069C0B200F025FA04462046BDE8\n" 
+"F081F8B504460D461646C069C0460746387AC0070ED507\n" 
+"F1AC0008F0A3FD32462946F86AFCF7BBFF044607F1AC00\n" 
+"08F07FFD06E0324629462069C0B200F091F904462046F2\n" 
+"BD2DE9F04104460D4616469846C069C0460746387AC007\n" 
+"22D518F1010F05D0414607F1B40008F0B1FD03E007F1B4\n" 
+"0008F076FD434632462946386BFCF78FFF8046DDF818C0\n" 
+"BCF1000F04D04346324629462046E04707F1B40008F047\n" 
+"FD06E0324629462069C0B200F0CAF980464046BDE8F081\n" 
+"2DE9F84304460D4616469846C069C0460746387AC0070E\n" 
+"D507F1AC0008F046FD32462946F86AFCF75EFF814607F1\n" 
+"AC0008F022FD06E0324629462069C0B200F034F981465F\n" 
+"EA080004D04B46324629462046C0474846BDE8F2832DE9\n" 
+"F0410F46F19403A0D5820090F81080B8F1030F04DB40F2\n" 
+"3B718448F7F7ECFB08EB4810DFF89C1501EBC00494F828\n" 
+"00C0073AD5656825B940F241717B48F7F7DBFB04F1F806\n" 
+"032F0ED108EB4810DFF8741501EBC00707F1E00008F077\n" 
+"FD00B37868806900061CD5A88C3080288D708095F82C00\n" 
+"307195F834007071288F3081B5F848007081288EF080A0\n" 
+"6AC0F3400058B1E06AFDF712F918B9206BFDF70EF918B1\n" 
+"4FF0FF30BDE8F0810020BDE8F08138B5047C032C04DB40\n" 
+"F273715B48F7F79BFB04EB44102E4901EBC00494F82800\n" 
+"C00735D5656825B940F27C715348F7F78BFB04F1F80000\n" 
+"2129860188A98441882985017985F82C10417985F83410\n" 
+"018929874189A5F84810C0882886A06AC0F3400028B1E0\n" 
+"6AFDF7E2F8206BFDF7DFF8B5F84000A5F8440094F99A00\n" 
+"4109DFF8A823012300F01F0003FA00F042F82100002032\n" 
+"BD002120B1022804D038BF0C2102E0032100E03021DFF8\n" 
+"8004DFF880240260DFF8800400688843DFF87824106010\n" 
+"6808431060DFF86404002101607047A476890010B50020\n" 
+"FFF7DCFF0120FFF7D9FF0220FFF7D6FFDFF828444FF484\n" 
+"712046FCF71BFD0020207060486060202084F89A00DFF8\n" 
+"30444FF484712046FCF70DFD012020705A486060212084\n" 
+"F89A00DFF818444FF484712046FCF7FFFC022020705448\n" 
+"6060222084F89A00DFF8000400210180DFF8FC030180DF\n" 
+"F8FC030180DFF8C013DFF8F403FDF7BCFBDFF8D813DFF8\n" 
+"EC03FDF7B6FB2146DFF8E803BDE81040FDF7AFBB000008\n" 
+"0010002C6E86001301B1FBF3FC03FB1C1C4FEA8C0CBCFB\n" 
+"F2F2B1FBF3F141EA02418AB24262C1F307418162704770\n" 
+"B50D46164600EB4011DFF8600300EBC10404F1AC0008F0\n" 
+"F4FBC4F8A050C4F8A4603546F8F703FB0646002084F8F5\n" 
+"0024E004F1E00008F066FC78B1012084F8F5002046FFF7\n" 
+"DEF8304680F3108804F1BC0008F0D6FBF8F7EAFA0646D4\n" 
+"F8A000401CC4F8A00010F8011D04F1E00008F058FCD4F8\n" 
+"A400401EC4F8A400D4F8A4000028D6D1304680F3108820\n" 
+"46FFF7BAF804F1AC0008F09BFB284670BD10B500EB4011\n" 
+"B24800EBC10404F1E00008F023FC28B160688069000601\n" 
+"D5002010BD012010BD00EB4011A94800EBC100D0F89400\n" 
+"70470000000000400B4000500B4000400C40F8B50D4616\n" 
+"4600EB4011A04800EBC10404F1B40008F084FBC4F89C50\n" 
+"C4F8A860002084F8F400D4F8A850F8F78FFA064620E004\n" 
+"F1CC0008F0EDFB60B1012084F8F400304680F3108804F1\n" 
+"C40008F068FBF8F77CFA0646D4F89C70781CC4F89C0004\n" 
+"F1CC00F1940330D9820008F001FC3870D4F8A800401EC4\n" 
+"F8A800D4F8A8000028DAD1304680F3108804F1B40008F0\n" 
+"31FB2846F2BD000080E100E0016A180080B58D48007840\n" 
+"1C8B4908708B480078401C8A4908708A48012101600020\n" 
+"FFF77AFA85480078401E8349087083480078012804D181\n" 
+"48406808B1F9F725FF7F480078401E7D49087001BD38B5\n" 
+"7A480078401C7949087079480078401C77490870774802\n" 
+"2101606C4C606800F1440100F14002001D15680D6094F8\n" 
+"2810C90703D4012084F88C003EE015F4F06F16D0290648\n" 
+"BF03210AD4E90548BF042106D4A90548BF052102D46905\n" 
+"02D5062184F88C10012184F899100168016024E0002084\n" 
+"F88C0015F0500F0CD02046FFF73AF894F8F40030B10020\n" 
+"84F8F40004F1C40008F0B9FAA8060CD52046FEF7CFFF94\n" 
+"F8F50030B1002084F8F50004F1BC0008F0AAFA012084F8\n" 
+"980061E080E200E000E100E038B549480078401C474908\n" 
+"7047480078401C464908704648042101603B4C606800F1\n" 
+"440100F14002001D15680D6094F82810C90703D4012084\n" 
+"F88C003EE015F4F06F16D0290648BF03210AD4E90548BF\n" 
+"042106D4A90548BF052102D4690502D5062184F88C1001\n" 
+"2184F899100168016024E0002084F88C0015F0500F0CD0\n" 
+"2046FEF7D7FF94F8F40030B1002084F8F40004F1C40008\n" 
+"F056FAA8060CD52046FEF76CFF94F8F50030B1002084F8\n" 
+"F50004F1BC0008F047FA012084F898001A480078401E19\n" 
+"49087019480078012804D11748406808B1F9F750FE1448\n" 
+"0078401E1349087031BDA4768900FB03FFFF69CC82006B\n" 
+"CC8200FD03FFFFC0000B40FC000B407347BCBCE8000B40\n" 
+"AC778900B478890030400B4030500B4030400C40582C88\n" 
+"008C2C8800C02C8800868889001C27880084E200E070B4\n" 
+"0A68120E02F00702022A02D0042A0FD010E003222023DF\n" 
+"F8C048DFF8C058E56100240D68ED0F47D00C682402240A\n" 
+"63E00522EFE701221023DFF8A048DFF8A058E5614FF0FF\n" 
+"340D682D022D0AB5F5FA5F2DD042F61136B54227D0B5F5\n" 
+"7A5F22D045F22266B5421CD0B5F5FA4F17D04AF64446B5\n" 
+"4211D04BF68036B5420BD0DFF86068B54205D0DFF85C68\n" 
+"B54210D10B240EE00A240CE009240AE0082408E0072406\n" 
+"E0052404E0042402E0022400E00024002C37D50F2435E0\n" 
+"0D682D022D0A012D18D0022D13D0082D0ED0102D09D020\n" 
+"2D04D0402D10D1DFF80C480DE04BF680340AE04AF64444\n" 
+"07E04FF4FA4404E04FF47A5401E04FF4FA54A5010C24DF\n" 
+"F8E067B5421EBFDFF8D4673668002E0AD0DFF8C867366A\n" 
+"B560F19403C0DC8200DFF8C0572D6AAD68DFF8B867F561\n" 
+"48BB0D68C5F30175012D08BF42F0480205D00D68C5F301\n" 
+"750DB942F00802DFF8A4572D682D6C2D0C2D04DFF89867\n" 
+"36683564DFF890572D682D6C2A43DFF888572D682A64DF\n" 
+"F8802712681363DFF878271268536329E0012827D10D68\n" 
+"C5F30175012D08BF42F4904205D00D68C5F301750DB942\n" 
+"F40062DFF84C572D682D6CADB2DFF8446736683564DFF8\n" 
+"3C572D682D6C2A43DFF830572D682A64DFF82827126893\n" 
+"63DFF820271268D363112B04D3DFF814271268082319E0\n" 
+"DFF8FC26D269DFF808379A4205D1DFF8FC26126840F201\n" 
+"130CE0DFF8E026D269DFF8F4369A42DFF8E42612680CBF\n" 
+"40F202230023D362DFF8D4261268D26822F03102DFF8B8\n" 
+"361B680BB942F0010288B922F4706040EA04220868C0F3\n" 
+"8070E8B142F002020868C0F30170012816D142F0400213\n" 
+"E0012811D120020B68C3F3807343B140F002000968C1F3\n" 
+"0171012908BF40F00100DFF8781609680861DFF8700600\n" 
+"68C26070BC704780B5DFF86006006808210160DFF85806\n" 
+"006802210160DFF84C0600684160DFF8440600680021C1\n" 
+"623C21DFF82806FCF788F9DFF82006002141600160DFF8\n" 
+"34168160C160DFF81416C161DFF8281601628868DFF800\n" 
+"16C861DFF8200608F069F9DFF81C0608F065F9DFF8EC15\n" 
+"DFF81406BDE80440FDF739B810B50C0002D14FF0FF3010\n" 
+"BDDFF8D0050069002802BFDFF8C4054069002800D037E2\n" 
+"1E20F8F78FFD6068DFF8B01508602078002818BF022818\n" 
+"D1DFF8B005006802210160DFF8A805006850210160DFF8\n" 
+"9C05006844F201010160DFF880050121016104F1080100\n" 
+"20FFF74BFE2078012818BF022818D1DFF8740500680221\n" 
+"4160DFF86C05006850214160DFF8600500684CF2010141\n" 
+"60DFF844050121416104F108010120FFF72DFEDFF84405\n" 
+"006840F205514161002010BD80B5DFF82005006968B1DF\n" 
+"F818050068E8B1DFF820050068806920F40040DFF81415\n" 
+"09688861DFF8FC04406900281EBFDFF8F4040068002809\n" 
+"D0DFF8F8040068006A20F40040DFF8EC1409680862DFF8\n" 
+"D40400214161016141601E20F8F742FD002002BD70B50C\n" 
+"4615462E46DFF8B804406800B960E0DFF8AC04006900B9\n" 
+"5EE0012D1CDA304670BD2278637842EA0322A37842EA03\n" 
+"42E37842EA0362DFF898341B689A60241D2D1F401C8842\n" 
+"01D2012DEADA012DE4DBDFF8900408F0BEF8DFF8740400\n" 
+"688069C0B2C0F180010020ECE770B50C4615462E46DFF8\n" 
+"4C04406800B92AE0DFF84004406900B928E0012D1CDA30\n" 
+"46F1940350E0820070BDDFF840040068806804F8010B03\n" 
+"0A04F8013B030C04F8013B000E04F8010B2D1F491C9142\n" 
+"01D2012DEADA012DE4DBDFF8280408F088F8DFF8080400\n" 
+"68006AC2B20021EEE76FF0070070BD6FF0050070BD10B5\n" 
+"0024491E0CD040F2FF10091A00F02D81491E012940F2A7\n" 
+"80891E012926D935E1DFF8BC034068002800F0A180DFF8\n" 
+"B0034069012809D1DFF8B8030068006840F00200DFF8AC\n" 
+"1309680860DFF894030069012840F01D81DFF898030068\n" 
+"406840F00200DFF88C130968486011E1DFF87003406800\n" 
+"287BD0DFF868030069012846D1DFF85C034068401EDFF8\n" 
+"54134860DFF860030068C06820F02000DFF854130968C8\n" 
+"60DFF84C030068C06800F47060B0F5706F13D1DFF83803\n" 
+"0068C06820F47060DFF82C130968C860DFF824030068C0\n" 
+"6840F47060DFF818130968C860DFF810030068006820F0\n" 
+"A000C14909680860C0480068406920F08000BD49096848\n" 
+"61BC480068806920F40040B94909688861B44840690128\n" 
+"24D1B2484068401EB0494860B3480068C06820F01000B1\n" 
+"490968C860AF480068406820F08000AD4909684860AB48\n" 
+"0068406920F40040A94909684861A7480068006A20F400\n" 
+"40A54909680862002104207EE09E484068022800DB91E0\n" 
+"9B48006901282FD199484068401C984948609B48006840\n" 
+"6940F080009849096848619348006838B1954800688069\n" 
+"40F4004093490968886191480068C06840F028008F4909\n" 
+"68C86095484FF4804101608B480068006840F080008949\n" 
+"0968086090484FF4804101608148406901282FD17F4840\n" 
+"68401C7E49486081480068406940F400407E4909684861\n" 
+"7D480068C06840F010007A490968C8607548006838B177\n" 
+"480068006A40F400407549096808627B484FF480410160\n" 
+"71480068406840F080006F490968486076484FF4804101\n" 
+"6001210520F6F7E5FA01210620F6F7E1FA01210720F6F7\n" 
+"DDFA05211820F6F7D9FA05211920F6F7D5FA12E0614800\n" 
+"68406840F002005E49096848605D480068006840F00200\n" 
+"5A490968086001E04FF0FF34204610BD6FF0070010BD51\n" 
+"48406808B34F4853490968C96841625149096809698162\n" 
+"4F480068C06820F030004C490968C8604B480068406840\n" 
+"F0020048490968486047480068006840F0020044490968\n" 
+"0860002070473E484068D0B140480068406840F002003E\n" 
+"49096848603C480068006840F002003A49096808603848\n" 
+"00683349896A0161364800683149496AC1600020704710\n" 
+"B53C480078401C3A4908703A480078401C394908703948\n" 
+"F19403E0E382004FF4804101602748006900281FBF2948\n" 
+"0068006810F0400411D0264800688069C0B2C0F1800001\n" 
+"28A4BF274807F0EAFE20480068006820431E4909680860\n" 
+"1948406900281FBF1B480068406810F040040FD0184800\n" 
+"68006AC0B20128A4BF1B4807F0D0FE1348006840682043\n" 
+"11490968486019484FF48041016018480078401E164908\n" 
+"7016480078012804D11448406808B1F9F7BBF912480078\n" 
+"401E1049087010BD0000E4868900001BB7008858010000\n" 
+"7701007C2D88000080BB008041AC005F000067802D8800\n" 
+"1887890010878900482D880084E200E004E100E0868889\n" 
+"001C27880084E100E080B5002000F017F802215E4807F0\n" 
+"A6FE04215C4807F0A2FE20215A4807F09EFE4021584807\n" 
+"F09AFE4FF000415648BDE8044007F093BE80B500285448\n" 
+"00680CD040F4806051490860086840F08000086002214E\n" 
+"4807F082FE12E020F080004B490860086820F480600860\n" 
+"086820F00400086049E04648007810B10220F9F7A7FB44\n" 
+"4800688007F5D54048006840F004003E49086005E03E48\n" 
+"007810B10220F9F796FB3C4800684007F5D53748006840\n" 
+"F010003549086005E03548007810B10220F9F785FB3448\n" 
+"00684003F5D432480068800307D42E4800780028F7D002\n" 
+"20F9F776FBF3E72C480068C00349D5284800780028F7D0\n" 
+"0220F9F76AFBF3E72448007810B10220F9F763FB224800\n" 
+"684007F5D41E48006820F002001C49086005E01C480078\n" 
+"10B10220F9F752FB1A4800688007F5D41548006820F010\n" 
+"001349086005E01348007810B10220F9F741FB12480068\n" 
+"C003F5D51048006880030DD50C4800780028F7D00220F9\n" 
+"F732FBF3E70848007810B10220F9F72BFB074800684003\n" 
+"F5D501BD000004000E4044000E4008000E40848889000C\n" 
+"000E4048000E4003480021016003480160034801607047\n" 
+"54868900588689005C8689000B460146184601F0EDBA00\n" 
+"0032E210B50446616004F10800DFF81014016044600022\n" 
+"04F1080104F1100007F0CDFD41F6D4000021015140F2FC\n" 
+"7204F5C051F43104F5C050D83008F047FD42F6F0000021\n" 
+"015142F6F400015542F6F50001210155204610BD10B504\n" 
+"4604F5C050D830C046C04604F1100007F0F8FD204610BD\n" 
+"70B504460D461646012160680268126A90473246294604\n" 
+"F1100007F0FAFFBEE1002160680268126ABDE810401047\n" 
+"10B50446012160680268126A904742F6F400005D30B158\n" 
+"22DFF86813606803689B69984742F6F4000121015510BD\n" 
+"F8B504460F46154642F6F400005D30B95E22DFF84013F1\n" 
+"940370E78200606803689B6998472846007EC04630B15F\n" 
+"22DFF82C13606803689B699847284608F064FC86B2B01C\n" 
+"812FA8BF401C812EA8BF401C42F6F00109594018B0F500\n" 
+"6F07D37122DFF8F812606803689B6998474CE0802F0BDB\n" 
+"084642F6F001421C0A5142F2F00100193A0A42F080020A\n" 
+"5442F6F000005942F6F001421C0A5142F2F00100190F54\n" 
+"802E0DDB42F6F000005942F6F001421C0A5142F2F00100\n" 
+"19320A42F080020A5442F6F000005942F6F001421C0A51\n" 
+"42F2F00100190E54284608F016FC074628468068C0463A\n" 
+"46014642F6F0000059001900F50050F030FBF751FD42F6\n" 
+"F0000059301842F6F001085104F5C050D830BDE8F24008\n" 
+"F005BC10B5044642F6F400005D28B98A228D4960680368\n" 
+"9B69984742F6F4000021015542F6F000025992B204F500\n" 
+"51F03104F1100007F0A3FD42F6F000002101513AE7F0B5\n" 
+"83B004460D4616461F4642F6F400005D28B994227B4960\n" 
+"6803689B69984742F6F40000210155019700962B4642F6\n" 
+"F000025992B204F50051F03104F1100007F007FF42F6F0\n" 
+"000021015160680268126A03B0BDE8F040104700F5C050\n" 
+"D8307047F8B504460D46164600F02FF818B3012E2ADB15\n" 
+"F8011B701E0A0607D54FF67F72114015F8012B42EA0121\n" 
+"401E15F8016B471E300607D54FF67F70304015F8012B42\n" 
+"EA00267F1E33462A46204600F02AF87519BE1BDBE7D022\n" 
+"5249606803689B6901B0BDE8F0401847F1BD15E011F801\n" 
+"0B521E000644BF491C521E11F8010B521E030607D54FF6\n" 
+"7F73184011F8013B43EA0020521E4118121A012AE7DA50\n" 
+"1E8041C00F704770B588B004460D4611461A4600A808F0\n" 
+"65FB41F6D400065942F6F5000021015560680268126A90\n" 
+"4700E07668AEB100AA2946304633689B6898470028F5D0\n" 
+"00A808F039FB18B900A8007EC04628B1FE222B49606803\n" 
+"689B699847012160680268126A904742F6F50001210155\n" 
+"00A8C046C04608B070BD70B504460D4601216068026812\n" 
+"6A904735B94FF487721C49606803689B69984742F6F500\n" 
+"005D30B940F20F121749606803689B699847686830B14F\n" 
+"F488721249606803689B69984741F6D400065909E0AE42\n" 
+"06D140F215120C49606803689B6998477668002EF3D141\n" 
+"F6D4000059686041F6D4000551002160680268126ABDE8\n" 
+"704010470000086586002C658600406840680268926810\n" 
+"47406840680168C96808474068406803681B6918474068\n" 
+"4068016849690847406815E74068406803689B69184740\n" 
+"6840680168C9690847002141607047000070B50446F194\n" 
+"0300EB82003548364E0568B5B1287A88B16868A0420ED1\n" 
+"012028723078401C3070287A401E2872C0B210B9284608\n" 
+"F080FBF8F7A9FFED68002DE8D170BD10B5044628482949\n" 
+"016000200021024603460FC4103CF8F757FE21480168E1\n" 
+"60046020484078002804BFBDE81040F8F745BE10BD30B5\n" 
+"1B4D04462878401C287081B0A868217A11B9606001250D\n" 
+"E06168814208D01021204608F062FB207A0028F8D1A868\n" 
+"6060207A451C2572F8F76DFF284601B030BD0B490A7852\n" 
+"1C0A70017A491E0172C9B2002918BFF8F75EBF00B581B0\n" 
+"08F02FFB01B05DF804EBF8F755BFC4D288001C278800D4\n" 
+"758900FDEA820011490A78521C0A70104903E0824205D0\n" 
+"02F10C010A68AAB1824202D1C068086010E002F10C010A\n" 
+"6862B18242F6D002F10C010A6832B18242F0D002F10C01\n" 
+"0A68002AE3D1F8F729BF1C278800C4D28800F0B50E4681\n" 
+"B0044617461D463021FBF793FA12496774207C09780843\n" 
+"2074089884F8250006B12662079806994018C008C00000\n" 
+"2140F8501D4FF08071416408490164C5646FF002014162\n" 
+"09994160606001B02046BDE8F040F8F787BF8588890093\n" 
+"77820010B50446FFF7F4FCB9482060B948A060B9482060\n" 
+"B948A060204610BD083870B588B00C0015461E4616D0F7\n" 
+"F712F9014602A800F0A1FB014600A800F064FE32462946\n" 
+"00F07FFE012102A800F086FB02A8C046C046641EE8D108\n" 
+"B070BD10B50446FFF7C6FC964820609648A06096482060\n" 
+"9648D0E7083830B589B0F7F7EAF8014602A800F079FB01\n" 
+"4600A800F0D4FC08F0BFFA044608F0BAFA054608F0ADFA\n" 
+"23462A46014600A800F0C9FCA9E0083800B589B0F7F7CE\n" 
+"F8014602A800F05DFB014600A800F0B8FC08F0A6FA0146\n" 
+"00A800F0D4FC012102A800F040FB02A8C046C04609B000\n" 
+"BD0838084608F07FBB0838084608F0A2BB083870470838\n" 
+"084608F077BB08387047083838B50C46154629462046F5\n" 
+"F783FD40B92B4622467721784801B0BDE83040F6F778B8\n" 
+"31BD083880B5084611461A46039B0093029B08F0BBFB01\n" 
+"BD0838002918BFF8F746BEF8F70BBD10B50446FFF74DFC\n" 
+"5E4820605E48A0605E4820605E4857E708380846194608\n" 
+"F074BA0838084611461A4608F050BA083830B5C9B01446\n" 
+"1D46B5F5807F03D99E215C48F5F7AEFF2A4608A9204608\n" 
+"F0A1FAF7F758F8014602A800F0E7FA014600A800F01DFD\n" 
+"08AB2A46214600F01BFD012102A800F0CBFA02A8C046C0\n" 
+"4649B030BD083830B589B00C461546F7F73BF8014602A8\n" 
+"00F0CAFA014600A800F000FD2946204608F0A7FAF19403\n" 
+"90EE820003462A46214600A800F015FD012102A800F0A9\n" 
+"FA02A8C046C04609B030BD083830B589B00C461546F7F7\n" 
+"19F8014602A800F0A8FA014600A800F0DEFC2946204608\n" 
+"F0BCFA03462A46214600A800F00EFDDCE710B50446FFF7\n" 
+"D1FB244820602448A060244820602448DBE6083838B50C\n" 
+"4615460C20F9F71FF940B12B46224624490C2001B0BDE8\n" 
+"3040F9F725B931BD083870B582B00C4615461E462046F9\n" 
+"F76CF90C20F9F708F948B1002C14BF5422462200962B46\n" 
+"17490C20F9F70DF92846F9F7F1F83046BDE87640F9F7E9\n" 
+"B8DC638600F063860080728600BC728600286486003C64\n" 
+"8600F47286001C738600E4648600F8648600407386005C\n" 
+"73860060648600746486004C7286006872860064738600\n" 
+"74738600C473860030B4564982680B6A9A188260012202\n" 
+"744A692AB9026048610FF23100C8610CE001F114038468\n" 
+"9568651B012D03DB13461A68002AF7D10260186048694A\n" 
+"6A8068821A48BF486230BC7047000010B504460DE0A061\n" 
+"0168616100210174A0698160F8F7F4FBA06940688047F8\n" 
+"F7F5FB606928B18168226A8A1A012AEADB616210BD30B4\n" 
+"002300241D4638C018C01438C2608260416030BC704730\n" 
+"B581B00446F8F7DBFB207C2D4DC0B105F1140000E00846\n" 
+"016891B1A1420ED00846016869B1A14209D00846016841\n" 
+"B1A14204D00846016819B1A142EBD121680160E068A060\n" 
+"2046FFF78EFF687820B901B0BDE83040F8F7ADBB01B030\n" 
+"BD10B50446F8F7ADFB217C164809B300212174A168026A\n" 
+"891AA16000F1140100E011460A6892B1A2420ED011460A\n" 
+"686AB1A24209D011460A6842B1A24204D011460A681AB1\n" 
+"A242EBD122680A60416901B9C1614078002804BFBDE810\n" 
+"40F8F77BBB10BD000000001C27880080B50520F7F786FB\n" 
+"2048F5F7A9FF2048006840F002001E490860086820F002\n" 
+"0008601C48802101601B481C4901601C48006820F08070\n" 
+"1A49086040F0807008601548002101601248006820F004\n" 
+"00104908601448802101601220BDE80240F7F741BC10B5\n" 
+"0A48006810F01804FAD01220F7F763FC0648006820F004\n" 
+"0004490860084880210160E00810BD000008007707C400\n" 
+"0B4084E200E0FC000B407347BCBCE8000B4084E100E080\n" 
+"B531B90821104608F06DFA2349486001BD2249C978BDE8\n" 
+"044008F00ABA00B583B01E4900224A6001AA02A908F00E\n" 
+"FBC8B91B480090002304229DF80410029808F0C9F978B9\n" 
+"1548029941700221C1709DF80410817001210170C17802\n" 
+"9808F0E8F903B000BD5A210E48F5F7B7FD03B0F1940320\n" 
+"F2820000BD0A48406818B9084800780028F8D106484068\n" 
+"70470548007828B1034800210170407808F0CDB9704700\n" 
+"0080858900B1F182001474860010B5EFF3108072B60A4C\n" 
+"216841F47F01216080F31088A06E10F4700F04BFA72008\n" 
+"F0E8FA4FF00070C4F81C020020C4F8140210BD20ED00E0\n" 
+"FFE702484FF0C87101607047402C880030B581B004460D\n" 
+"46F8F7AAFA686920436861297C01F0F801082905D1A969\n" 
+"01421CBF2846F8F703FC0448407820B901B0BDE83040F8\n" 
+"F78EBA01B030BD1C2788000CB41CB5044604A801900A46\n" 
+"009401AB00A907487844183008F0C6FA009900220A7000\n" 
+"285CBF0098001B16BC5DF80CFB235EFFFF08B584B00023\n" 
+"029311B90093019302E00090481E019004AB00A9074878\n" 
+"44183008F0A8FA009909B100220A70002858BF029805B0\n" 
+"00BD00BF2751FFFF00F10103810704D010F8011B89B181\n" 
+"07FAD10268B2F10131914311F0803F04BF50F8042FF6E7\n" 
+"10F8011B11B110F8011BFBE7C01A7047000030B5104C05\n" 
+"462078401C81B02070F8F733FAA0684169294205D18561\n" 
+"082101742046F8F70CFAA0684569002141612078401E20\n" 
+"70607808B9F8F718FA284601B030BD00BF1C27880010B5\n" 
+"04461348206061600020A060E0602061FFE720756068FF\n" 
+"F7A0F9204610BD4068FFF7B2B9017D002904BF4068FFF7\n" 
+"34BA0369C26881684068FFF74EBA4068FFF778BA10B504\n" 
+"46FFF7DAFF02482060204610BDF0628600006386002DE9\n" 
+"FC4705461646012491B1012916D002291AD01A2923D01B\n" 
+"292FD02E2933D02F293CD0342949D036297BD0372956D0\n" 
+"86E005F10800A9688968884781E005F10800A968C96888\n" 
+"477BE030463168C96A8847014605F10800AA6812699047\n" 
+"70E030463168496A8847411E8941C943C90F05F10800AA\n" 
+"685269904762E005F10800A968896988475CE030463168\n" 
+"496B8847014605F10800AA68D269904751E03046316849\n" 
+"6A8847410801F0010200F0010105F10800AB681B6A9847\n" 
+"42E030463168496A8847074630463168496A8847024639\n" 
+"4605F10800AB685B6A984731E030463168496B88478246\n" 
+"30463168496B8847804630463168496B88478146304631\n" 
+"68496B8847074630463168496B8847019000974B464246\n" 
+"514605F10800AD68AD6AA8470EE030463168496A884741\n" 
+"1E8941C943C90F05F10800AA68D26A904700E000242046\n" 
+"BDE8F687DFF8F02502604160704710B504466068FFF743\n" 
+"FF0246002106E010B504466068FFF73BFF024601216068\n" 
+"BDE81040FFF725BF70B504460D466068FFF7F19403B0F5\n" 
+"82002EFF06462946326812699047324602210CE070B504\n" 
+"460D466068FFF720FF0646294632689268904732461A21\n" 
+"6068BDE87040FFF705BF10B504466068FFF70FFF02461B\n" 
+"21D2E770B504460D466068FFF706FF0646294632689269\n" 
+"904732462E21E4E7F8B504460D4616466068FFF7F7FE07\n" 
+"46002E14BF0220002040EA050138463A68926890473A46\n" 
+"2F2112E0F8B504460D4616466068FFF7E2FE074629463A\n" 
+"6892689047314638463A68926890473A4634216068BDE8\n" 
+"F840FFF7C2BE2DE9F04104460F4690461D466068FFF7C8\n" 
+"FE06463946326892699047414630463268926990472946\n" 
+"3046326892699047069930463268926990470799304632\n" 
+"6892699047324637212AE070B504460D466068FFF7A6FE\n" 
+"064629463268926890473246362184E7DFF8E4234FE72D\n" 
+"E9F04104460F4690461D466068FFF792FE064639463268\n" 
+"9269904741463046326892699047294630463268926990\n" 
+"47324603216068BDE8F041FFF76DBE70B504460D466068\n" 
+"FFF776FE064629463268926990473246042154E7DFF888\n" 
+"231FE72DE9F04104460D4690461F466068FFF762FE0646\n" 
+"07F08BFCF91C884203D2304607F085FCC71EB9B2304632\n" 
+"6812699047BAB24146304633681B6A9847002130463268\n" 
+"9268904732462946C3E713460A461921D5E72DE9F04104\n" 
+"4616460125052921D0062937D0072904D030294AD03129\n" 
+"59D069E030463168496A8847471EBF41FF433046316849\n" 
+"6B8847804630463168C96A884703464246F90F04F10800\n" 
+"A4682469A04751E030463168496B8847074630463168C9\n" 
+"6A88478046414630463268D26B904703464246394604F1\n" 
+"0800A468A468A04739E030463168496B88470746304631\n" 
+"68496B8847804630463168496B884703464246394604F1\n" 
+"0800A468E468A04722E030463168496B88470746304631\n" 
+"68496B88470246394604F10800A3685B69984711E03046\n" 
+"3168496B8847074630463168496B88470246394604F108\n" 
+"00A3689B69984700E000252846BDE8F081DFF8342274E6\n" 
+"2DE9F0410446884615461E466068FFF7B7FD074641463A\n" 
+"6892699047294638463A68126990472A46314638463B68\n" 
+"1B6A98473A46082122E72DE9F04104460F4690461D4660\n" 
+"68FFF79BFD064639463268926990474146304632689269\n" 
+"9047294630463268926990473246322107E72DE9F04104\n" 
+"460F4690461D466068FFF780FD06463946326892699047\n" 
+"4146304632689269904729463046326892689047324633\n" 
+"21ECE62DE9F041044615460126092902D0F1940340F982\n" 
+"000A2918D029E028462968496A8847074628462968C96A\n" 
+"88478046414628462A68D26B904703464246394604F108\n" 
+"00A468A468A04712E028462968C96A8847074639462846\n" 
+"2A68D26B90470246394604F10800A368DB68984700E000\n" 
+"263046BDE8F081614AFFF7E8BD2DE9F041044688461546\n" 
+"1E466068FFF72AFD074641463A6892689047294638463A\n" 
+"68126990472A46314638463B681B6A98473A46092195E6\n" 
+"F8B504460D4616466068FFF710FD074629463A68126990\n" 
+"472A46314638463B681B6A98473A460A21FFF72BBE2DE9\n" 
+"F843044616464FF001081C2904D044D31E2930D00ED340\n" 
+"E030463168496A8847411E8941C943C90F04F10800A268\n" 
+"9268904734E030463168496A8847471EBF41FF43304631\n" 
+"68496A8847451EAD41ED4330463168C96A884781463046\n" 
+"3168C96A884700904B46EA0FF90F04F10800A468E468A0\n" 
+"4713E030463168C96A88470746394630463268D26B9047\n" 
+"0246394604F10800A3681B69984701E04FF000084046BD\n" 
+"E8F2831E4AFFF760BD486386006063860080638600F8B5\n" 
+"04460D4616466068FFF79EFC074629463A68126990472A\n" 
+"46314638463B681B6A98473A461F21FFF7B9BDF8B50546\n" 
+"16460124202911D130463168C96A884707463946304632\n" 
+"68D26B90470246394605F10800AB689B68984700E00024\n" 
+"2046F2BD00009C638600B4638600DFF8A420FFF720BD00\n" 
+"00F8B504460D4616466068FFF763FC074629463A681269\n" 
+"90472A46314638463B681B6A98473A462121FFF77EBD00\n" 
+"00106386002DE9F0410446164601252A2902D02B2911D0\n" 
+"28E030463168496B8847074630463168C96A8847024639\n" 
+"4604F10800A3681B68984718E030463168496A88470746\n" 
+"30463168496A8847804630463168496B88470346424607\n" 
+"F0010104F10800A4686468A04700E00025FFF755BEC863\n" 
+"860030B581B00400194D08BFAC68F7F70AFE207C401C20\n" 
+"74A868844208D1012068712C78601C28702846F7F7DFFD\n" 
+"2C70687820B901B0BDE83040F7F7EEBD01B030BD10B504\n" 
+"46F7F7EEFD207C401E207404D12046BDE81040F7F789BF\n" 
+"04484078002804BFBDE81040F7F7D7BD10BD1C27880038\n" 
+"B504460D46AC4205D0206820188047241DAC42F9D131BD\n" 
+"F8B504460D461646C046C0461948016809B91949016007\n" 
+"6818498F422EBF002707F10C010160C046C0460FB90120\n" 
+"F2BD3D607C60BE600020F2BD0020F8B50D4C25682E0000\n" 
+"D1F1BD0B4F0AE0064605460C3E7168080004D000207060\n" 
+"306830B1884720688542F1D1BE42F1D1F19403D0FC8200\n" 
+"F1BD8847F7E70000208089009C8889004C8A890080B5C0\n" 
+"46C046024A11001820ABBEFBE7260002007047000010B5\n" 
+"08F08EFCFBF70AF8DFF85C21C2E90001DFF84C01046827\n" 
+"E0E068C0F3800010BBE06840F00400E060DFF840010068\n" 
+"28B940F27F11DFF83801F5F729F89CB1A068002810D4E0\n" 
+"6840F00100E060A068F8F730FDA068F8F76BFDD4E90623\n" 
+"002110185941C4E906016468002CD5D1002010BD2DE970\n" 
+"4382B008F053FCFAF7CFFFDFF8E420D2E90045041B61EB\n" 
+"0505DFF8D000066817E0D6E906890023B8EB010269EB03\n" 
+"03C6E90623F06820F00600F0600FF2850000900123DFF8\n" 
+"A8000268B068F8F780FC7668A6B3F068C0F380000028F8\n" 
+"D0D6E90601A94205D828BFA04202D20120002101E0001B\n" 
+"A941C6E906011F48006820B94FF4A7711D48F4F7C9FF00\n" 
+"2EE0D0B0680028DDD4307BC00704D4D6E90401C6E90601\n" 
+"03E0F06840084000F060D6E9060101292CBF4FF0FF31D6\n" 
+"E90613B1E70020BDE876830949096800E0496861B18A68\n" 
+"8242FAD10220CA6860F30202CA6008494FF00040FFF724\n" 
+"BA70470000C0798900F42C8800604F8800BC798900606F\n" 
+"8600CC798900002208F0DBBB000008B400B584B005AB03\n" 
+"930023029311B90093019302E00090481E019003AB00A9\n" 
+"074878441A3007F0F1FC009909B100220A70002858BF02\n" 
+"9804B05DF808FB00BFB745FFFF10B50446002020606060\n" 
+"41F250200021015541F25120015504F590503830FEF72B\n" 
+"FE204610BD10B5044600F067F841F25020005D18B104F1\n" 
+"080008F0C9FB04F590503830FEF770FE204610BD10B58C\n" 
+"B004462068002849D140F2DD3004904FF40060079004F1\n" 
+"380008904FF40060099004F638000A901F20049960F3D5\n" 
+"3104914FF461200590002006900B9004A940F20220FBF7\n" 
+"06F8206068B30120FEF7CFFA0120F5F757F81E20F7F795\n" 
+"FE002240F202212068FBF730F841F25020005DA8B941F2\n" 
+"5020012101550394022002904FF40070019004F5805038\n" 
+"3000900FF2CD034622504904F10800FEF746FE206810B1\n" 
+"01200CB010BD00200CB010BD10B504462068E0B10020FE\n" 
+"F79AFA0120F5F725F841F251200121015504F590503830\n" 
+"FEF7C5FD2068FAF7D9FF0020206004F590503830FEF7DC\n" 
+"FD41F251200021015510BD10B5036863B11846FBF74BF8\n" 
+"0446012C04DA22467D213448F4F702FF204610BD002010\n" 
+"BDF8B504460E4615461F462068D8B141F25120005DB8B9\n" 
+"04F590503830FEF794FD676041F24820065141F24C2005\n" 
+"5104F590503830FEF7A9FD04F10801F194036000830001\n" 
+"20BDE8F440FFF71BB9F1BD00BF00BF10B504461CE01D49\n" 
+"042008F04FFB206888B1C82341F24C20025941F2482001\n" 
+"592068FAF7DCFF012813DB014641F24820005962689047\n" 
+"04F590503830FEF77FFD012008F059FB04F590503830FE\n" 
+"F756FDDDE741F25121095D21B10949062008F025FBE8E7\n" 
+"0028CED00246BC210248F4F79FFECCE7906286009C6286\n" 
+"00D0628600B062860038B504460D46062C04D340F2B711\n" 
+"5948F4F742FE082D04D34FF4DC715548F4F73BFE042C32\n" 
+"BF54485448241F0168012205EBC4039A409143016031BD\n" 
+"2DE9F04704460E469046B4F5000F28BFA64204D24FF4F7\n" 
+"714748F4F71FFE04F57C50FF30800B4FEA803AF01C4FEA\n" 
+"9039AAF50000440CC0F38236062C78D038BF082E0CD34F\n" 
+"F4FE713B48F4F707FE06E0761C082E04BF0026641C0AF5\n" 
+"804ABAEB893F65D2B8F1000F3AD02546062D04D34FF4D0\n" 
+"713048F4F7F1FD082E04D340F2A1112D48F4F7EAFD042D\n" 
+"32BF2B482C482D1F0168012206EBC5039A40114301600A\n" 
+"252846451E00283CD02746062F04D34FF4EA712048F4F7\n" 
+"D1FD082E04D340F2D5111D48F4F7CAFD042F32BF1D481E\n" 
+"483F1F006806EBC701C840C007E1D521E031462046FFF7\n" 
+"6EFF0A252846451EC8B12746062F04D34FF4EA710F48F4\n" 
+"F7AEFD082E04D340F2D5110B48F4F7A7FD042F32BF0C48\n" 
+"0C483F1F006806EBC701C840C007E2D4002D93D14FF0FF\n" 
+"30BDE8F0870020BDE8F0870000B86686001CF00B4020F0\n" 
+"0B4024F00B4028F00B4070B400240025264670C070C018\n" 
+"384360C260818270BC704708F08EBA80B501F0C9FFD0F8\n" 
+"800000F0D1FF0348007802BD0149087070470000828889\n" 
+"0010B5DFF81C474FF48E720021204608F07EFA204610BD\n" 
+"DFF80807704710B5FFF7EFFF044600231A461146084600\n" 
+"F06AFAC046C04601F0D5FF204600F019F8C046C0462046\n" 
+"00F0D5F9204600F015F8204600F016F800F098F9002060\n" 
+"72A072E0722073012060730020E075A073012010BD0021\n" 
+"C171017225E00121417108467047012181710846704738\n" 
+"B50446012502F05BF8012804D12846E0700020A0700AE0\n" 
+"022804D10020E0702846A07003E00020E070A070054628\n" 
+"4632BD80B502F04EF8012002BD10B504460120C0460121\n" 
+"217010BD70B504460025E679E171FFF7F2FF002807D020\n" 
+"46FFF7C7FF2046FFF7C8FF012503E0E6712046FFF7E4FF\n" 
+"284670BD0EB470B5C1B0054600A84FF48071F9F7D3FEFF\n" 
+"F780FF044645AB2A464FF4807100A8FEF79BFF00A8FEF7\n" 
+"B6FF451C00A82818002100F8011CF19403F0038300DFF8\n" 
+"E8653078401C3070F7F701FA7078401C7070207E2818FF\n" 
+"2810DA207E002803D0207E00190A2101762A4600A9207E\n" 
+"0019193004F0E4FA207E281820767078401E7070C0B200\n" 
+"2801D1F7F7DBF9F7F720FB41B070BC5DF810FB2DE9F843\n" 
+"05460E4617464FF00208F7F7D2F9DFF87C456078401C60\n" 
+"709DF80000401E8DF8000017F8019B00AB4A4639463046\n" 
+"02F003F8002809D06078401E6070C0B2002801D1F7F7B0\n" 
+"F9012018E05FFA88F8424629460FF24850FFF788FF4046\n" 
+"A0F101080028E0D16078401E6070C0B2002801D1F7F799\n" 
+"F92846C046C0460020BDE8F2832DE9F04704460D461646\n" 
+"1F46DFF8DC84089888F80000F7F78CF9DFF8F09499F801\n" 
+"00401C89F801004FF0020A434632463946284601F0F5FF\n" 
+"00280BD099F80100401E89F80100C0B2002801D1F7F76B\n" 
+"F901201AE05FFA8AFA524621460FF2CC40FFF743FF5046\n" 
+"A0F1010A0028DED199F80100401E89F80100C0B2002801\n" 
+"D1F7F752F92046C046C0460020BDE8F0872DE9F8430546\n" 
+"0E46174698464FF00209F7F748F9DFF868446078401C60\n" 
+"7042463946304601F0CDFF002809D06078401E6070C0B2\n" 
+"002801D1F7F72EF9012015E05FFA89F94A4629460FF244\n" 
+"40FFF706FF4846A0F101090028E1D16078401E6070C0B2\n" 
+"002801D1F7F717F90020BDE8F2832DE9F04706460F4690\n" 
+"4699464FF0020AF7F710F9DFF8F8536878401C6870089C\n" 
+"234642464946384601F0B5FF002809D06878401E6870C0\n" 
+"B2002801D1F7F7F4F8012015E05FFA8AFA524631460FF2\n" 
+"DC30FFF7CCFE5046A0F1010A0028E0D16878401E6870C0\n" 
+"B2002801D1F7F7DDF80020BDE8F08708F021BDF8B50446\n" 
+"02270025DFF890630DE039464F1EC9B200290AD1002804\n" 
+"D120690121A9408843206102276D1C172D10DA56F82500\n" 
+"006E006880470128E8D121690122AA401143216156F825\n" 
+"1001220A77E3E72069032803D0022801D0012802D140F4\n" 
+"80502061F1BD01F0DFBE81B00022ADF80220ADF80020C0\n" 
+"79042808D0062809D007280AD009280BD00A280CD00EE0\n" 
+"4FF448700DE04FF4C8600AE040F6282007E04FF47A6004\n" 
+"E041F2883001E040F6B830ADF802200DE0BDF80020521C\n" 
+"ADF80020BDF800208242F6DBBDF80220521CADF80220BD\n" 
+"F802208A4203D20022ADF80020EEE701B07047417230B5\n" 
+"97B002F026F90446FFF7CAFD054600A85C21F9F716FD00\n" 
+"20ADF858008DF801000DF101000A21417000218170C170\n" 
+"697A00290DD0002C18D000218DF8001005218DF801100B\n" 
+"21417000A808F062FE0CE0002CF19403800783000AD001\n" 
+"218DF8001005218DF801100B21417000A808F054FE17B0\n" 
+"30BD01F0F9BD01210846FAE702210120F7E708F07FBF10\n" 
+"B50446FFF78BFD447510BD2DE9F04782B00C4615462F46\n" 
+"264680464FF47A714FF03C0C4FF4616918FB09F216FB0C\n" 
+"22BA1801FB0232DFF8D4E19EF900A01AFB09F99EF901A0\n" 
+"1AFB0C9C9EF902904CFA89FCBEF9039001FB0C919EF808\n" 
+"C0BCF1000F22D144EA00012943194302D001218EF80810\n" 
+"8EF80000B8F1000F04D59EF8000018308EF800008EF801\n" 
+"408EF80250AEF8033000933B4632469EF900100FF2D810\n" 
+"FFF7B1FDBDE8F38791420DD3A1EB020CACF2D17CDFF87C\n" 
+"91CC45DAD30FF2941002B0BDE8F0479EE5D3D2A2EB010C\n" 
+"ACF2D179DFF85CA1D145CBD363460FF2841002B0BDE8F0\n" 
+"478EE510B504002FD002F024F94549CA68002A00D0841A\n" 
+"B1F80320A218A1F8032012B2B2F57A7F06DBA2F57A72A1\n" 
+"F803208A78521C8A7091F902203C2A04DB3C3A8A704A78\n" 
+"521C4A7091F901203C2A04DB3C3A4A700A78521C0A7091\n" 
+"F90020182A01DB00220A70C86010BD2E490522F9F7F3BC\n" 
+"00000FB410B52DED028B2A4C104608F0D4FE294A2A4B08\n" 
+"F0E8FE206161619FED288B049808F0C9FE53EC182B08F0\n" 
+"DDFE20606160059808F0C0FE53EC182B08F0D4FEA060E1\n" 
+"609DF81C00207604F118009DF81D1041709DF81E108170\n" 
+"9DF81F10C1709DF820100171BDF8210000EE100AB8EE40\n" 
+"0A10EE100A08F089FF134A174B08F0B3FE08F0ABFFC4F8\n" 
+"1D00BDF82300A4F821009DF8250084F82300BDEC028B10\n" 
+"BC5DF814FB03492422F9F79CBC5F888900EC738800FC73\n" 
+"8800FCA9F1D24D62503F8DEDB5A0F7C6B03E3BDF4F8DD0\n" 
+"7288001C278800EC0388005F4C2605976EA23F49574520\n" 
+"256420256400000049524520256420256400000041542D\n" 
+"5365745453312025642025640041542D53657454533220\n" 
+"2564202564202564000041542D536574542025643A2564\n" 
+"3A25642E25640080B501F0F7FBDFF824180860012002BD\n" 
+"80B501F0AEFDDFF81818D1E90023801A02BDF8B50446A0\n" 
+"69E1684518B5F90000B5F90270B5F90460B4F85810411A\n" 
+"2980B4F85A10791A6980B4F85C10711AA980B5F90010C9\n" 
+"13B1EBE03F13D0B4F95810C913B1EBE03F0DD00FF2D870\n" 
+"FFF786FCB5F90000012802DBDFF8B80701E047F6FF7028\n" 
+"80B5F90210C913B1EBE73F13D0B4F95A10C913B1EBE73F\n" 
+"0DD00FF2B070FFF76CFCB5F90200012802DBDFF8840701\n" 
+"E047F6FF706880B5F90410C913B1EBE63F13D0B4F95C10\n" 
+"C913B1EBE63F0DD00FF28870F19403100B8300FFF752FC\n" 
+"B5F90400012802DBDFF8500701E047F6FF70A88094F908\n" 
+"00002804D1002000E0401C0328FCDBF1BD00000000FEB5\n" 
+"044600A800210A460B460EC0A069E1684518174694F908\n" 
+"60052E80F09A80012E02D12046FFF77AFF3046012802D9\n" 
+"C01E40F08A80002E01D14FF6FF77DFF8E8060068301890\n" 
+"F88400401E06285ED8DFE800F004101D2936424F00B5F9\n" 
+"0200009000A8B5F90010791A4160B5F90410816056E0B5\n" 
+"F90000381A009000A8B5F90210791A4160B5F904108160\n" 
+"49E0B5F90200381A009000A8B5F900104160B5F9041081\n" 
+"603DE0B5F90000381A009000A8B5F902104160B5F90410\n" 
+"791A816030E0B5F90200009000A8B5F900104160B5F904\n" 
+"10791A816024E0B5F90000009000A8B5F90210791A4160\n" 
+"B5F90410791A816017E0B5F90200381A009000A8B5F900\n" 
+"10791A4160B5F90410791A816009E0B5F90000009000A8\n" 
+"B5F902104160B5F904108160012E0AD1002106E050F821\n" 
+"2002F30F0240F82120491C0329F6DB0098288000A84168\n" 
+"69808068A880002E02D12046FFF7E5FE0120FEBD70B52D\n" 
+"ED028B82B08169C2688A1890F9081008460A2800F29C80\n" 
+"DFE800F0062B779A9A659A9A9A849200B2F90240B2F904\n" 
+"50DFF89C0500689FEDBD0AB2F9001000EE901AF8EEE00A\n" 
+"60EE800AC0ED000A00EE904AF8EEE00A60EE800AC0ED01\n" 
+"0A00EE905AF8EEE00A20EE800A001D80ED010A72E0B2F9\n" 
+"0240B2F90450DFF850050068061D9FEDAB8BB2F9000000\n" 
+"EE100AB8EEC00A10EE100A08F0B2FD53EC182B08F0DCFC\n" 
+"08F0D4FDB06000EE104AB8EEC00A10EE100A08F0A3FD53\n" 
+"EC182B08F0CDFC08F0C5FDF06000EE105AB8EEC00A10EE\n" 
+"100A08F094FD53EC182B08F0BEFC08F0B6FD306138E000\n" 
+"200090106800909DED000AB8EEC00ADFEDC70A20EE200A\n" 
+"DFF8CC04006880ED0C0A26E0DFF8C00400681188A0F85A\n" 
+"1000F25A00518841809188818019E0DFF8A804006800F2\n" 
+"5A001188C1805188018191884181D18881810BE0DFF88C\n" 
+"04006892F9001080F8681003E00FF2B840FFF7E3FA0120\n" 
+"02B0BDEC028B70BD70B50D46DFF8701451F82040002620\n" 
+"7F002801D1304670BD607A002803D0206E806880470646\n" 
+"2846216EC96988470546002E02D0206E40688047284670\n" 
+"BD0120704770B582B01C4600F11005002A0ED4AB7C0069\n" 
+"92FBF1F65E43864202DAAA63EA6304E090FBF3F04843A8\n" 
+"63E863009413460A46E96B0FF23C40FFF79FFA002C02D4\n" 
+"A00700D52C7473BD002903D4002181644161816170472D\n" 
+"E9F34F99B014461D460020F19403A00E8300ADF860008D\n" 
+"F809000DF109060A2070700020B070F0709DF96470172F\n" 
+"58D2B846DFF8B00350F828904FF0020A99F81C0000284D\n" 
+"D01A98C82802D1B4201A9003E0422801D13C201A909DF9\n" 
+"90B0019400951A9B5A4641460FF2D430FFF75DFABBF100\n" 
+"0F09D45FEACB7006D55B462A461A994846FFF792FF54E0\n" 
+"5B462A461A994846FFF78DFFA7F10C00062806D29DF864\n" 
+"101AA8D9F860209269904799F8090000281FD1214649B2\n" 
+"4846D9F864201268904700280FD0D9F860004068804700\n" 
+"2805D15146A1F1010AC9B20029F3D1002801D1002026E0\n" 
+"214649B24846D9F864205268904799F80900401C89F809\n" 
+"00224652B21A994846D9F864301B69984700F0E8F8B8F1\n" 
+"160F0CD1002C0AD100208DF808002E208DF809000A2070\n" 
+"7002A808F040FA01201BB0BDE8F08FFDF69C3A89AD84FA\n" 
+"0A74513F2DE9F04397B007460E46144619460020ADF858\n" 
+"008DF801000DF101050A2068700020A870E870172F08D2\n" 
+"9D4850F827804FF0020998F81C00002801D100204AE0C8\n" 
+"2E01D1B42602E0422E00D13C264046FFF72FFF98F80900\n" 
+"01281BD1214649B24046D8F864209268904700280BD0D8\n" 
+"F8600080688047002805D14846A0F10109C0B20028F3D1\n" 
+"214649B24046D8F86420D268904798F80900002802D040\n" 
+"1E88F80900224652B231464046D8F864305B69984700F0\n" 
+"73F8162F0CD1002C0AD101208DF800002E208DF801000A\n" 
+"20687000A808F0CCF9012017B0BDE8F0830AD7233C2DE9\n" 
+"F84304460F4615461A462646172E22D26B4850F8248098\n" 
+"F81C0000281BD0C82F01D1B42702E0422F00D13C279DF9\n" 
+"2030002B07D4D80705D53946404601B0BDE8F0439FE605\n" 
+"EB450008EB8009D9F838008068002801D500202DE03946\n" 
+"4046FFF793FED9F838008068874217D0012F15DB0FF2BC\n" 
+"10FFF745F92A4652B2D9F8380081684046D8F864305B69\n" 
+"98472A4652B239464046D8F864301B699847A6F10C0006\n" 
+"2805D23946204608F0E1FE012002E000F003F80120BDE8\n" 
+"F28370B56FF0004634463F48016804E08A68A24200DA14\n" 
+"4609688142F8D13B4D2878401C2870F6F734FB6878401C\n" 
+"6870B44200D10024304E3068C467D0F8802021468A4212\n" 
+"D0002901D0002A0BD1C0F880100FF23010FFF7F8F83068\n" 
+"D0F88000FFF7D0F802E00120FFF769F86878401E6870C0\n" 
+"B2002801D1F6F705FBF6F74AFC012070BD38B50546214C\n" 
+"2078401C2070F6F7FFFA6078401C607029460FF2FC00FF\n" 
+"F7D3F815480068C0F880501748016805E08A68B2FBF5F2\n" 
+"6A43CA6009688142F7D1F19403301283006078401E6070\n" 
+"C0B2002801D1F6F7DAFABDE83140F6F71DBC0B490A6808\n" 
+"E01369012B01DAD368136113691B1A136112688A42F4D1\n" 
+"70470000CC728800803088000080FFFFEC038800600488\n" 
+"001C27880058206973206F76657200000059206973206F\n" 
+"7665720000005A206973206F7665720000005543535428\n" 
+"2564294E53000062617463682072617465203D20256420\n" 
+"25642025642025640000000042617463684F7074202564\n" 
+"202564202564202564202564006368616E676520726174\n" 
+"653200000000675F707453682D3E6354696D6572203D20\n" 
+"2564006374696D6572203D202564004FF0FF31801E0128\n" 
+"17D9C01E042814D9801F052811D908380FD0801E04280C\n" 
+"D9401F08D0401E0F2807D9113807D0401E012802D904E0\n" 
+"072102E0012100E003210846704780B501460020C91E1B\n" 
+"D0C91E19D0C91E17D0C91E012914D90D39032911D9091F\n" 
+"08D0491E0DD0C91F03290AD9C91F012907D902BD1D210F\n" 
+"F21000FFF711F8012002BD012002BD000050443A204C4C\n" 
+"53202564000038B504464FF0FF3507F05AFF2E2C36D8DF\n" 
+"E804F03435323434323434323235341A32181834353532\n" 
+"353434341A3432343234341D2024282B2E323232323230\n" 
+"3534343200B4251AE04FF47A7517E0D0F8D45514E000F2\n" 
+"D450056B10E000F2D450056E0CE0D0F8645609E0D0F894\n" 
+"5606E00A2504E0052502E0142500E03C25284632BD38B5\n" 
+"DFF8C04A00F0FCFEE06208F04BFE07F015FF2063002512\n" 
+"E0DFF8AC1A8161DFF8AC1AC161DFF8A82A0262DFF8A82A\n" 
+"4262DFF8A42A8262C162C06A80476D1C2F2D80F20E8121\n" 
+"6B05EB4500000100224254401842704FF0FF3242600022\n" 
+"027242614272032D04D18C31DFF8702A0A63E3E7022D04\n" 
+"D1DFF8682AC1F88C20DCE7002DCAD0042D04D18C31DFF8\n" 
+"582A0A66D3E7052D04D1DFF8502AC1F81C21CCE7062D05\n" 
+"D101F58E71DFF8442A0A63C4E7072D05D101F58E71DFF8\n" 
+"382A0A66BCE7082D04D1DFF8302AC1F8AC21B5E7092D04\n" 
+"D1DFF8242AC1F8DC21AEE70A2D9CD00B2D9AD0012D98D0\n" 
+"0C2D04D1DFF8102AC1F86C22A1E70D2D05D101F51B71DF\n" 
+"F8002A0A6399E70E2D05D101F51B71DFF8F4290A6691E7\n" 
+"0F2D04D1DFF8EC29C1F8FC228AE7102D04D1DFF8E429C1\n" 
+"F82C2383E7122D3FF471AF142D3FF46EAF132D3FF46BAF\n" 
+"162D3FF468AF152D04D1DFF8C029C1F81C2470E7172D04\n" 
+"D1DFF8B829C1F87C2469E7182D04D1DFF8AC29C1F8AC24\n" 
+"62E71A2D05D101F2AC41DFF8A0290A665AE7192D05D101\n" 
+"F2AC41DFF894290A63F19403C015830052E71F2D04D1DF\n" 
+"F88C29C1F8FC254BE7202D05D101F2FC51DFF87C290A63\n" 
+"43E7212D05D101F2FC51DFF870290A663BE7222D04D1DF\n" 
+"F86829C1F88C2634E7232D04D1DFF86029C1F8BC262DE7\n" 
+"1B2D04D1DFF85429C1F83C2526E71C2D05D101F23C51DF\n" 
+"F848290A631EE71D2D05D101F23C51DFF83C290A6616E7\n" 
+"272D04D1DFF83429C1F87C270FE7292D04D1DFF82829C1\n" 
+"F8DC2708E72A2D04D1DFF82029C1F80C2801E72C2D04D1\n" 
+"DFF81429C1F86C28FAE62E2D04D1DFF8602AC1F8CC28F3\n" 
+"E62D2D7FF4E1AEDFF85C2AC1F89C28EBE6012032BD0CB4\n" 
+"2DE9F04794B006460F46012435461A2D49D02C2D47D030\n" 
+"2010FB05F8DFF840980B2F20D1D9F8300008EB000A9AF8\n" 
+"0100002818D03046FFF722FE012813DB3046FFF71DFE9A\n" 
+"F8011081420CDB304600F0B2F90446D9F8300040440021\n" 
+"41700FF6F810FEF75EFED9F8300018F80010002950D108\n" 
+"EB00014A78002A4BD1002208F80020104648701CA983B0\n" 
+"68465822F8F7F4FD0EBC304600F082F8022835D0032838\n" 
+"D1032436E00B2F16D1FFF7E8FD012812DB3046FFF7E3FD\n" 
+"05EB4501DFF8A027126B02EB01114978814205DB0FF694\n" 
+"10FEF727FE02205DE01A2D04D13846C0B208F0BDFD05E0\n" 
+"2C2D03D13846C0B20AF040F91CA983B068465822F8F7BE\n" 
+"FD0EBC304600F04CF8022801D1022042E0032800D10324\n" 
+"0A2F0CD1DFF84497D9F83010302010FB05F818F8010040\n" 
+"1C08F8010016E00B2F14D1DFF82497032D07D1D9F83000\n" 
+"90F89100002801D10BF0A5FE302010FB05F8D9F8300040\n" 
+"444178491C4170DFF8FC96D9F83010D9F82C20302010FB\n" 
+"05F8D2E91C67CDE90267D06E009008EB0100437818F801\n" 
+"2029460FF6E000FEF7C8FD204614B0BDE8F0075DF80CFB\n" 
+"0EB42DE9F04193B00546012400EB40010E01DFF8AC761A\n" 
+"280BD02C2809D0C0B2FFF7AAFD396B7118486000200872\n" 
+"486111E0386B315C00290DD130184078002809D12846C0\n" 
+"B2FFF797FD396B7118486000200872486119A984B06846\n" 
+"5822F8F73DFD0FBCD7F830C06644B669B047022801D102\n" 
+"2011E0032801D103240CE0D7F82C80D8E91C6720460021\n" 
+"2A460CF03AFC30433943C8E91C01204613B0BDE8F0015D\n" 
+"F810FB2DE9FF4704460D460126274607EB47004FEA0018\n" 
+"DFF80496D9F830001A2F59D02C2F57D008EB000A9AF801\n" 
+"00022814DB2046FFF703FD01280FDB2046FFF7FEFC9AF8\n" 
+"0110814208DB2046FFF7F7FC8AF801000FF2EC70FEF743\n" 
+"FDD9F8300018F80010002904D108EB00025278002A69D0\n" 
+"2A460A2A09D10029F194035019830003D0491E08F80010\n" 
+"17E0002108F8001013E00B2A11D108EB00014A78002A02\n" 
+"D0521E4A7001E000224A70032F05D190F89100002801D1\n" 
+"0BF0E1FDD9F8300018F80010002942D14044407800283E\n" 
+"D1204600F054F8032839D1032637E018F80010002904D1\n" 
+"08EB00025278002A2ED02A460A2A09D1002903D0491E08\n" 
+"F8001012E0002108F800100EE00B2A0CD108EB000A9AF8\n" 
+"0100002803D0401E8AF8010002E000208AF801001A2F04\n" 
+"D12846C0B208F079FC05E02C2F03D12846C0B209F0FCFF\n" 
+"204600F01BF8032800D10326D9F83000D9F82C10D1E91C\n" 
+"23CDE90223C96E009108EB00014B7818F8002039460FF2\n" 
+"E060FEF7BAFC304604B0BDE8F0872DE9F04107460126B8\n" 
+"4608EB48000501DFF89444206B2818C0698047032800D1\n" 
+"0326B8F12C0F07D1206B295C00290AD128184078002806\n" 
+"D1384640B200F07FF9032800D10326206B295C002917D1\n" 
+"28184178002913D14FF0FF314160002101724161D4F82C\n" 
+"80D8E91C4501203A460CF03DFB24EA000025EA0101C8E9\n" 
+"1C013046BDE8F08138B5044604EB44000001DFF8185429\n" 
+"6B002242544018114641702046FFF7AEFFE86AD0E91C23\n" 
+"21460FF23860FEF75CFC012032BD2DE9F041B6B004460E\n" 
+"46B6B201208DF86400DFF8DC531AA8E96A6C22F8F7F6FB\n" 
+"17951AA984B068466C22F8F7EFFB0FBC00F026FA00270B\n" 
+"E0032803D1189703208DF86400286B4044002101727F1C\n" 
+"7FB22F2F2ADAEA6AD2E91C013A460CF0FCFA00F0010011\n" 
+"F0000101D10028EED007EB47004FEA0018286B40444168\n" 
+"0029E5D4027A521C0272D2B2724389B28A42DDDB006A80\n" 
+"470228CFD1189702208DF86400DDE91801C4E9000103E0\n" 
+"DDE91801C4E9000136B0BDE8F08100210A3842F2077290\n" 
+"4200D20121084670472DE9F04383B00446002001900422\n" 
+"E11C01A802F006FF6178DFF80C63376B302515FB017040\n" 
+"68019A904204D10FF24850FEF7DBFB68E01046FFF7D9FF\n" 
+"002809D16178019B15FB017042680FF23450FEF7CCFB59\n" 
+"E0DFF8C4743868D0F8008025E090F908906078316B15FB\n" 
+"0010406920FA09F0C00717D54FF0FF3000900346012201\n" 
+"994846FFF71FF940B200280BD1617801980090306B15FB\n" 
+"010043684A460FF2F440FEF7A2FB4046D0F80080B842D7\n" 
+"D13868D0F800801FE090F90890486920FA09F0C00715D5\n" 
+"4FF0FF33012249684846FFF799F940B200280BD1617801\n" 
+"980090306B15FB010043684A460FF2C040FEF77CFB4046\n" 
+"D0F800806178326B15FB0121B842D9D101984860BDE8F7\n" 
+"832DE9F8438146F19403E01C830000242546834F21E005\n" 
+"EB45000601386B06EB0008002088F80900FA6AD2E91C01\n" 
+"2A460CF02BFA00F0010011F0000101D100280AD04846D8\n" 
+"F824108847002804D0386B3018012141720C466D1C2F2D\n" 
+"DBDB2046BDE8F2836F48C16AD1E91C23002B01D1002A0D\n" 
+"D0002107E002EB4203026B02EB031200235372491C49B2\n" 
+"0A462F2AF3DB704700B502466248C36AD3E91C010CF0F4\n" 
+"F900F0010011F0000101D1002801D0012000BD084600BD\n" 
+"2DE9F0478146012409EB49000501564E306B2818406900\n" 
+"2829D0DFF840733868D0F8008003E003244046D0F80080\n" 
+"B8421DD090F908A0306B28184169012202FA0AF2114021\n" 
+"FA0AF149B20129ECD14FF0FF33012241685046FFF7F7F8\n" 
+"0028E2D0524649460FF2A430FEF7E1FADCE72046BDE8F0\n" 
+"8710B598B004465A22002100A806F0DCFC0020ADF85800\n" 
+"8DF801000DF101000A21417000218170C1700846ADF858\n" 
+"00600729D50520FFF797FF002808D004208DF800000520\n" 
+"8DF8010000A807F0FAFA0220FFF789FF002808D004208D\n" 
+"F8000002208DF8010000A807F0ECFA0320FFF77BFF0028\n" 
+"08D004208DF8000003208DF8010000A807F0DEFAE00622\n" 
+"D50EF060FC0446E00711D50820FFF766FF00280CD00320\n" 
+"8DF8000008208DF8010000A807F0C9FA0FF2F020FEF781\n" 
+"FAA00703D50FF2F020FEF77BFA600703D50FF2F420FEF7\n" 
+"75FA18B010BD02460020092A00D0704780B5012902D10E\n" 
+"F0EFFD012002BD02492C22F8F70FBA000020748800B195\n" 
+"8300AD958300B9958300BD958300C19583003BCF830095\n" 
+"968400CD21830055948400B5AE8600D58C86004F928400\n" 
+"130A8400B14A840065A08600358F8600C1928600079B86\n" 
+"009D91860089A486004DB5860095AE830061A98600EBDC\n" 
+"84002B948600D3958600FF9A840063DB8400090F84003F\n" 
+"1684007F13840025AD8600599E86007D9086003BC58300\n" 
+"0FB41B980099016001994160029981600399C160049901\n" 
+"6105994161BDF85A100183BDF85C104183BDF85E108183\n" 
+"0C990162139941621499816204B0704700004178122904\n" 
+"D1401C017900200BF06FBB132904D1401C417901200BF0\n" 
+"68BB142904D1401C817902200BF061BB152903D1401C00\n" 
+"790BF080BB172965D1411CCA78032A08D01B2A12D01C2A\n" 
+"31D01D2A19D02C2A3DD0704790F85610012902D1401D0B\n" 
+"F082BF02294FD1401D0BF07DBF087A012802D188880EF0\n" 
+"93BF022844D1C8880EF08CBF4A7B012A02D188880FF0D2\n" 
+"B9022A02D1C8880FF0C1B9042A03D1B0F811000FF0C9B9\n" 
+"032A2ED1C889F19403702083000FF0D0B9C879012802D1\n" 
+"08790FF0B9BB022802D148790FF0BEBB05281ED188790F\n" 
+"F099BB8A7B012A02D1087A0AF0C4BA022A02D1008A0AF0\n" 
+"ABBA032A02D1408A0AF0B0BA042A03D1123040880AF0D2\n" 
+"BA052A03D1123080880AF0BEBA70470749086070470000\n" 
+"0000CDA186000348006870470000ABB08600C40D880054\n" 
+"748800414C204558000000414C2045582D415400000000\n" 
+"414C256420256420256420256420256C6C750000524C20\n" 
+"4558000000524C256420256420256420256420256C6C75\n" 
+"00005445524D20256420256C6C75000000004558204C4D\n" 
+"435231202564004558204C4D4352322025642025642025\n" 
+"640000004558204C4D4352332025642025642025642025\n" 
+"64000000004558204C4D43523420256420256420256420\n" 
+"256400000000534D524120256420256400005B494E564E\n" 
+"5D20534D4100005B494E564E5D205348414B4500000000\n" 
+"5B494E564E5D20535441424C4500000038B507F04DF804\n" 
+"46104D00F02BF828600FF064FE0FF067FE68600FF069FE\n" 
+"0C48C4F8D80004F1D8000A4941600A4981600A49C1600A\n" 
+"490161012032BD03494968896808470148406800680047\n" 
+"10828800B1958300AD958300B9958300BD958300C19583\n" 
+"0000487047E02F880030B4002200E0521C032A0DD202EB\n" 
+"42039B000FF210741D5D8542F4D11B195C688C42F0D198\n" 
+"6801E04FF0FF3030BC704780B5122806D1DFF8F8152020\n" 
+"BDE80440FDF712B814280BD1012200210320FEF791FADF\n" 
+"F8DC151020BDE80440FDF704B801BD1CB501208DF80000\n" 
+"00208DF8010001208DF802000020019000A92020F7F7B7\n" 
+"FD00208DF8000001208DF8020000208DF80100019000A9\n" 
+"2220F7F7A9FD00208DF8000002208DF8010000208DF802\n" 
+"00DFF88045019400A91220F7F799FD00208DF800000720\n" 
+"8DF8010002208DF80200019400A91420F7F78BFD1420F7\n" 
+"F7B8FD01208DF8000000208DF801008DF80200019000A9\n" 
+"1320F7F77BFD0020ADF800008DF80200019000A90B20F7\n" 
+"F771FD01210F20F7F794FD01211020F7F790FD02211A20\n" 
+"F7F78CFD04211B20F7F788FD02211820F7F784FD022119\n" 
+"20F7F780FD01208DF8000000208DF801008DF802000190\n" 
+"00A91B20F7F74CFD13BD10B5FFF750FF040004D5E4210F\n" 
+"F2EC4006F0DCF9FF2C05D001212046BDE81040F7F767BD\n" 
+"10BD0021DFF8B4040FF06EBE10B5DFF8A044FDF766FF00\n" 
+"280DD00020FDF76BFFFFF72BFFC06FFDF7C9FF21460620\n" 
+"BDE81040FCF75ABFDFF88404FCF726FE21460220BDE810\n" 
+"40FCF750BFF194030024830080B50022DFF87014DFF868\n" 
+"04FCF70CFE012002BD38B50446DFF8605405F10800FCF7\n" 
+"3DFE002C20D02878062C06D200280AD100F01CF8012028\n" 
+"7005E0002803D000F018F8002028706C6021460FF2A040\n" 
+"FDF7B2FF214605F1080003F093FD05F10800BDE83240FC\n" 
+"F7EBBD31BD70470220F2F7D0BD0220F2F7D0BD1220F7F7\n" 
+"FDBC1220F7F701BD2DE9FE4304460F469046994699F800\n" 
+"00461CB6B2304602F07EFA050001D1002021E085F80080\n" 
+"99F800203946681C02F09CFA9DF8080000F0800040F010\n" 
+"008DF808000020019000902B463246610802980FF0C9FE\n" 
+"0446284602F075FA002C01D1012000E00020BDE8FE8300\n" 
+"B585B08DF8082010228DF80C2001911978009102AB0122\n" 
+"410803980FF0AEFE002801D1012000E0002005B000BDE0\n" 
+"B50B469DF8091041F008018DF8091006218DF808109DF8\n" 
+"091041F003018DF8091001F0FB018DF809100021019100\n" 
+"910146029810F067F8002801D101200EBD00200EBD00B5\n" 
+"85B08DF80C209DF8092042F008028DF8092006228DF808\n" 
+"209DF8092042F003028DF8092002F0FB028DF809200191\n" 
+"009303AB01220146029810F042F8002801D1012000E000\n" 
+"2005B000BD80B506F037F8002104BD70B48C1E012C01DA\n" 
+"0C34401E3C216425B0FBF5F5C5EB90054FF4C876B0FBF6\n" 
+"F6751940F26F1674430C26B4FBF6F46419121940F26D14\n" 
+"04FB0020A34A101800EB400203EBC200039A01FB002004\n" 
+"9A01FB002070BC7047F0B599B005463C20B1FBF0F09A4E\n" 
+"3C2202FB101131601146B0FBF1F102FB110070601820B1\n" 
+"FBF0F404EB4400A1EBC000B060201D0721B0FBF1F1C1EB\n" 
+"C101401AB06140F2B27070614FF4C873642704E040F26D\n" 
+"11641A401C70617069394690FBF1F107FB1101002906D1\n" 
+"1A4690FBF2F203FB1202002A09D0421000EB92729210B0\n" 
+"EB820202D14FF4B77201E040F26D12A24213D2002907D1\n" 
+"194690FBF1F11A4602FB11010029D3D0411000EB917189\n" 
+"10B0EB8101CCD14FF4B771CBE7F46100A80FF22C216022\n" 
+"F7F71CFE0020306108E0002000A913FB001050F8220024\n" 
+"1A501C30617069394690FBF1F107FB1101002909D14FF4\n" 
+"C87290FBF2F24FF4C87303FB1202002A0DD0421000EB92\n" 
+"729210A0EB82029446BCF1010C6CEB0C0C4FEADC7C01E0\n" 
+"4FF0000C326930230DF1000E13FB0CEC5CF822C0644515\n" 
+"D3002909D14FF4C87190FBF1F14FF4C87C0CFB11010029\n" 
+"BED0411000EB91718910A0EB8100401E8041C00FB5E760\n" 
+"1CF0607069A0F2B270706100203062284631462422F7F7\n" 
+"C1FD19B0F1940390278300F0BD1CB50C46016801914168\n" 
+"00918368C2680169491C406900F26C70FFF704FF206000\n" 
+"2016BD10B58AB003780393437802938078019048780590\n" 
+"88780490C878642190FBF1F1642303FB110000F5FA6006\n" 
+"90146800A901A8FFF7D3FF009A264B1846B4FBF0F01946\n" 
+"01FB10400021E3FB02010FF0A5FF0AB010BD2DE970478B\n" 
+"B004460D4692460FF0A5FF06461A4A0023F5F7AAFD184A\n" 
+"A2FB0089A6EB0802CAF80020014600A8FFF7EAFE029820\n" 
+"70019860700098A070049868700398A8700598642190FB\n" 
+"F1F1642202FB1100E8700BB0BDE8708700000000509E88\n" 
+"0069228300818386009C618800C3238300946188007505\n" 
+"F5FFB061880040420F00443A5C4D43555C53454E534F52\n" 
+"5F6B616C6D6961615F5452454C54455F4252434D5F4E6F\n" 
+"746550435C4D43555C50726F6A6563745C5353505F5365\n" 
+"6E736F724875625C53485F4F454D5C42434D343737585C\n" 
+"7372635C4D43555F42434D343737582E63005365745254\n" 
+"43203D202564001F0000001C0000001F0000001E000000\n" 
+"1F0000001E0000001F0000001F0000001E0000001F0000\n" 
+"001E0000001F0000001F0000001D0000001F0000001E00\n" 
+"00001F0000001E0000001F0000001F0000001E0000001F\n" 
+"0000001E0000001F0000000100000001000000FF000000\n" 
+"0100000002000000FF0000000000000000100000130000\n" 
+"00DFF8FC06007870472DE9F04198B0FFF74FFC0446DFF8\n" 
+"EC562E6842E096F9080007283DD00B283BDA062839D006\n" 
+"F10807B86C002803D5D4F880100818B8644FF0FF313046\n" 
+"FA6D926990478046B8F1010F04D197F84C00B96D096988\n" 
+"47B8F1020F0BD1797E38697A688018BA6D526990470028\n" 
+"02D03046FEF7A3F800213046FA6D92699047022801D101\n" 
+"20B87501213046FA6D92699047022802D13046FEF73CF9\n" 
+"3668AE42BAD1D4E91C01002901D100280CD00A208DF802\n" 
+"0002208DF80000D4F88000ADF8580000A806F0FAFC0120\n" 
+"18B0BDE8F08130B585B004460D46CA208DF800002888AD\n" 
+"F801000220ADF80300BDF80100001D01F092FFCDF80900\n" 
+"02220DF1030101F0B5FF02222946DDF80900801C01F0AE\n" 
+"FF2A882146DDF80900001D01F0A7FF0020288000A9DFF8\n" 
+"DC0501F0A6FF05B030BD42F23411081A322801DA012070\n" 
+"470020704780B5FDF701FC407B002804D0FDF7BBFFDFF8\n" 
+"B01E086001BD80B5FDF7B4FFDFF8A41E086001BDDFF89C\n" 
+"0E0068704710B582B000F10C03D96A89680091042200A9\n" 
+"5C7DDB68C0681818201801F06EFF13BD30B41488651C15\n" 
+"800525F19403202B830065541488651C1580635413885C\n" 
+"1C1480007A585430BC704732B515461C4621884A1C2280\n" 
+"37224A5521884A1C2280007A4855022200A92088401901\n" 
+"F049FF2088801C208031BD2DE9F041054616461F4605F1\n" 
+"0808069CA4B298F81A0004FB00F2D8F804000918388880\n" 
+"1901F031FF388898F81A10614311FA80F038803888FFF7\n" 
+"89FF002803D039463046FFF753FF95F9080016280AD1D8\n" 
+"F81000D8F80410415C0FF20C00BDE8F041FDF7F6BBBDE8\n" 
+"F0812323205368616B652025640030B400F110039B7C91\n" 
+"4203D1006990FBF3F00DE00C46154603D2281B90FBF3F0\n" 
+"06E00069001B90FBF3F095FBF3F1081880B230BC704770\n" 
+"B582B004460D461E4692B289B2FFF7DCFF0090069B3246\n" 
+"29462046FFF79AFF73BDF8B5044615461E462269002D00\n" 
+"D11546069F0097FFF7E3FF2069854206DA009733462A46\n" 
+"00212046FFF7D9FFF1BD00F110018A688B7CD2188A6000\n" 
+"69824201D1002088600020887370472DE9FC4104460D46\n" 
+"1646A1696069002815D500270A4692B289B22046FFF79F\n" 
+"FF804633462A4641462046FFF746FFA26900962B461146\n" 
+"2046FFF7BDFF2EE0814216DA01270A4692B2014689B220\n" 
+"46FFF786FF804633462A4641462046FFF72DFF00962B46\n" 
+"A26961692046FFF7A4FF15E002270A4692B2014689B220\n" 
+"46FFF76FFF804633462A4641462046FFF716FF00962B46\n" 
+"A26961692046FFF77CFFA0690190606900903B46424694\n" 
+"F908100FF20C00FDF743FBBDE8F38100005061636B203D\n" 
+"25642025642025642025642025640000000070B582B004\n" 
+"460D461646A06C012811DAA07F012811D133462A460121\n" 
+"2046FFF7E3FE0120009033462A46A1692046FFF7F2FE02\n" 
+"E02046FFF77AFF0123324629462046FFF7C0FEA0696061\n" 
+"A36CE26C94F908100FF20C00FDF707FBA06CE06473BD66\n" 
+"6C75736820256420256420256400002DE9F84304460D46\n" 
+"1646FFF731FA8146FDF77DFA804604F10807B87D002802\n" 
+"D02046FFF787FE386C0128C0F2888098F80E00002844D0\n" 
+"B87D002800F0C280786CD9F88010401A7864B87E3969FA\n" 
+"68531A834205D0002A2FD1BA68511A81422BD194F90820\n" 
+"397E0FF26010FDF7C5FA397E00291ED094F908200FF264\n" 
+"10FDF7BCFA3869B97E421892B2F96889B22046FFF7C5FE\n" 
+"33462A4601462046FFF76DFE00962B463869B97E4218F9\n" 
+"682046FFF7E2FE02E04FF0FF30F8602046BDE8F243F0E6\n" 
+"98F80E0000287CD1786CD9F88010401A786401282CDA38\n" 
+"6C7864386BD0F80C8094F908308268396C0FF21010FDF7\n" 
+"84FAF19403B02E8300B868B97E90FBF1F0396C91FBF8F1\n" 
+"814202DB4FF0FF30F860B87D002808D02046FFF7C7FE32\n" 
+"4629462046FFF7D0FE04E0324629462046FFF7CAFE3869\n" 
+"F86048E0B87D002845D02046BDE8F243B1E6B87D00283E\n" 
+"D094F9080098F80A10002919D0072801D016282FD13346\n" 
+"2A4601212046FFF70AFE0120009033462A4639692046FF\n" 
+"F719FE7A7894F908100FF29400FDF73BFA19E0092809D1\n" 
+"94F85E10012905D10FF28C00BDE8F443FDF72EBA33462A\n" 
+"4601212046FFF7E8FD0120009033462A4639692046FFF7\n" 
+"F7FD2046FFF772FE3869F860BDE8F18300007375737065\n" 
+"6E64206669666F2066756C6C2025642025640073757370\n" 
+"656E64206669666F2066756C6C20322025642025640000\n" 
+"006669666F2066756C6C33202564202564202564004150\n" 
+"2053757320256420256400000000233E6C75785F736174\n" 
+"20256400000000F8B504460D46234E376805E02A462146\n" 
+"3846FFF7DDFE3F68B742F7D1F1BD2DE9F04104460D46DF\n" 
+"F8546DF76907F10C0898F81510D8F80C00FA688018D8F8\n" 
+"54205269904700280AD0012088F81200787A002804D02A\n" 
+"4621463846FFF7B9FEB66906F10C07797DF868F2688018\n" 
+"7A6D52699047002809D00120B874707A002804D02A4621\n" 
+"463046FFF7A3FE0120BDE8F08181888900C40D8800388A\n" 
+"88000288D21C02800A80704780B50B889B1AADF80030BD\n" 
+"F80030002B09D01018012100F8031C022200A9801E01F0\n" 
+"9BFC01BD0888C01E088001BD2DE9F04FADF68C2D04460D\n" 
+"46FFF7AEF80746FDF7FAF8804610A840F64821F7F745F8\n" 
+"00208DF8020006A82821F7F73EF801A81421F7F73AF800\n" 
+"20ADF800000646D7E91C01002902D1002800F0368498F9\n" 
+"0900FEF7E0FD002800F02F8400A92846FFF7B2FFB0461C\n" 
+"E0D7E91C0142460BF013F800F0010011F0000101D10028\n" 
+"0ED008EB4800DFF8241C01EB001292F90900012804D10D\n" 
+"F1020110A8926A904708F10108B8F12F0FDFDB37461AE0\n" 
+"2888411C298099F8021001552888FFF799FC00280DD0BD\n" 
+"F8002029462046FFF782FF29462046FFF75DFC00A92846\n" 
+"FFF775FF7F1C7FB29DF80200874280F2DF832988481C28\n" 
+"8040F2491010FB07F010AA825C0A5529884A1C2A8010AA\n" 
+"00EB020898F8010008552888411C298008F1010999F801\n" 
+"10015599F80100032821D0092800F09F810C2800F07981\n" 
+"1A2800F09D821B2800F0AC811C2800F0CB821D2800F0B9\n" 
+"811E2800F0B582252800F0F482262800F02E83282800F0\n" 
+"09832C2800F038839EE798F80100032805D12888411C29\n" 
+"80F194034032830099F8021001552888411C298099F803\n" 
+"10015599F80300C0280FD108F22709B9F82E20D9F83010\n" 
+"2888001901F0C1FB2888B9F82E100818288080E7E0284A\n" 
+"D108F20508002035E058F820100A0222F0FF12090A01F0\n" 
+"FF11114348F820104FEA314148F8201008EB80014A6813\n" 
+"0223F0FF13120A02F0FF121A434A604FEA32424A608A68\n" 
+"130223F0FF13120A02F0FF121A438A604FEA32428A60CA\n" 
+"68130223F0FF13120A02F0FF121A43CA604FEA3242CA60\n" 
+"001D1428C7DB50210FF29460FDF75CF850224146288800\n" 
+"1901F072FB28885030288033E7711C00064ED401A808F1\n" 
+"040252783254C9B298F806200A54491CC9B200220A544A\n" 
+"1C08F20601D2B24B781354521CB8F80E30D2B21E0A1654\n" 
+"521CD2B21354521C08F20E03D2B29E781654521CD2B2DB\n" 
+"781354521CD2B298F812301354521CD2B298F813301354\n" 
+"521CD2B28B781354521CD2B2C9781154511CC9B298F80A\n" 
+"200A54491CC9B298F80B200A544E1CF6B2324601A92888\n" 
+"001901F021FB288850FA86F02880E1E6D8F8052006A813\n" 
+"0C3354C9B2130A0B54491CC9B20A54491CD8F80920C9B2\n" 
+"130C0B54491CC9B2130A0B54491CC9B20A54491CD8F80D\n" 
+"20C9B2130C0B54491CC9B2130A0B54491CC9B20A54491C\n" 
+"D8F81120C9B2130C0B54491CC9B2130A0B54491CC9B20A\n" 
+"54491CD8F82720C9B2130C0B54491CC9B2130A0B54491C\n" 
+"C9B20A54491C08F22709C9B299F804200A54491CC9B299\n" 
+"F805200A54491CB9F80620C9B2130A0B54491CC9B20A54\n" 
+"491CC9B299F808200A54491CD8F81520C9B2130C0B5449\n" 
+"1CC9B2130A0B54491CC9B20A54491CD8F81920C9B2130C\n" 
+"0B54491CC9B2130A0B54491CC9B20A54491CD8F81D20C9\n" 
+"B2130C0B54491CC9B2130A0B54491CC9B20A54491CD8F8\n" 
+"2120C9B2130C0B54491CC9B2130A0B54491CC9B20A544E\n" 
+"1CF6B2324606A92888001901F087FA288850FA86F02880\n" 
+"47E608F10301B1F90300C0F3072242EA0020A1F80300B1\n" 
+"F90700C0F3072242EA0020A1F80700B1F90500C0F30722\n" 
+"42EA0020A1F8050009222888001901F063FA2888093028\n" 
+"8024E62988084698F80120032A09D1022208F103010019\n" 
+"01F053FA2888801C288014E6491C298099F8021001550E\n" 
+"E62888411C298099F80210015598F8010005287FF404AE\n" 
+"2888411C298008F1040149780155FBE508F1030998F801\n" 
+"00012840F0C4802888411C298099F8041001554FF0000A\n" 
+"A1E0CAEB4A1000EB090BDBF81800010221F0FF11000A00\n" 
+"F0FF100843CBF818004FEA3040CBF8180004220BF11801\n" 
+"F19403D03583002888001901F00CFA2888001D2880DBF8\n" 
+"0800010221F0FF11001200F0FF100843CBF80800C0F30F\n" 
+"4141EA0040CBF8080004220BF108012888001901F0F1F9\n" 
+"2888001D2880DBF80C00010221F0FF11001200F0FF1008\n" 
+"43CBF80C00C0F30F4141EA0040CBF80C0004220BF10C01\n" 
+"2888001901F0D6F92888001D2880DBF81000010221F0FF\n" 
+"11001200F0FF100843CBF81000C0F30F4141EA0040CBF8\n" 
+"100004220BF110012888001901F0BBF92888001D2880DB\n" 
+"F81C00010221F0FF11000A00F0FF100843CBF81C004FEA\n" 
+"3040CBF81C0004220BF11C012888001901F0A2F9288800\n" 
+"1D2880BBF81600010A41EA0020ABF8160002220BF11601\n" 
+"2888001901F091F92888801C2880411C298080B2DBF820\n" 
+"1001550AF1010A5FFA8AFA99F804008245FFF659AFB8F8\n" 
+"4321D8F845112888001901F077F92888B8F84311081828\n" 
+"80B8F843110FF28C20FCF750FE30E505287FF42EAD2888\n" 
+"411C298099F8021001552888411C298099F80310015520\n" 
+"E508F1030198F80100032805D12888421C2A8098F80A20\n" 
+"0255D1F80100020222F0FF12000A00F0FF101043C1F801\n" 
+"004FEA3040C1F8010007222888001901F03BF92888C01D\n" 
+"2880FCE408F103010888020A42EA002008800222288800\n" 
+"1901F02BF92888801C2880ECE408F1030098F801100129\n" 
+"7FF4E6AC99F80210012918D129884A1C2A8000780855B8\n" 
+"F80420D8F806102888001901F00FF92888B8F804100818\n" 
+"2880B8F804100FF2D010FCF7E8FDC8E402297FF4C6AC29\n" 
+"884A1C2A8002780A5529884A1C2A80C0790855BAE42888\n" 
+"411C2980B9F8021001552888411C2980B9F90210091201\n" 
+"55B9F90220D8F805102888001901F0E0F82888B9F90210\n" 
+"081828809FE42888411C2980B9F8021001552888411C29\n" 
+"80B9F90210091201552888411C298008F1040149780155\n" 
+"B9F90220D8F806102888001901F0BEF82888B9F9021008\n" 
+"1828807DE408F103010888020A42EA0020088002222888\n" 
+"001901F0ACF82888801C28806DE408F103082988084698\n" 
+"F8002013072AD5491C298098F8001001552888411C2980\n" 
+"98F8071001552888411C298098F808100155D8F8090001\n" 
+"0221F0FF11000A00F0FF100843C8F809004FEA3040C8F8\n" 
+"0900042208F109012888001901F079F82888001D28803A\n" 
+"E4520724D5491C298098F8001001552888411C298098F8\n" 
+"01100155D8F80300010221F0FF11000A00F0FF100843C8\n" 
+"F803004FEA3040C8F80300042208F103012888001901F0\n" 
+"52F82888001D288013E498F80220D8F80D10001901F0F1\n" 
+"94036039830047F8288898F802104018288006E4BDF800\n" 
+"2029462046FFF78EFBFEF7DCF90DF68C2DBDE8F08F0000\n" 
+"20C3880024C3880050442053462053656E742564000000\n" 
+"004F4A483A20415442442073697A653A20256400004F4A\n" 
+"483A20415044522073697A653A20256400002DE9F04105\n" 
+"460E46FCF77DFC0746DFF89C432078401C2070F3F70EFF\n" 
+"6078401C607097F81880B8F1000F26D03088404480B2FF\n" 
+"F75BF8002803D031462846FFF725F83088411C31800321\n" 
+"41553088411C318000F80580424607F119013088401900\n" 
+"F0E2FF308840443080FF22002107F1190004F0C4FE0020\n" 
+"38766078401E6070C0B2002801D1F3F7D1FEBDE8F041F4\n" 
+"F714B838B504460D46FCF735FC817A002909D1417B0029\n" 
+"06D129884A1C2A8006220A550121417331BD38B504460D\n" 
+"46288800280CD02046FFF79BFF29462046FFF7E0FF2946\n" 
+"2046BDE83440FEF7D7BF31BD14B585B0049101A9002213\n" 
+"4614461CC10A21ADF8001004218DF804108DF805000A46\n" 
+"05A90DF1060000F08EFF042204A90DF10A0000F088FF00\n" 
+"A901A8FEF7B6FF06B010BD2DE9F041A14C6068002828D0\n" 
+"218888421FD000F04DFF054666682788A6EB07081FFA88\n" 
+"F84246381900F10801284600F069FF3A4604F1080108EB\n" 
+"050000F062FF3246294604F1080000F05CFF284600F047\n" 
+"FF626804F108010520FFF7AFFF002060602080BDE8F081\n" 
+"2DE9F04182B080460E461746FCF7B5FB0025D8F809100C\n" 
+"1D98F800201146012954D00F292AD035292CD0802963D0\n" 
+"81296BD0822969D0852967D0862965D0882963D08A2969\n" 
+"D08B2900F089808C2900F095808D2900F09D80DD2900F0\n" 
+"A780DF2900F0C380F02916D0F4291CD0F62922D0F92930\n" 
+"D0FF2900F0918043E0807D2070012040E0012010F0A3FC\n" 
+"284610F0A4FC0120207037E00422DFF8101D204600F0FD\n" 
+"FE01202FE0042200F11001204600F0F5FE012027E00322\n" 
+"21462846DFF8F03C9B681B6E1B6A984701201CE02046FE\n" 
+"F7F1FA012017E0B8F80120B8F80300C010C0EB0011D8F8\n" 
+"050000EB8111204600F0D5FE012007E0D8F80500207021\n" 
+"462846FDF7D2F82846BDE8F68128462070214602F07F00\n" 
+"FDF7C8F8F4E701202070DFF8900CD0F804802E4698F81C\n" 
+"00002801D12846E8E798F80900002804D1D8F860004068\n" 
+"804706462046D8F86010C9698847002ED7D0D8F8600080\n" 
+"688047D2E70120B8F80310C1F3C101091D884040F00200\n" 
+"207021460120FDF797F8C3E701782170C17861704179A1\n" 
+"708079E07001202071B9E7204610F0B8FD0546B3E7F194\n" 
+"03F03C830004F10802211D2046FEF787FD0120ACE798F8\n" 
+"0500DFF8FC1B51F8208098F80900002810D03A46314640\n" 
+"46FFF719F8DFF8E80B01210170DFF8E41B0820FBF7B8FA\n" 
+"0120207001E02846207001208DE798F80500DFF8C01B51\n" 
+"F82080D8F8100098F8221090FBF1F0401E0090042200A9\n" 
+"204600F046FE012078E700000000EC038800787888001C\n" 
+"27880048C088002DE9F041B2B00746FCF7A3FA0546FEF7\n" 
+"51FAD7F809100C1D3978002202924FF0FF32039216460A\n" 
+"46312A00F01781322A00F01E81332A00F02A81342A00F0\n" 
+"3181372A6CD0A12A00F05981A22A00F09981A42A00F0A4\n" 
+"81B12A00F06783B22A00F02885B82A00F0B681C12A00F0\n" 
+"DD81CD2A00F08380CE2A00F09980D02A37D0D12A2BD0D2\n" 
+"2A35D0D32A3CD0D42A3ED0D62A50D0D72A4ED0D82A54D0\n" 
+"D92A52D0DB2A00F01E81DC2A00F02281F12A52D0F22A00\n" 
+"F09580F52A00F0A980F72A00F0BC80FA2A00F04385FB2A\n" 
+"00F04385FD2A00F0A880FE2A00F04D85BCE000212846FC\n" 
+"F766FC0020A873FFF743FE0120B3E00120B1E001212846\n" 
+"FCF75AFC012010F0D4FD0120A8E00020A8720120A4E001\n" 
+"20A872002068730120A873E87A01209BE0002221461046\n" 
+"DFF8603A1B681B6E1B6A9847012090E0D62901D1012000\n" 
+"E00020E872012088E0D92901D1012000E0002028730120\n" 
+"80E000210CE00A180B5D82F88430022905D10A5D80F887\n" 
+"200A5D80F88820491C0329F0DB01206DE0002512E0DFF8\n" 
+"080A476807EB4506022204EB450106F1580000F06FFDB6\n" 
+"F95810DFF8F809FCF74DFA6D1C032DEADB012054E00025\n" 
+"12E0DFF8D409076807EB4506022204EB450106F1580000\n" 
+"F056FDB6F95810DFF8C809FCF734FA6D1C032DEADB0120\n" 
+"3BE0297C090601D4012036E02178A0F88A106178A0F88C\n" 
+"1002212046DFF88C29D269126E92699047002825D00120\n" 
+"24E0032221460120DFF874399B681B6E1B6A9847012019\n" 
+"E0122221460220DFF85C399B681B6E1B6A984701200EE0\n" 
+"DFF84C098769386E80688047002805D00122214605203B\n" 
+"6E1B6A9847002032B0BDE8F08110F0B0FA012801D10120\n" 
+"F6E7204610F0CEF9F1E710F0A6FA012801D10120ECE720\n" 
+"4610F04BFA20780028E5D010F077FAE2E710F097FA0128\n" 
+"01D10120DDE7207810F074FAD8E710F08DFA012801D101\n" 
+"20D3E7DFF8EC08FCF7C3F9002010F076FA4FF480510020\n" 
+"FCF7ADFB012010F0F5F8012010F06FFA207810F077FA10\n" 
+"F05FF90120BAE7D7F80510DFF8B808FCF7A8F9B2E70020\n" 
+"C0460028AED0C046C046ABE794F900500422611CF19403\n" 
+"8040830002A800F0B5FCB7F80100062806DB0422611D03\n" 
+"A800F0ACFC94F90960DFF8640850F82570FEF7C4F8D0E9\n" 
+"1C23C2F34018FEF7BEF8D0E91C23C2F380208044FEF7B7\n" 
+"F8D0E91C23C2F38000404497F9081007290BD1797A0029\n" 
+"08D0002806D10022DFF83C08FCF768F9012072E7009603\n" 
+"9B002202992846FCF7CDFE207068E794F900500422611C\n" 
+"02A800F072FC00231A4602992846FCF75EFF5BE794F900\n" 
+"500422611C02A800F064FCB7F80100062806DB0422611D\n" 
+"03A800F05BFC94F909600096039B002202992846FCF7B4\n" 
+"FF20703FE720780146032908D01A2914D0252912D02829\n" 
+"10D02C2912D015E060780DF111025070012805D1A0788D\n" 
+"F81300204605F0FBF8012025E7204605F0F6F8F9E72046\n" 
+"05F0F2F8F5E794F9011040B2FDF799FEC0B216E7207801\n" 
+"460E3908D0091F03291ED9091F3CD0491E00F096805BE1\n" 
+"0E208DF8100060780DF111025070A1788DF81310E2780D\n" 
+"F113035A700023ADF8153052B249B240B2FCF7E9FA05F0\n" 
+"C3F842E18DF81000122803D10DF1110162784A70132802\n" 
+"D161788DF81310142803D10DF1130162784A70152803D1\n" 
+"0DF111006178417062782178DFF8FC06FCF7C5F822E160\n" 
+"78A178090401EB0060E17800EB012021794018CDF81200\n" 
+"6179A279120402EB0161E27901EB0221227A8918CDF816\n" 
+"10627AA37A1B0403EB0262E37A02EB0322237BD2180DF1\n" 
+"16067260637B8DF81E30A37B8DF81F300DF11F03E57B5D\n" 
+"70257C9D70657CDD70A57CE67C16EB05252DB29D80267D\n" 
+"05EB0625667DAD19DD80A57D1D72002803D1002901D100\n" 
+"2A09D00DF1120184B068461622F6F712F80FBCFCF71DFB\n" 
+"0DF1120184B068461622F6F708F80FBC05F088F8C6E060\n" 
+"788DF811001D283ED10DF11606A1787171A17801290DD1\n" 
+"E178227912EB0121ADF8121089B20A460146DFF81406FC\n" 
+"F74FF8ACE002290BD1E078217911EB0021ADF8141089B2\n" 
+"DFF8FC05FCF741F89EE003290AD1E078217911EB0021F1\n" 
+"8089B2DFF8E405FCF734F891E0042940F08F80E0782179\n" 
+"11EB0021ADF81E1089B2DFF8CC05FCF725F882E0032826\n" 
+"D1A1780DF162056970DFF8B805FCF71AF86878012815D1\n" 
+"0020142872DA04EB8001CA780B791B0403EB02624B7902\n" 
+"EB03228979511804AA02EB8002C2F80210401CEAE70228\n" 
+"5DD1E0788DF8620059E01C2825D1A0788DF81500A07801\n" 
+"2808D1E1780DF111025170DFF86005FBF7EBFF48E00228\n" 
+"07D1E1788DF81310DFF85005FBF7E1FF3EE003283CD005\n" 
+"283AD1E1780DF113035970DFF83805FBF7D4FFF1940310\n" 
+"44830031E02C282FD10DF11600A1788171A078012803D1\n" 
+"E0788DF8160024E0022806D1E078217911EB0020ADF81D\n" 
+"001BE0032806D1E078217911EB0020ADF81F0012E00428\n" 
+"07D1E078217911EB00200DF11F01488008E0052806D1E0\n" 
+"78217911EB00200DF11F01888006208DF8680020788DF8\n" 
+"69000DF16B0004A95522F5F731FF0DF169000B21417000\n" 
+"20ADF8C0001AA804F0CFFFC0B295E520782F2805DBDFF8\n" 
+"9804FBF782FF00208CE540B2FCF74DFF012840F0818120\n" 
+"78014603292BD0062968D009292ED00C2948D00D2954D0\n" 
+"192900F093801A296AD01B2900F0A3801C2900F0E0801D\n" 
+"2900F0B6801E2900F0E880252900F00181262900F0F080\n" 
+"272900F00281282900F027812C2900F029812D2900F03F\n" 
+"814BE10322611C0DF1120000F060FA49E10722611C0DF1\n" 
+"120000F059FABDF81200010A41EA0020ADF81200BDF814\n" 
+"00010A41EA0020ADF81400BDF81600010A41EA0020ADF8\n" 
+"16002DE10322611C0DF1120000F03DFABDF81300010A41\n" 
+"EA0020ADF813001FE10322611C0DF1120000F02FFABDF8\n" 
+"1300010A41EA0020ADF8130011E10122611C0DF1120000\n" 
+"F021FA0DF111004178E548FBF7FFFE04E10B22611C0DF1\n" 
+"120000F014FADDF81300010221F0FF11000A00F0FF1008\n" 
+"43CDF813004FEA3040CDF813000DF116067088010A41EA\n" 
+"00207080002396F9062096F9051096F90400FCF7DBF8DE\n" 
+"E00622611C0DF1120000F0EEF9BDF81200010A41EA0020\n" 
+"ADF81200BDF81600010A41EA0020ADF81600C9E0042261\n" 
+"1C0DF1120000F0D9F9BDF81200010A41EA0020ADF81200\n" 
+"BDF81400010A41EA0020ADF814000FF2F820FBF7ABFEB0\n" 
+"E00922611C0DF1120000F0C0F9BDF81200010A41EA0020\n" 
+"ADF81200BDF81400010A41EA0020ADF81400BDF8160001\n" 
+"0A41EA0020ADF816000DF11606002396F9042096F90310\n" 
+"96F90200FCF786F889E00DF1110061784170A0788DF813\n" 
+"00A27861780FF29820FBF776FE7BE00322611C0DF11200\n" 
+"00F08BF9BDF81300010A41EA0020ADF813006DE0052261\n" 
+"1C0DF1120000F07DF9BDF81300010A41EA0020ADF81300\n" 
+"5FE00922611C0DF1120000F06FF958E00A22611C0DF112\n" 
+"0000F068F9BDF91200C0F3072141EA0020ADF81200BDF9\n" 
+"1400C0F3072141EA0020ADF81400BDF91600C0F3072141\n" 
+"EA0020ADF816000DF11606B6F90200C0F3072141EA0020\n" 
+"708030E00DF11100617841702BE00822611C0DF1120000\n" 
+"F03BF9BDF81400010A41EA0020ADF814000DF116060023\n" 
+"96F9032096F9021096F90100FCF70FF812E0F19403A047\n" 
+"83000222611C0DF1120000F022F9BDF81200010A41EA00\n" 
+"20ADF8120004E08DF8100060788DF81100207801460529\n" 
+"08D1604801210170687A002810D10846FFF7F9BB18290B\n" 
+"D18DF8100060788DF811000DF11100A1784170E0788DF8\n" 
+"130000208DF8680020788DF869000DF16B0004A95522F5\n" 
+"F76EFD0DF169000B2141700020ADF8C0001AA804F00CFE\n" 
+"C0B2FFF7D2BB20782F2806DB0FF23810FBF7BEFD0020FF\n" 
+"F7C8BB052805D14248002101700120FFF7C0BB1A281CD1\n" 
+"0822611C0DF1120000F0C7F8DDF81300010221F0FF1100\n" 
+"0A00F0FF100843CDF813004FEA3040CDF813000DF11606\n" 
+"7088010A41EA0020708005E02C2803D10DF11100617841\n" 
+"7001208DF8680020788DF869000DF16B0004A95522F5F7\n" 
+"1EFD0DF169000B2141701AA804F0BFFDC0B2FFF785BB01\n" 
+"20FFF782BB2078002802D0052805D006E00FF2B400C046\n" 
+"C04601E0FFF702F90120FFF772BB04F10802211D2046FD\n" 
+"F75EFF0120FFF769BBC8238800EC03880080888900509E\n" 
+"8800585886006458860070588600805886008C588600A4\n" 
+"588600B4588600C4588600D0588600DC588600E8588600\n" 
+"FC58860010598600245986003859860054598600818889\n" 
+"004C542053532041444400000041504452204144442025\n" 
+"6420256400004C6962726172792072616E676520697320\n" 
+"6F7665722C2052656D6F766500000041505F5245515545\n" 
+"5354000030B5134D0446287881B020B9281DFAF7C5F801\n" 
+"202870281DFAF7DAF8204610F05BFF0446281DFAF7F4F8\n" 
+"204601B030BD30B50446064D81B0281DFAF7C9F8204611\n" 
+"F0A4F8281D01B0BDE83040FAF7E1B848E7880010B50446\n" 
+"F5F77CFC204610BD30B504460F480D460178491C81B001\n" 
+"70F2F7F8FEA068E168884209D13821204602F01CFCF2F7\n" 
+"EEFEA068E1688842F5D02946204611F008FB01B0BDE830\n" 
+"40F3F722B800BF1C27880030B581B004460D46F2F7D8FE\n" 
+"A1680A4831B9407808B9F2F7CBFE012001B030BD017849\n" 
+"1C01702046294611F00EFBF3F706F8002001B030BD1C27\n" 
+"880000B500BF130096469446103928BFA0E80C50FAD85F\n" 
+"EA417C28BF0CC048BF40F8042BC90728BF20F8022B48BF\n" 
+"00F8012B00BD000010B582B00446A06940F00403A36123\n" 
+"6803F004032360A061C803C00B2062606800900098C007\n" 
+"FAD5012060603AB1204600F009FF2046BDE8164000F00F\n" 
+"BF13BD10B582B004466069002101616069616A01646069\n" 
+"216D81626069616DC1626069816941F004028261026802\n" 
+"F004020260816100210162416800910099F19403304B83\n" 
+"00C907FAD50121416060694FF4001141616069216A0163\n" 
+"6069DFF8041A8161606940F2DF31016094F918004109DF\n" 
+"F8F429012300F01F0003FA00F042F82100606900F0C3FE\n" 
+"606900F0CBFE607EC0F38000B0B1DFF8800AA16B09B1DF\n" 
+"F87C0A6169C0438861607EC0F3C100617E4909890041EA\n" 
+"4060617EC1F3800140EA410012E06069DFF8681A816160\n" 
+"7EC0F3C100617E4909890041EA4060617EC1F3800140EA\n" 
+"410040F00100617EC1F3C1010229A8BF40F08070616908\n" 
+"610320207494F918004109DFF8AC2A012300F01F0003FA\n" 
+"00F042F8210013BD38B504460D46206818B1204601F03B\n" 
+"F807E0207C042804D1A06C10B1204611F060FAD4F8B800\n" 
+"18B101464020FAF735FB680713D5D4F8A000401CC4F8A0\n" 
+"00206A61698A6942F004038B610B6803F004030B608A61\n" 
+"04220A6080B20863E80507D5D4F8A400401CC4F8A40060\n" 
+"6900F042FEA80507D5D4F8A800401CC4F8A800606900F0\n" 
+"43FEE80704D5D4F8AC00401CC4F8AC00A06CE8B960694F\n" 
+"F4417101608169DFF89C291143816194F918004109DFF8\n" 
+"9C28012300F01F0003FA00F042F82100D4F8B80028B101\n" 
+"460220BDE83440FAF7E4BA31BD000010B582B0052825D8\n" 
+"DFE800F00315181B1E21DFF8A0090068C0EB0011DFF898\n" 
+"0910EB011428D140F27F11DFF89009BDE81C40F0F73DB8\n" 
+"DFF88809ECE7DFF88809E9E7DFF88809E6E7DFF88409E3\n" 
+"E7DFF88409E0E76920F3F708FA0028E3D04FF4BC700090\n" 
+"DFF87039DFF85029DFF8E0196920F3F70AFAD6E7606900\n" 
+"6861698A6920EA0201C4F88810D4F898305B1CC4F89830\n" 
+"636942F000429A61626910606269126811F0180F0BD0D4\n" 
+"F89C20521CC4F89C20C0064CBF01200220A0740220E063\n" 
+"607EC0F380000028204602D001F03FF801E0FFF72AFF60\n" 
+"698069616940004008886113BD38B50024DFF8F05815F8\n" 
+"6C0C28BB284611F07CFB012810D1C4EB0410DFF8B41801\n" 
+"EB001001210174DFF8D0080068401CDFF8C81808602046\n" 
+"32BD6920F3F7A3F958B140F2DF100090DFF8B438DFF888\n" 
+"28DFF8C8196920F3F7A6F9641CF035062CD2DB4FF0FF30\n" 
+"32BD38B5C0EB0011DFF8642802EB0114062802DB6FF002\n" 
+"0032BD217C11B96FF0030032BD617E01F0030100F046F9\n" 
+"054600202074DFF860080068401EDFF85818086004F17C\n" 
+"0001F0A4F8284632BD0020DFF84C1811F8102B12B1401C\n" 
+"0628F9DB0628A8BF4FF0FF3070472DE9F04F83B0044625\n" 
+"6894F804B06779A0798DF8000094F80780D4F80890D4F8\n" 
+"0CA060690290A0690190002F18BF012FF19403C04E8300\n" 
+"40F0F380B8F1040F80F2EF80012F03D1B9F1011F80F0E9\n" 
+"8019F0030F40F0E580D145C0F0E280062D80F2DF80C5EB\n" 
+"0510DFF8A01701EB0016402106F13C00F5F737F92C2106\n" 
+"F18800F5F732F94FEA0B10DFF8B017405C38BB4FEA0B10\n" 
+"0122425401EB0B104560083011F0D0FA01281BD1707402\n" 
+"2030740BF0FB0040EA870000F01F009DF8001040EA4110\n" 
+"00F0E7004FEAC80101F0180108437076B9F1011F2CBF4F\n" 
+"F48030484602E06FF00500B5E0F061C6F820A00298B062\n" 
+"0198F062606AB063BBF1050F00F29180DFE80BF0030E19\n" 
+"242F3A0020F1F72AFDDFF89407706136203076DFF8EC06\n" 
+"35E00020F1F71FFDDFF88407706137203076DFF8E0062A\n" 
+"E00120F1F714FDDFF87007706138203076DFF8D4061FE0\n" 
+"0120F1F709FDDFF89007706139203076DFF8C00614E002\n" 
+"20F1F7FEFCDFF87C0770613A203076DFF8B00609E00220\n" 
+"F1F7F3FCDFF86C0770613B203076DFF89C0605609DF800\n" 
+"00042845D8DFE800F00334373E4100012F14BFDFF8B007\n" 
+"DFF8B00770622069C6F8B400044614F0030F0FD06920F3\n" 
+"F77EF858B140F2FD200090DFF89437DFF84026DFF8D016\n" 
+"6920F3F781F8DFF8840720403065A9F101004FF6FC7108\n" 
+"407065002030663FBBB9F1011F15D34FF0FF3027E0DFF8\n" 
+"D807D1E7DFF8D4077062A06AC6F8BC00CBE7DFF8CC07C7\n" 
+"E7DFF8C807F4E76FF0020014E030607060B060F0600420\n" 
+"30743046FFF719FD306840B1304600F0E0FD04E0042030\n" 
+"743046FFF70EFD002003B0BDE8F08F38B50C460025C0EB\n" 
+"0011DFF8A82502EB0111062CB8BF06281ADA2201DFF8C4\n" 
+"35D25C012A02BF03EB0412526882420FD12001C55403EB\n" 
+"04104FF0FF3242604D74DFF8A00500EB0410083000F045\n" 
+"FF01E06FF00205052C0CD8DFE804F00303050507070020\n" 
+"02E0012000E00220F1F779FC01E06FF00205284632BDC0\n" 
+"EB0011DFF8340500EB0110017C03291CBF017C042902D0\n" 
+"6FF003007047416900220A6190F918104A09DFF89C374F\n" 
+"F0010C01F01F010CFA01F143F822104169DFF8B4238A61\n" 
+"416940F2DF320A6090F918004109DFF8A42300F01F000C\n" 
+"FA00F042F8210000207047DFF8640700210160DFF86007\n" 
+"4FF480010160DFF85807DFF874130160DFF8500540F2DF\n" 
+"310160DFF848074FF480010160DFF8440700210160DFF8\n" 
+"30074FF400010160DFF83407DFF844130160DFF8240540\n" 
+"F2DF310160DFF818074FF400010160DFF81C0700210160\n" 
+"DFF800074FF080710160DFF80C07DFF814130160DFF8F8\n" 
+"0440F2DF310160DFF8E8064FF08071F194035052830001\n" 
+"60DFF8F40600210160DFF8D0064FF000710160DFF8E406\n" 
+"B9490160DFF8FC0440F2DF310160DFF8BC064FF0007101\n" 
+"60DFF8CC0600210160DFF8A0064FF080610160DFF8C006\n" 
+"AE490160DFF8D40440F2DF310160DFF88C064FF0806101\n" 
+"60DFF8A80600210160DFF874064FF000610160DFF89806\n" 
+"A2490160DFF8A80440F2DF310160DFF860064FF0006101\n" 
+"6070472DE9F84F05464FF0000A68690069C10703D46969\n" 
+"40F0010008616869066A476A380C00F00100310C01F001\n" 
+"01484029D0B8B2B1B2441A00F09880AC67A86C844288BF\n" 
+"0446A246AC652246296DB0B2D5F8B430C018F4F7DDFF28\n" 
+"6D20182865A86C001BA864A0192866286F401C2867E869\n" 
+"296E89B288425CD2009733462A6E40F2874152E0E869B1\n" 
+"B2A0EB010B1FFA87F818EB0B0469D0AC67A86C844288BF\n" 
+"0446A246AC65A34588BFA3465A46296DB0B2D5F8B430C0\n" 
+"18F4F7ACFF286D58442865A86CA0EB0B00A8640BEB0609\n" 
+"1FFA89F0E96989B2884205D14FF00009F00358BF4FF480\n" 
+"39B4EB0B0010D0804588BF80464246296DD5F8B400F4F7\n" 
+"8BFF286D40442865A86CA0EB0800A864C144C5F8609028\n" 
+"6F401C2867E869296E89B2884208D2009733462A6E4FF4\n" 
+"9A61DFF88C02EFF79CFD686902210160816921F0020181\n" 
+"61296E6869826942F004038361036803F0040303608261\n" 
+"C903C90B0162416800910099C907FAD5012141605046BD\n" 
+"E8F28F80B5DFF80C050078401CDFF804150870DFF80405\n" 
+"0078401CDFF8FC14087000200FE080B5DFF8EC04007840\n" 
+"1CDFF8E4140870DFF8E0040078401CDFF8D81408700120\n" 
+"FFF724FCDFF8C8040078401EDFF8C0140870DFF8C00400\n" 
+"78012805D1DFF8B404406808B1F2F79AF9DFF8A8040078\n" 
+"401EDFF8A014087001BD80B5DFF894040078401CDFF88C\n" 
+"140870DFF888040078401CDFF8801408700220D2E780B5\n" 
+"DFF870040078401CDFF868140870DFF868040078401CDF\n" 
+"F8601408700320C1E780B5DFF850040078401CDFF84814\n" 
+"0870DFF844040078401CDFF83C1408700420B0E780B5DF\n" 
+"F82C040078401CDFF824140870DFF824040078401CDFF8\n" 
+"1C14087005209FE7DF03008080E200E070B586B0C0EB00\n" 
+"124C4800EB0214207C049003281CBF207C042814D0257C\n" 
+"E66B6B20F2F7E4FD68B1606C0390A06C02900196009504\n" 
+"9BDFF8DC23DFF8D4136B20F2F7E5FD36E029B9D4F8BC00\n" 
+"88B110F0A9FF0EE0DFF8B4038068C4F8B80011F1010F03\n" 
+"D04A2010F0A5FF02E04A20F9F7DFFE61694FF441720A60\n" 
+"8A691B4B1A438A6194F918104A09F19403E0558300DFF8\n" 
+"8C33012401F01F0104FA01F143F8221030B1800754BF6F\n" 
+"F00300002006B070BD07E0180000801C0000806FF00100\n" 
+"06B070BD6FF0040006B070BDE2FCFF7FC0EB0011DFF84C\n" 
+"0300EB011041690A69520852000A614069016941F00101\n" 
+"01617047000004030080C0EB0011DFF8242302EB011113\n" 
+"E0C0EB0012DFF8183303EB02125369D3F810C04FEA5C0C\n" 
+"4FEA4C0CC3F810C05269136943F0010313614A69526802\n" 
+"F0070202F00602042AE3D17047007A8900187A8900C46F\n" 
+"8600047A890000E100E0087A89000C7A8900107A890014\n" 
+"7A89006C6F8600947A8900FC798900D86F8600B87F8900\n" 
+"10B50446C4EB0410A84901EB001090F918004109914A01\n" 
+"2300F01F0003FA00F042F821002046FFF797FF2046FFF7\n" 
+"A8FFC4EB04109D4901EB0010406900210162C4EB041099\n" 
+"4901EB001090F918004109974A012300F01F0003FA00F0\n" 
+"42F8210010BD00007C6F860000600B4000620B4000700B\n" 
+"400A46D0F8B81000291CBF1046F9F7AABD70470A46D0F8\n" 
+"B81000291CBF1046F9F7A1BD704780498968C0F8B81070\n" 
+"47000000720B4000800B4000820B4080B5C0EB00117D4A\n" 
+"02EB011149690A69D20717D50A6A4B6A9A4211D102E04F\n" 
+"F480720A604A6CD201F9D402E04FF400720A608A6CD201\n" 
+"F9D40A6A496A8A4201D0012002BDF5F734F8002002BDC0\n" 
+"EB00116A4800EB01104069406800F00400704700000000\n" 
+"7C6F860000C00A4000D00A40E46F8600FCFFFF0010B5C0\n" 
+"EB00115F4A02EB011461690969C4F8C41061694969C4F8\n" 
+"C81061698969C4F8CC106169096AC4F8D0106169496AC4\n" 
+"F8D4106169896AC4F8D8106169C96AC4F8DC106169096B\n" 
+"C4F8E0106169096CC4F8E4106169496CC4F8E810616989\n" 
+"6CC4F8EC10FFF790FF411E8941C90FC4F8C01010BD0830\n" 
+"0C4000400B4000500B4000400C4010B5C0EB00113E4800\n" 
+"EB011460690069C00735D4D4F8C00090B3606900210161\n" 
+"6069D4F8C81041616069D4F8CC10816160690021016260\n" 
+"69D4F8D81081626069D4F8DC10C1626069D4F8E0100163\n" 
+"6069D4F8E4100164606900F015F8606900F01DF8606940\n" 
+"F2DF3101606069012141606069D4F8C41001610020C4F8\n" 
+"C00010BD4FF0FF3010BD02E04FF480710160416CC901F9\n" 
+"D41C4941647047000002E04FF400710160816CC901F9D4\n" 
+"18498164704780E100E010600B4084E100E018600B4084\n" 
+"E200E010620B4018620B4010700B4018700B4010720B40\n" 
+"18720B4010800B4018800B4010820B4018820B40868889\n" 
+"001C278800F06F860064708600F194037059830080E200\n" 
+"E0187A890000E100E0DE0300012100000130B490F91820\n" 
+"5309DFF89845012502F01F0205FA02F244F82320426889\n" 
+"180268914224BFB1FBF2F302FB1311416016E030B490F9\n" 
+"18205309DFF86845012502F01F0205FA02F244F8232082\n" 
+"6889180268914224BFB1FBF2F302FB1311816090F91800\n" 
+"4109DFF8402500F01F0005FA00F042F8210030BC70472D\n" 
+"E9F84304460D4691464FF0000860682168491E884204BF\n" 
+"A06800281FBF6068401CA168884242D06068814201D388\n" 
+"422CD121B92168091A4E1E002702E02268161A4F1EB919\n" 
+"894588BF89464E4588BF4E46B04632462946E368C018F4\n" 
+"F74AFC31462046FFF790FF7119B9EB060018BF002F1CD0\n" 
+"874288BF0746B8443A466068E368C018F4F736FC39460D\n" 
+"E0091A491E0DD0894588BF8946C8464A462946E368C018\n" 
+"F4F727FC49462046FFF76DFF4046BDE8F2832DE9F84304\n" 
+"468946904600266068A168884239D00546084626D22168\n" 
+"0F1AE919884588BF8846474588BF47463E463A46E16841\n" 
+"184846F4F703FC39462046FFF761FF07EB0900B8EB0701\n" 
+"18BF002D1BD08D4288BF0D46AE192A46A168E368C918F4\n" 
+"F7EEFB29460CE0291A0DD0884588BF884646464246E168\n" 
+"41184846F4F7E0FB41462046FFF73EFF3046BDE8F28338\n" 
+"B5DFF8EC03DFF8EC130160DFF8EC03006820F44050DFF8\n" 
+"E0130860086840F440500860DFF8CC0300210160DFF8C8\n" 
+"130160DFF8C403006820F44040DFF8BC130860086840F4\n" 
+"40400860DFF8A40300210160DFF8A0130160DFF8A00300\n" 
+"6820F44030DFF894130860086840F440300860DFF88003\n" 
+"00210160FFF704FB4FF4B461DFF87C03F4F7D5FA6021DF\n" 
+"F87403F4F7D0FA0024DFF86C53002028704FF0FF306860\n" 
+"012105F1080000F0E1F9641C1035062CF1D30024DFF844\n" 
+"5300202874012105F17C0000F0D3F9641CF035062CF4D3\n" 
+"002032BD70B5C0EB0013C84800EB0314D4F88C00401CC4\n" 
+"F88C00D4F890001018C4F89000207C032804BF607C0128\n" 
+"02D06FF0010070BD0420207494F918004309B64D012600\n" 
+"F01F0006FA00F045F823000020E063E064216421656264\n" 
+"A26494F918004109AE4A00F01F0006FA00F042F8210020\n" 
+"46FFF72CFB0321217470BD2DE9F047054600246869066A\n" 
+"406A010C01F00101320C02F00102514015D1801B75D0E8\n" 
+"650246B0B2D5F8B41041182846FFF79EFE0446D5F89410\n" 
+"4118C5F89410801928660122014640E0E969B2B2A1EB02\n" 
+"0887B217EB080959D0C5F85C904246B0B2D5F8B4104118\n" 
+"2846FFF781FE0446D5F89410F19403005D83004118C5F8\n" 
+"941010FA86F1EA69914206D14FF0000AF10306D44FF480\n" 
+"3A03E006F4803242EA010AA9EB0001404510D1002918BF\n" 
+"002F0CD03A46D5F8B4102846FFF75DFE0419D5F8941041\n" 
+"18C5F894108244C5F860A0012251466869FEF7ABFE95F9\n" 
+"18004109774A012300F01F0003FA00F042F821008CB140\n" 
+"212846FFF7E8FC286B20B122460021686B2B6B9847A86A\n" 
+"20B122460021E86AAB6A98472046BDE8F0872DE9F04182\n" 
+"B0884615461E46C0EB0011624A02EB0117396871B3D7F8\n" 
+"8C00401CC7F88C002A4641463846FFF771FE0446A0442D\n" 
+"1BD7F890002018C7F890000EB3AC421FD23846FFF7BBFC\n" 
+"16F1010F04D03146E02010F08AFB02E0E020F9F7C4FA2A\n" 
+"4641463846FFF753FE0419D7F890104018C7F8900005E0\n" 
+"00912A46414610F085FA04462046BDE8F68138B504460D\n" 
+"4660690069C10703D4616940F0010008616069406A616E\n" 
+"6066020C02F001020B0C03F001035A4008BF401A04D0E2\n" 
+"6989B2511A11FA80F0E16C4118E164D4F894104118C4F8\n" 
+"9410616C081A6064680708D5D4F8A000401CC4F8A000A0\n" 
+"6B08B1A06B8047E80507D5D4F8A400401CC4F8A4006069\n" 
+"FFF72AFDA80507D5D4F8A800401CC4F8A8006069FFF72B\n" 
+"FDA80732D5D4F8B000401CC4F8B000606F401C60670120\n" 
+"E06303202074606902210160816941F00201816194F918\n" 
+"004109164A012300F01F0003FA00F042F8210001212046\n" 
+"FFF71DFC206B20B1E26C0021606B236B9847A06A38B1E2\n" 
+"6C0021E06AA36A01B0BDE83040184731BD000080E100E0\n" 
+"00E100E0FC000B407347BCBCE8000B40187A8900B87F89\n" 
+"0080E200E0826942F004038361036803F0040303608261\n" 
+"0422026089B20163704710B5F1F74BFC0548416A026A40\n" 
+"788C1A08B9F1F73DFC204610BD00BF1C27880030B581B0\n" 
+"04460D46F1F738FC0548E560407820B901B0BDE83040F1\n" 
+"F729BC01B030BD00BF1C278800002200230CC008384160\n" 
+"704730B51A4D04462878401C81B02870F1F71BFC606840\n" 
+"1C6060012804BF204601F029F9687808B9F1F709FC01B0\n" 
+"BDE83040F1F74BBD10B50446F1F706FC606840B9202120\n" 
+"4601F02CF9F1F7FEFB60680028F6D06068401E60600448\n" 
+"4078002804BFBDE81040F1F7EABB10BD00001C27880070\n" 
+"B50A4E04463078401C0D463070F1F7E3FB6560707808B9\n" 
+"F1F7D8FB15B1204601F0F0F8F1F719FD002070BD1C2788\n" 
+"00F0B5114E81B00546306A00240F1800BFF1F7CAFB6868\n" 
+"48B1401E68600124707870B9F1F7BBFB204601B0F0BD3A\n" 
+"462021284610F05FFAB068F1940390608300C068381A01\n" 
+"28E7DA204601B0F0BD00BF1C27880010B509490A78521C\n" 
+"0A700024027A002A1EBF426889688A4202D1F8F755FD01\n" 
+"24F1F7DDFC204610BD1C2788000160426000E000BF0021\n" 
+"8160C1607047C1688068814201D10120704700207047C1\n" 
+"688268891A44BF426851184068401E814201D101207047\n" 
+"00207047C2680368D154C168491C4268914208BF0021C1\n" 
+"608268914206D18168491C4268914208BF002181607047\n" 
+"81680268895C8268521C43689A4208BF00228260084670\n" 
+"47000002480178491C0170F1F793BC1C27880030B581B0\n" 
+"0446F1F74BFB0A4D6878401C687008212046F9F77DFE68\n" 
+"78401E6870C0B220B901B0BDE83040F1F733BB01B030BD\n" 
+"00BF1C27880030B581B00546F1F72FFB0F4C6078401C60\n" 
+"70287938B94821284601F051F86879022805D102E06879\n" 
+"012801D0002028716078401E6070C0B220B901B0BDE830\n" 
+"40F1F70CBB01B030BD1C27880030B50E4D04462878401C\n" 
+"81B02870F1F705FB6878401C6870204610F0D3F9204610\n" 
+"F0FAF96878401E6870C0B208B9F1F7EFFA01B0BDE83040\n" 
+"F1F731BC1C278800026811430160704700BF0021016041\n" 
+"608160C160016141618161C161016241628162704738B5\n" 
+"04461546216000206060C4F81808FF2084F81C080020C4\n" 
+"F8200884F82408FF2084F82508002084F82608A4F82808\n" 
+"41F64A000021015504F5C0504B3010F0E1F904F5C0504C\n" 
+"30FFF7CCFF04F5C0507830FFF7C7FF41F6A40000210155\n" 
+"41F6A500FF21015541F6A8000021015141F6AC00015141\n" 
+"F6B000015141F6B400015541F6B500015541F6B8000151\n" 
+"41F6BC00015104F5C6500560204600F02CF8204632BD38\n" 
+"B5044614E041F6A8000559286A41F6A801085141F6B000\n" 
+"0059298A401A41F6B0010851686810F0BBF9284610F0B8\n" 
+"F941F6A80000590028E5D141F6B000005930B17522DFF8\n" 
+"F01A20680368DB699847204632BD034641F6A400C05C41\n" 
+"F6A501C95C401AC0B2401E05D07B22DFF8381C186800F0\n" 
+"1EBC5860C3F81808C3F82008FF2083F81C08002083F824\n" 
+"08FF2083F82508002083F82608A3F8280841F64A000021\n" 
+"C15441F6A500FF21C15441F6A4000021C15441F6B400C1\n" 
+"5470471CB5044620680168C968884741F6B801085141F6\n" 
+"BC000059401C41F6BC0108510020ADF8040008598DF805\n" 
+"0000200090022301AA4FF44071204600F027F813BD10B5\n" 
+"82B00446B2F5006FC8BFAE2204DC41F6B500005D38B1AF\n" 
+"22DFF88C1B20680368DB6902B00EE0009013460A460021\n" 
+"204600F00BF841F65C00F19403206483000059401C41F6\n" 
+"5C01085113BDBDE8104018472DE9F44F82B00446884699\n" 
+"46B9F5006F07DDB822DFF8481B20680368DB6998479CE3\n" 
+"4FEA19208DF8010041F64A0010F804A00AF1010101559D\n" 
+"F8010008B148F04008B8F1FF0FC8BF48F0800804F5C050\n" 
+"4B3010F000F941F67800005941F64C010959884218BF48\n" 
+"F0200841F67C00005941F650010959884218BF48F01008\n" 
+"B02084F82A08002084F82B088DF803A001230DF1030204\n" 
+"F62C01204600F0F7F8861C5FFA89F104F5C0504B3010F0\n" 
+"BAF88DF8029001230DF10202301900F62A01204600F0E4\n" 
+"F885195FFA88F104F5C0504B3010F0A7F88DF800800123\n" 
+"00AA281900F62A01204600F0D2F847190025B8F1000F1E\n" 
+"D00120A84010EA080616D0012E4CD194F81CB8594604F5\n" 
+"C0504B3010F089F88DF800B0012300AA381900F62A0120\n" 
+"4600F0B4F8C71928EA06086D1C102DDDD34A46029904F5\n" 
+"C0504B3010F079F84B46029A381900F62A01204600F09F\n" 
+"F8C51904F5C0504B300078C046010941EA00108DF80000\n" 
+"012300AA281900F62A01204600F08CF828440119B02281\n" 
+"F82A28401C0119012281F82A28421C04F62A0120680368\n" 
+"1B6998475046E1E2022E0BD19DF8301004F5C0504B3010\n" 
+"F03BF89DF830008DF80000AEE7042E08BF94F825B8A1D0\n" 
+"082E08BF94F825B89CD0102E10D141F65000005941F67C\n" 
+"010959A0EB010B41F67C0041F65001095901515FFA8BF1\n" 
+"8AE7202E14D141F64C00005941F678010959A0EB010BBB\n" 
+"F1FF0F88BF4FF0FF0B0BEB010041F6780108515FFA8BF1\n" 
+"73E7402E0BD19DF8011004F5C0504B300FF0F9FF9DF801\n" 
+"008DF800006CE7802E08BF4FEA182B3FF45FAFB6F5807F\n" 
+"09D1002104F5C0504B300FF0E5FF00208DF8000059E7B6\n" 
+"F5007F09D1002104F5C0504B300FF0D8FF00208DF80000\n" 
+"4CE740F22512DFF8DC1820680368DB69984751E7002003\n" 
+"B9704710B41478B02C03D14454401C03240CE0112C04D1\n" 
+"B0244454401C042405E0132C03D1B0244454401C052444\n" 
+"54401C521C5B1EE6D110BC704782B040F29512DFF88C18\n" 
+"00680368DB6902B0184769E0F8B5044620680168C96888\n" 
+"4706464FF47A7541F6A800075941F6B500005DB8B141F6\n" 
+"B8000059301AB0F57A7F0DD341F6BC0000590B2804D320\n" 
+"6801684969884741E02046FFF726FE3DE0C0F57A753AE0\n" 
+"17B94FF0FF3536E0F868301AB0F57A7F01D2397A39B3B8\n" 
+"780A2804D1206801684969884724E041F674000059B978\n" 
+"88423CBF41F674000151B878401CB870FE60387800903B\n" 
+"8A7A6802212046FFF7F19403B067830040FE7870002038\n" 
+"7241F66C000059401C41F66C01085104E0C0F57A70A842\n" 
+"D8BF05463F6A002FC8D12946206802689268BDE8F84010\n" 
+"47F8B504460D461646002710E0B0280ED10120606041F6\n" 
+"4C000059D4F82018491E081841F64C0108510120C4F820\n" 
+"08BFB2B74200F08680785D7F1CD4F82018491CC4F82018\n" 
+"112818BF1328F0D061680029DCD0022914D002D3032921\n" 
+"D0E7E728B9022060600020C4F81808E0E7B02802D00020\n" 
+"6060DBE741F64C000059801CD0E7B02808BF0320F4D0D4\n" 
+"F8181840F60E029142EDD24A1CC4F8182809190872C6E7\n" 
+"012808D1204600F04DF80028E0D00020C4F82008DCE703\n" 
+"280DD1D4F8180840F60E018842D4D2411CC4F818180019\n" 
+"B02101720220CDE704280DD1D4F8180840F60E018842C4\n" 
+"D2411CC4F818180019112101720220BDE705280DD1D4F8\n" 
+"180840F60E018842B4D2411CC4F8181800191321017202\n" 
+"20ADE780B9022060600020C4F8180841F64C000059D4F8\n" 
+"2018891E081841F64C010851022077E7B02898D1012097\n" 
+"E7F1BD2DE9F04F83B0044601A80FF08AFED4F818180429\n" 
+"C0F026818A1E04F109010FF08BFE010941EA0010D4F818\n" 
+"180919C979C0B2884240F0168104F1080A1AF8010B8DF8\n" 
+"01001AF8010B1AF8011BD4F81828161F002200238DF800\n" 
+"3093469046964691461546F1B1B6B2002E00F0FB800127\n" 
+"AF400F401FFA87FCBCF1000F0BD021EA0C011AF8017B76\n" 
+"1EBCF1010F39D184F824784FF0010E6D1C102DE3D389B2\n" 
+"002940F0E080B6B2B04240F0DC8094F81C08401CC0B29D\n" 
+"F80110814211D0002B02BF41F6B501095D00290AD141F6\n" 
+"500109599DF80130181AC0B2401841F6500108519DF801\n" 
+"0084F81C08BEF1000F01D0002E4ED004F5C3500068401C\n" 
+"04F5C35108604DE0BCF1020F03D18DF800700122C2E7BC\n" 
+"F1040F08BF4FF0010BBCD0BCF1080F08BF4FF00108B6D0\n" 
+"BCF1100F0AD141F6540C5CF804C05CFA87FC41F6540747\n" 
+"F804C0A8E7BCF1200F08D141F6580C5CF804C05CFA87FC\n" 
+"41F65807F0E7BCF1400F08BF40EA072096D0BCF1800F08\n" 
+"BF41EA072190D0BCF5807F08BF4FF001098AD0BCF5007F\n" 
+"08BF012385D04CEA010185E741F664000059401C41F664\n" 
+"01085122B9751EAD41E843C50F38E001259DF8000094F8\n" 
+"251888420BD101A80078C04694F82618884202BFB4F828\n" 
+"08864205271CD09DF8000094F82518491CC9B2884213D1\n" 
+"0527A4F828689DF8000084F8250801A80078C04684F826\n" 
+"0841F670000059401C41F67001085101E0092700250020\n" 
+"0090002302463946F19403406B83002046FFF776FCBBF1\n" 
+"000F06D040F2B332B34920680368DB699847B8F1000F06\n" 
+"D040F20942AE4920680368DB69984765B1B9F1000F3246\n" 
+"514603D0204600F012F803E0206803689B699847012000\n" 
+"E0002003B0BDE8F08FDFF8F81300680368DB6918470000\n" 
+"2DE9F04F93B0044612B940F21142A3E011F8010B521E05\n" 
+"2800F2CC80DFE800F0030E4B5498A6501E80B210B140F2\n" 
+"1C4292E00978204600F0C0F8BBE092B204A800F052FA00\n" 
+"F05CFA804604A800F058FA814604A800F054FA824604A8\n" 
+"00F050FA054604A800F04CFA064604A800F048FA074604\n" 
+"A800F044FA834604A8007EC04618B904A800F01DFA40B1\n" 
+"40F22C427B4920680368DB69984704A889E0CDF80CB002\n" 
+"970196009553464A464146204600F0E7F804A87CE092B2\n" 
+"12B140F233424BE0204600F010F975E092B200A800F00C\n" 
+"FA07A8FFF7D9FA00A800F034FA079000A800F030FA0890\n" 
+"00A800F02CFA099000A800F028FA0A9000A800F024FA0B\n" 
+"9000A800F020FA0C9000A800F01CFA0D9000A800F018FA\n" 
+"0E9000A800F014FA0F9000A800F010FA109000A800F00C\n" 
+"FA119000A8007EC04620B900A800F0C3F9002836D040F2\n" 
+"49424D4920680368DB6998472EE092B23AB14FF48A6248\n" 
+"4920680368DB69984727E0204600F043F923E092B200A8\n" 
+"00F0BAF900F0D1F900A800F0CEF900A800F0CBF900A800\n" 
+"F0C8F900A800F0C5F900A8007EC04618B900A800F092F9\n" 
+"30B140F25F42354920680368DB69984700A8C046C04613\n" 
+"B0BDE8F08F30B5ADF62C0D04460D46072208A901A800F0\n" 
+"F3F9294600F0FDF994F81C1801A800F0F8F994F8241801\n" 
+"A800F0F3F994F8251801A800F0EEF941F64A00015D01A8\n" 
+"00F0E8F941F6A400015D01A800F0E2F941F6A500015D01\n" 
+"A800F0DCF901A8007EC04638B140F28642724920680368\n" 
+"DB69984725E001A800F042F9054601A88068C046014601\n" 
+"208DF82800ADB2B5F5006F07D340F27142664920680368\n" 
+"DB6998470EE02A460DF12900F3F773FA002000906B1C9B\n" 
+"B20AAA4FF480712046FFF70AFB0CE14C6D860010B50446\n" 
+"41F6B500005D58B341F6BC000059814226D141F64A0091\n" 
+"1C015541F6A4010298401C0855085D401E41F6A5010855\n" 
+"039884F81C080498401E84F82508002084F82608A4F828\n" 
+"0841F6B500002101552046FFF74BFC20680168096ABDE8\n" 
+"1040084710BD30B5ADF64C0D04462C220DF5026101A800\n" 
+"F05DF941F64C01095900F086F941F65000015901A800F0\n" 
+"80F941F65400015901A800F07AF941F65800015901A800\n" 
+"F074F941F65C00F19403D06E8300015901A800F06EF904\n" 
+"F5C350016801A800F068F941F66400015901A800F062F9\n" 
+"41F66800015901A800F05CF941F66C00015901A800F056\n" 
+"F941F67000015901A800F050F941F67400015901A800F0\n" 
+"4AF901A8007EC04638B140F2B942184920680368DB6998\n" 
+"4725E001A800F08FF8054601A88068C046014603208DF8\n" 
+"2000ADB2B5F5006F07D340F271420D4920680368DB6998\n" 
+"470EE02A460DF12100F3F7C0F9002000906B1C9BB208AA\n" 
+"4FF480712046FFF757FA01A8C046C0460DF64C0D30BD4C\n" 
+"6D860030B5ADF62C0D04460A2208A901A800F0D9F84FF4\n" 
+"006100F0EFF84FF4006101A800F0EAF84FF47A7101A800\n" 
+"F0E5F80A2101A800F0E1F8962101A800F0DDF801A8007E\n" 
+"C04638B140F2CE420E4920680368DB69984727E001A800\n" 
+"F036F8054601A88068C046014605208DF82C00ADB2B5F5\n" 
+"006F09D340F27142024920680368DB69984710E04C6D86\n" 
+"002A460DF12D00F3F765F9002000906B1C9BB20BAA4FF4\n" 
+"80712046FFF7FCF901A8C046C0460DF62C0D30BD000000\n" 
+"BF154B0360002343608160C260436103767047416901B1\n" 
+"10E040687047416901B10BE0C1684068081A7047002141\n" 
+"60416101767047012101767047012101760020704710B5\n" 
+"0446FFF7DAFF014869E000000000C46C86007C6C860041\n" 
+"6921B9C1684268521C914200D2E7E7416842608068085C\n" 
+"7047416921B9C1684268921C914200D2DAE741684A1C42\n" 
+"608268895C4268531C43608068105C41EA002070474169\n" 
+"21B9C1684268121D914200D2C5E741684A1C4260826889\n" 
+"5C4268531C43608368D25C41EA02214268531C43608368\n" 
+"D25C41EA02414268531C43608068105C41EA0060704742\n" 
+"688368D21843692BB9C368D0F804C08C44634502D20121\n" 
+"017602E04368C918416010467047000000002DE9104004\n" 
+"46FFF773FF014802E000BF0C6D86002060204610BD4269\n" 
+"22B9C26843685B1C9A4200D27DE7426843608068115470\n" 
+"47426922B9C26843689B1C9A4200D270E74268531C4360\n" 
+"8368D1544268531C43608068090A11547047426922B9C2\n" 
+"6843681B1D9A4200D25CE74268531C43608368D1544268\n" 
+"531C436083684FEA112C02F803C04268531C436083684F\n" 
+"EA114C02F803C04268531C43608068090E1154704738B5\n" 
+"04461546606920B9E0686268AA18904202D20120207631\n" 
+"BD2A466068A368C018F3F767F860682818606031BD0000\n" 
+"10B5044602E0C068F0F74BFCF0F7E2FA20680028F7D104\n" 
+"484078002804BFBDE81040F0F7D1BA10BD1C27880070B5\n" 
+"0D4E054684B0F1940360728300B06802950C4601950390\n" 
+"F0F7C9FA2868009000A82860009808B100A9416000A9B0\n" 
+"6881600474F0F7EAFC04B070BD00BF1C278800A9480068\n" 
+"A74909680909C0F3011040EA01107047A5487047A54800\n" 
+"687047A4484068704770B504460D461646F0F79EFAA048\n" 
+"4078401C9F4948702068B04306EA0501084320609B4840\n" 
+"78401E994948704878002804BFBDE87040F0F781BA70BD\n" 
+"F8B51446B0F5002F84BFA0F50002B2F5402F2DD9012C0C\n" 
+"D0022C14D10022491C022311F8015945EA02225B1EF9D1\n" 
+"028028E00022012311F8015945EA02225B1EF9D102701E\n" 
+"E0042C1CDB621004EB927292100023CD1C042615F80179\n" 
+"47EA0323761EF9D140F8043B091D521E0AD0F0E7A0F500\n" 
+"02B2F5402F03D82246F2F7BEFF00E000242046F2BD38B5\n" 
+"034608461446B3F5002F84BFA3F50001B1F5402F1FD901\n" 
+"2C08D0022C0DD1198800F8011B090A521EFAD117E01978\n" 
+"00F8011B0021521EFAD110E0042C0ED3A1081A68042500\n" 
+"F8012B120A6D1EFAD11B1D491E03D0F4E71946F2F78BFF\n" 
+"204632BD2DE9F04104460D19E01C4FEA9008AF080026A5\n" 
+"4209D3A4F50000B0F5402F9CBFA5F50000B0F5402F0BD9\n" 
+"0B46224640F209114E48EDF74FFD03E014F8010B56FA80\n" 
+"F6B4EB880FF8D3B4EB870F05D254F8040B8619B4EB870F\n" 
+"F9D3AC423CBF14F8010B56FA80F6F8D33046BDE8F08138\n" 
+"B504460D462819A04209D3A4F50001B1F5402F9CBFA0F5\n" 
+"0000B0F5402F06D92B4622464FF495713548EDF71DFD29\n" 
+"462046BDE834400FF0CDB8EDF772BA10B5044621460020\n" 
+"EDF74DFAF0F7B3F92B484078401C29494870EDF736FAED\n" 
+"F7F8F9EDF7F8F9EDF7F8F92046EDF7F1FB23484078401E\n" 
+"214948704878002804BFBDE81040F0F791B910BD38B528\n" 
+"B1EDF767FA0446EDF767FA04E0EDF767FA0446EDF768FA\n" 
+"05464FF47A70EDF742FAF0F782F912484078401C114948\n" 
+"70EDF7C9F9EDF7C9F9EDF7C9F9EDF707FA29462046EDF7\n" 
+"C8FB0A484078401E084948704878002804BFBDE83140F0\n" 
+"F75FB931BDF00F0B4000020E405A530300547689001C27\n" 
+"8800246E860010B50446084611461A46029BA04710BD00\n" 
+"281CBF1520EFF741BA9948006810F0030F07D197480068\n" 
+"10F0030F04BF1520EFF75FBA7047F8B504460E4617461D\n" 
+"46022CB8BF102F02DB4FF0FF30F2BD0120FFF7DEFFC4EB\n" 
+"C4008B4901EB80004661077606990160380240EA860040\n" 
+"EAC530002C14BF83498249086014BF3D203C20012100F0\n" 
+"1F0001FA00F0804908600020F2BD38B5022802DB4FF0FF\n" 
+"3032BDC0EBF19403F0758300C002794B03EB8202002814\n" 
+"BF754B744B1B68774C2340002814BF3D243C2439BB20B1\n" 
+"3D2023F480316E4B03E03C2023F480316B4B1960012100\n" 
+"F01F0001FA00F06C490860107C00F00300012814BF6FF0\n" 
+"070454686248006810F0030F02BF6148006810F0030F1C\n" 
+"D11520EFF7F2F918E0012504F01F0405FA04F45F4D2C60\n" 
+"43F48054002814BF574D554D2C6000245460547641F480\n" 
+"311943002814BF514850480160204632BD4FF048725143\n" 
+"B1FBF0F0704738B50400C4EBC4004B4901EB800503D04E\n" 
+"4800684E4902E04E4800684E490968296195F9191011B9\n" 
+"A860E86009E0A968884238BFA86004D3E968814238BF01\n" 
+"46E960687E401C687695F91900042827D1E868A9680818\n" 
+"40086860E868A968401A642148436968B0FBF1F0032815\n" 
+"DA00212046FFF765FF2868002844D0287C00F003000128\n" 
+"14BF6FF0070100216A6820462B6801B0BDE83040184700\n" 
+"2068606876002C14BF23482148006820F4803014BF2049\n" 
+"1E49086014BF1E481C48006820F4706014BF1B49194908\n" 
+"6014BF19481748006840F4805014BF16491449086014BF\n" 
+"14481248006820F4805014BF11490F49086014BF0F480D\n" 
+"48006840F4803014BF0C490A49086031BD80B50020FFF7\n" 
+"78FF0A484FF08051016001BD80B50120FFF76FFF05484F\n" 
+"F00051016001BD000098000B40A4000B400C88890084E2\n" 
+"00E0FCEFFFFF84E100E004E100E09C000B40A0000B4090\n" 
+"000B4094000B4000281CBF012802280CD0072819D00828\n" 
+"0DD00C280DD013280DD018280DD021280DD011E000230B\n" 
+"601070002070470320F8E70420F6E70520F4E70620F2E7\n" 
+"0720F0E704200123EEE74FF0FF307047000010B504460A\n" 
+"480078401C09490870084600214170EFF7C8FF06480470\n" 
+"2246CF210548EDF7D7FA034800780028FBD110BD1C2788\n" 
+"0083888900586B86002DE9F04FA1B0824602AE00201746\n" 
+"1D46029170620DF144080AE017F8011B0298D047029000\n" 
+"2800F0DA82706A401C7062387808B9706AD4E22528EED1\n" 
+"0020F06030617061B061F061306201E040F0010017F801\n" 
+"1F2029F9D023290DD02B2904D02D2906D030290AD00CE0\n" 
+"40F0020080B2EEE740F00400FAE740F00800F7E740F010\n" 
+"00F4E72A290DD129680A1D2A600968F162002904D54942\n" 
+"40F00400F16280B27F1C13E00021F1620BE0F16A6FF000\n" 
+"43994205D001EB810302EB43013039F1627F1C3A78A2F1\n" 
+"30010A29EED339782E2903D04FF0FF31B1621EE017F801\n" 
+"1F2A2906D129680A1D2A607F1C0968B16213E00021B162\n" 
+"0BE0B16AF19403807983006FF00043994205D001EB8103\n" 
+"02EB43013039B1627F1C3A78A2F130010A29EED330860F\n" 
+"F6604039780EF074FE08B117F8010B8DF83A009DF83A00\n" 
+"682802BF39786829622005D06C2804BF38786C2803D171\n" 
+"208DF83A007F1C11A8B0603978B1F1250029D01C3800F0\n" 
+"C080001F022840F2BC80133800F0E480093800F0B68080\n" 
+"1E00F07781401E00F02081401E022840F2AC80001F00F0\n" 
+"1981401F7BD0401E00F0CF80401E22D0C01E0BD0801E00\n" 
+"F0C880C01E00F0C58064E1F068411CF160252169E12868\n" 
+"011D29600068B26A7060002A02D5F7F77DFC07E000210E\n" 
+"F027FE00281ABF7168401AB06A306156E12868011D2960\n" 
+"00210068CDE900014FF03C0E11A87060DDE9000111B908\n" 
+"B9B26ACAB10206120FA0EB02123032AEF10103D2B29E46\n" 
+"3A2AA8BF2732000903F8082040EA0170090908BF002804\n" 
+"D0726811AB73449A42E5D311A971447160CEF13C00B16A\n" 
+"3061884207DA081AB0614FF6EF71308E084030861AE100\n" 
+"2940F1188196F8301001F01401102940F01181F16AF268\n" 
+"891AB269891AA1EB000EBEF1010FC0F20681C6F818E002\n" 
+"E19DF83A00622818D0682806D06A280BD06C2819D07128\n" 
+"07D016E02868011D29600068716A0180EEE02A68101D28\n" 
+"601268706AC117C2E90001E5E02868011D29600068716A\n" 
+"0170DEE02868011D29600068716A0160D7E02868C01D20\n" 
+"F00700286000F108022A60D0E90023CDE90023002B04D5\n" 
+"F068421CF2602D220DE0308E820704D5F068421CF2602B\n" 
+"2205E0C00705D5F068421CF260202200F80820F06811AA\n" 
+"8018706000A800F0E3F9ACE09DF83A006C2808BF2A6811\n" 
+"D0712808BF2A6802D02A686A280AD1D21D22F007022A60\n" 
+"144604F108022A60D4E9002303E0131D2B6000231268CD\n" 
+"E90023682808BF92B207D0622808BFD2B203D0742818BF\n" 
+"7A2802D10023CDE9002396F8300000075FD5DDE9002300\n" 
+"2B08BF002A59D041F02000782855D1F068302200F80820\n" 
+"401C421CF26000F808104BE09DF83A0062280CD0682810\n" 
+"D06A281AD06C2823D0712816D074281FD07A280CD01CE0\n" 
+"2868021D2A6090F900201AE02868021D2A60B0F9002014\n" 
+"E02868021D2A60002302680FE02868C01D20F007002860\n" 
+"00F108022A60D0E9002304E02868021D2A600268D317CD\n" 
+"E90023002B04DAF068421CF2602D220DE0308E820704D5\n" 
+"F068421CF2602B2205E0C00705D5F068421CF260202200\n" 
+"F80820F06811AA8018706000A800F0C0F813E0F068411C\n" 
+"F16029680A1D2A60096809E0F068421CF260252200F808\n" 
+"2021B1F19403107D8300F068421CF26000F80810F06AF1\n" 
+"68401AB169401A3169401AF169401A7169401A316AA0EB\n" 
+"010996F830007F1C400710D420208DF84000002409E001\n" 
+"2310AA00A9504600F040FC002840F08580641C4C45F3DB\n" 
+"F4680DF1440B0AE01BF8011B0298D0470290002876D070\n" 
+"6A401C7062641E002CF2D130208DF840004FF0000BB469\n" 
+"09E0012310AA00A9504600F01CFC002861D10BF1010BA3\n" 
+"45F3DB3469D6F804B00AE01BF8011B0298D04702900028\n" 
+"52D0706A401C7062641E002CF2D130208DF840004FF000\n" 
+"0BF46909E0012310AA00A9504600F0F8FB00283DD10BF1\n" 
+"010BA345F3DB30697168746900EB010B09E01BF8011B02\n" 
+"98D047029068B3706A401C7062641E002CF3D130208DF8\n" 
+"40004FF0000B346A08E0012310AA00A9504600F0D3FBC8\n" 
+"B90BF1010BA345F4DB96F8300040077FF53AAD20208DF8\n" 
+"4000002400E0641C4C45BFF631AD012310AA00A9504600\n" 
+"F0BAFB0028F3D04FF0FF3021B0BDE8F08F2DE9FA470646\n" 
+"82B035690A466F2A08BF082705D041F02000782814BF0A\n" 
+"271027D6E900013C2480468946642A18BF692A05D10029\n" 
+"03DAD8F1000869EB4909B9F1000F08BFB8F1000F0CD130\n" 
+"6B50B9082F3BD196F83800000737D530203B2485F83B00\n" 
+"32E0CDE90089FB17404649463A46F0F74AFAB846A8FB00\n" 
+"23DDE90089A8EB02023032A4F1010AD2B254463A2A03DB\n" 
+"9DF80830513B9A180AF8052080465FEA010908BFB8F100\n" 
+"0F03D0F06861198842D8D3082F09D196F83800000705D5\n" 
+"605D302802D0641E30206055C4F13C00B0616119F16031\n" 
+"6B884207DA081A30624FF6EF71308F0840308710E00029\n" 
+"0ED596F8381001F01401102908D1716B7269891A326A89\n" 
+"1A081A0128A8BF306204B0BDE8F08700002DE9F24F0446\n" 
+"8EB0D4E90001CDE9020104AE9DF8380040F02000009061\n" 
+"280AD0206B002848BF062004D404BF0098672801D10120\n" 
+"20636168C1F30A5040F2FF7290421CD1080304BF206800\n" 
+"2809D10320A0619DF8380061381A2836D30FF2346108E0\n" 
+"0320A0619DF8380061381A2829D30FF21861E0680322F2\n" 
+"F778F9B5E1012816DA20460EF07CFB012811DB00270020\n" 
+"0099612920D1E168302201F8012B4A1CE2609DF8382061\n" 
+"2A0CBF782258220FE0626840F2FE3161F31E52471A6260\n" 
+"4FF0FF30E5E70FF2C051D4E70FF2C451D1E70A70616989\n" 
+"1C616110B9002500277BE10098612840F09680206B0028\n" 
+"4CBF2125451CDDE902012DB26E1CD4E90089002200230E\n" 
+"F05FFB3ABF89F00040CDE90280CDE902893F1F8DF81020\n" 
+"0DF1F19403A0808300110801E000F20708012E32DBDDE9\n" 
+"0201002200230EF060FB2BD21C2102A80EF073FBDDE902\n" 
+"010EF0F9FBF61F8146012E09DB01F0F7FA02460B46DDE9\n" 
+"02010EF019FCCDE9020108F20700072105E009F00F0200\n" 
+"F8012D4FEA2919B9F1010F01DB491EF4D5491E5CBF0022\n" 
+"00F8012DF9D5C8E70DF11100A8EB00010DF11106A942B8\n" 
+"BF0D462DB228002FD4884206DA04A9411849780829A8BF\n" 
+"0F2100DA002104AA821800E06D1E12F80139401E8B42F9\n" 
+"D00F2904D104A941184A78521C4A70002802D504AE6D1C\n" 
+"3F1D2DB2681E0DD481190A783032D2B23A2A03DB9DF838\n" 
+"303A3B9A1801F80129401EF2D5206B002840F1E580681E\n" 
+"2063E1E0DDE90201002200230EF0D2FA3CBF81F00041CD\n" 
+"E902013FB247F2975078434849DFF820B190FBF1F73FB2\n" 
+"C7F107069246012E19DBDDE90289F00707D552465B4640\n" 
+"46494601F08AFA8046894676105046594652465B4601F0\n" 
+"81FA82468B46002EEAD1CDE9028921E076429046DFF8D8\n" 
+"9012E0F00707D552465B464046494601F06DFA80468946\n" 
+"76105046594652465B4601F064FA82468B46002EEAD1DD\n" 
+"E9020142464B460EF02AFCCDE90201009866280CBF07F1\n" 
+"0A000620216B4518142DA8BF132530208DF810000DF111\n" 
+"06DFF87C90012D3DDBDDE902010EF03AFB06F108010422\n" 
+"0A23B0FBF3F303EB8306A0EB4600303001F8010D0A20B3\n" 
+"FBF0F000EB8006A3EB4603303301F8013D521EE9D1083D\n" 
+"01F10806012DDBDBDDE902010EF018FB01F00EFA02460B\n" 
+"46DDE902010EF026FB00224B4601F012FACDE90201CAE7\n" 
+"00BFA0860100000024400000F03F84D797410DF1110030\n" 
+"1A0DF1110602E0401E7F1E761C31783029F9D000996629\n" 
+"02D13FB2791C03E065290CBF01210021226B8D182DB2A8\n" 
+"42B8BF05462DB229001AD4814204DA885D3528A8BF3920\n" 
+"00DA30208A19521E00E06D1E12F80139491E8342F9D039\n" 
+"2802D1885D401C8855002902D5761E6D1C7F1C3FB29DF8\n" 
+"381000972BB23246204600F003F80FB0BDE8F08F2DE9F0\n" 
+"43054685B01E46D5F8308089461746012E02DA01260FF2\n" 
+"8C2749F02000BDF93040662808BF641C17D0672840F081\n" 
+"8014F1040FC0F28380444580F2808095F83800641C0007\n" 
+"02D44645B8BFB04624B2B8EB040848BF4FF00008E868A9\n" 
+"6924B2012C25DA30234A1C0B54B8F1010F03DA95F83810\n" 
+"090702D52E211154521CAA6118EB040FB8BFC8F1000424\n" 
+"B26142A0446962B045B8BF464636B2EE613246AB693946\n" 
+"1818F1F769FFA8EB0600A862C0E00818A64218DA324639\n" 
+"46F1940330848300F1F75EFFA9697118A961A01B6862B8\n" 
+"F1010F03DA95F83800000705D5E8682E220A54E869401C\n" 
+"E861C5F82880A4E022463946F1F745FFA8692018361BB8\n" 
+"F1010F03DA95F83810090703D5E9682E224254401C36B2\n" 
+"A861B045B8BF4646EB6836B23246E119C018F1F72BFFA8\n" 
+"693018A861A8EB060068627FE0B9F1610F16D14FF07009\n" 
+"18E0464504DA95F83810090758BFB046B8F1010848BF4F\n" 
+"F00008B9F1670F14BF4FF045094FF0650904E0B9F1410F\n" 
+"08BF4FF05009A969E86817F8013B0B544A1CB8F1010F05\n" 
+"DA95F83810090758BFAA6117D52E211154531CAB61B8F1\n" 
+"010F10DB761E36B2B045B8BF464636B2324639461818F1\n" 
+"F7E4FEA8693018A861A8EB06006862A869E96847182000\n" 
+"07F8019B03D42B2007F8010B03E02D2107F8011B644200\n" 
+"260DF1080808E00A2200A80EF0BCFB019808F8010B761C\n" 
+"009C21B20129F3DA022E06DA49F02000652804BF302007\n" 
+"F8010B4EB9302007F8010B07E0761E02A8305C303007F8\n" 
+"010B012EF7DAA869E9684018381AE86195F8380000F014\n" 
+"0010280DD16869A9690818696A0818E9690818A96A0818\n" 
+"696B8842BCBF081A286205B0BDE8F083F8B504460D4616\n" 
+"461F46002004E0E86A401CE8627F1E002047B116F8011B\n" 
+"A868A047A8600028F2D14FF0FF30F2BD686A6C747A4C00\n" 
+"006E616E004E414E00696E6600494E46003000EDF7F3BB\n" 
+"EDF7EABB000062F30F2262F31F42401810F0030308D0C9\n" 
+"1A1FD3DB0748BF00F8012D28BF20F8022D130030B41446\n" 
+"1546103928BF20E93C00FAD8490728BF20E90C0048BF40\n" 
+"F8042D890028BF20F8022D48BF00F8012D30BC7047C918\n" 
+"18BF00F8012DCB0728BF00F8012D70470000F0B5204C05\n" 
+"462078401C81B0207005B9A5681D4E77682FB179682846\n" 
+"88473F68002FF9D1316808001CBF2846884728460EF012\n" 
+"FBEFF79CF8A86810B12846EFF7F5F92846EFF7BBFA6078\n" 
+"08B9EFF78AF82069854204BFE0682061A068854207D1EF\n" 
+"F786F8A068002101602046EFF763F8607808B9EFF776F8\n" 
+"01B0BDE8F040EFF7B8B900001C278800D47589000CB480\n" 
+"B502AA0828A8BF072040F08000EFF72AFD01BC5DF80CFB\n" 
+"80B5EFF78BFD0120EFF763FDEFF7FDFC40F07F00EFF7F3\n" 
+"FCEFF7F4FC40F48030BDE80240EFF7E8BCECF715BBECF7\n" 
+"5DBB000070B5114D04462878401C2870EFF744F8A86841\n" 
+"69214205D18461082101742846EFF71DF8EFF738F8A868\n" 
+"416904EA0106A14341612878401E2870687808B9EFF725\n" 
+"F8304670BD00BF1C27880010B50024F7F78CFD002800D0\n" 
+"F19403C08783000124204610BD10B5040010000A000100\n" 
+"2000FFF729FF200010BD0000506002604160086070470A\n" 
+"68F8E748600160704701684068F9E7F8B50600DFF80C59\n" 
+"02D505F15C00F2BD05F15C040020696F00E0096805F174\n" 
+"02914204D00C46A2689642F6D10120002832D1E86FD0F8\n" 
+"80701820FCF7B4F80446A660002F05D0B74203D2B6FBF7\n" 
+"F0784300E03046E060002F02D0B74200D23E4626610020\n" 
+"2075DFF8AC683078401C3070EEF7CBFF7078401C707005\n" 
+"F174012046FFF7B6FF7078401E7070C0B2002801D1EEF7\n" 
+"B5FFEFF7FAF82046F2BD38B5044694F9140000281BD1DF\n" 
+"F86C582878401C2870EEF7AAFF6878401C68702046FFF7\n" 
+"9CFF2046FCF787F86878401E6870C0B2002801D1EEF793\n" 
+"FFBDE83140EFF7D6B831BDF8B5044608466FF00045FFF7\n" 
+"88FF064694F9050094F90410814214D1C01C8000FCF750\n" 
+"F8074694F90500012807DB820021683846FCF770F82068\n" 
+"FCF75BF827606079C01C607194F90400411C2171216841\n" 
+"F82060DFF8E007864202D0307D401C3075002008E02168\n" 
+"51F820108A68954201DB1546A160401C94F904108842F2\n" 
+"DBF1BDF8B504466FF00046DFF8A42702F15C0502F15C00\n" 
+"4FF0FF33002704E0664501DB664675467F1C94F904C067\n" 
+"450DDAD4F800C05CF827E0DEF808C0002BEED58C45ECD1\n" 
+"70463B465BB2ECE7002B11D4BCF1010F0EDB06E0216801\n" 
+"EB8306766841F823605B1C94F904104E1EB342F3DB491E\n" 
+"217102F15C01884204D0017D491E0175FFF75AFFA560F1\n" 
+"BD10B4C26A836B406C9C68002C02D56FF0004300E01B69\n" 
+"8468002C02D56FF0004000E00069984200DD1846D26851\n" 
+"43884201DB012000E0002010BC704738B5DFF8E416CA6F\n" 
+"D36E012490F90850AC402343D36601F6D811FFF7D5FE01\n" 
+"2032BD10B5DFF8C416C96FCA6E012390F90840A3409A43\n" 
+"CA66FFF7CBFE012010BD01207047F8B5044615461E4604\n" 
+"F12400FFF733FF06EB460004EB8007294607F13000FFF7\n" 
+"2AFF97F9340000903346627A94F908100FF28060F7F78F\n" 
+"FCF1BDF8B5044615461E4604F12400FFF757FF06EB4600\n" 
+"04EB8007294607F13000FFF74EFF97F934000090334662\n" 
+"7A94F908100FF25460F7F772FCF1BDC16A8A68012A09DB\n" 
+"0969012906DA006D002801D50020704702207047002070\n" 
+"4701EB410200EB8201896B8A68012A09DB0969012906DA\n" 
+"006D002801D5002070470220704700207047002900D5D8\n" 
+"E7E7E7012900DA012113460A4697E7012900DA01211346\n" 
+"0A46AEE7DFF8C805C06A417A481E8041C00F70471346F1\n" 
+"9403508B83004FF0FF32114684E713464FF0FF3211469C\n" 
+"E780B5DFF8A0050068417A002902D1006E406880470120\n" 
+"02BD80B5FFF760FFDFF884050068417A002902D1006E80\n" 
+"688047012002BDB1F57A7F01DC4FF47A7113460A464FF4\n" 
+"FA715BE7B1F57A7F01DC4FF47A7113460A464FF4FA716E\n" 
+"E710B50446002922D5E06A816801291CDB0069012819DA\n" 
+"02212046FFF703FF002813D194F9540010F1010F04D100\n" 
+"2084F85400012010BD002807D1012060774FF0FF3084F8\n" 
+"5400022010BD002010BDBDE8104071E74FF0FF3280F854\n" 
+"2000E7DFF8E824D26FD2F88020A03252420265F7E60029\n" 
+"0AD5C06A8168012904DB0069012801DA02207047002070\n" 
+"4755E7B52900DAB42113460A463C2104E7B52900DAB421\n" 
+"13460A463C211AE710B50446002927D5E06A8168012921\n" 
+"DB006901281EDA03212046FFF7AFFE002818D194F95400\n" 
+"014611F1010F04D1002084F85400012010BD002803D101\n" 
+"2084F8540010BD012905D14FF0FF3084F85400022010BD\n" 
+"002010BDBDE8104018E74FF0FF3280F85420DFF83824D2\n" 
+"6FD2F88020B432524202659FE61CB50020ADF804000446\n" 
+"0120009001ABD022EE210520F7F7EBFB002802D09DF804\n" 
+"400BE00120009001AB0F22BA210520F7F7DEFB002801D0\n" 
+"9DF80440204616BDDFF8E823D26FD2F880204632524202\n" 
+"6576E613464FF0FF32114693E613464FF0FF321146ABE6\n" 
+"80B5FFF76AFEF7F7C0FA00210175012002BD80B5FFF772\n" 
+"FEF7F7B7FA00210175012002BD2DE9F0410C46E64D55F8\n" 
+"2060307206F154070FF2D8313961162800F24681DFE810\n" 
+"F017002B003C0064005000780089009900C800A800B800\n" 
+"D800E800F600030110011E012B01380138013801380138\n" 
+"01E86F052180F8841006F10800062141760A21817605F6\n" 
+"E011416040F2DC5181600FF29430386118E1E86F843005\n" 
+"21417006F10800062141760A21817605F6BC7141604FF4\n" 
+"9671816007E1E86F84300321817006F108000C21417610\n" 
+"21817605F58051FC314160102181600FF2A0303861F3E0\n" 
+"E86F84300321017106F10800072141760B21817605F580\n" 
+"51F03141600B2181600FF278303861DFE0E86F84300321\n" 
+"C17006F10800062141760A21817605F588510C3141600A\n" 
+"2181600FF250303861CBE006F10800062141760A218176\n" 
+"05F58851183141604FF4FA7181600FF248303861BAE006\n" 
+"F10800142141761821817605F598510C31416018218160\n" 
+"0FF298303861AAE006F10800022141760621817605F59A\n" 
+"514160062181600FF2443038619BE006F108000A21F194\n" 
+"03E08E830041760E21817605F59851303141600E218160\n" 
+"0FF2083038618BE006F10800012141760521817605F598\n" 
+"5148314160052181600FF2203038617BE006F108000521\n" 
+"41760921817605F5985124314160092181600FF2742038\n" 
+"616BE006F10800062141760A21817605F5985150314160\n" 
+"0A2181600FF2382038615BE006F1080001214176052181\n" 
+"7605F598515C31416040F2866181604DE006F108000121\n" 
+"41760521817605F5C851EC3141600521816040E006F108\n" 
+"000C2141761021817605F5C851F43141601021816033E0\n" 
+"06F10800112141761521817605F5D051091D416040F2BE\n" 
+"51816025E006F10800112141761521817605F5F851C431\n" 
+"41601521816018E006F10800042141760821817605F5C8\n" 
+"51E4314160082181600BE006F108000121417605218176\n" 
+"05F58051E83141600521816006F1080000210175417581\n" 
+"750176C1600161417006F128080846C8F828004FF0FF30\n" 
+"86F854007880062206F15800FFF7C1FB002010E000EB40\n" 
+"0106EB8101002281F8342034314A7005F15C024A6006EB\n" 
+"800100228A64401C0228ECDB002086F8280088F8010005\n" 
+"F15C00C8F80400FC60BDE8F08110B51F4CF9F7D1F8E067\n" 
+"002006E0682111FB0041803144F82010401C1728F6DB4F\n" 
+"F0FF306066A0660020E06607F0A3FB0EF00AF80FF07BF9\n" 
+"0AF013FBFFF70CFE552802D10FF0CCFD0AE0FFF705FEBD\n" 
+"2802D10FF084FF03E00FF25400F7F769F90AF008FE0BF0\n" 
+"9DF800F054FF0FF0F2FF10F001F80FF0E9FFBDE8104010\n" 
+"F000B80000EC0388001C27880048048800414420256420\n" 
+"25642025642025640000524D2025642025642025642025\n" 
+"6400004261726F6D657465722064726976657220696E69\n" 
+"74206572726F722E000000005F8A83001F8A83005F8A83\n" 
+"00418A8300278B8300338B83001F8B83003F8B83001F8A\n" 
+"83003F8B8300418A8300278B8300338B83001F8B830063\n" 
+"8B83001F8A83005F8A83007B8B83004F8B8300598B8300\n" 
+"1F8B83005F8A8300138C83005F8A8300418A8300978B83\n" 
+"00AB8B8300BF8B83005F8A83001D8C83005F8A8300418A\n" 
+"8300278B8300338B83002F8C83005F8A8300C58C83005F\n" 
+"8A8300418A83004B8C8300598C8300678C83005F8A8300\n" 
+"1F8D83005F8A8300418A8300278B8300338B83001F8B83\n" 
+"005F8A8300458D83005F8A8300578D8300318D83003B8D\n" 
+"83001F8B83005F8A83001F8A83005F8A8300418A830027\n" 
+"8B8300338B83001F8B83005F8A83001F8A83005F8A8300\n" 
+"418A8300318D83003B8D83001F8B830073487047F19403\n" 
+"70928300F8B50C461646012500282BD106EB46006E4901\n" 
+"EB00177869E040C00708D523467A6931460FF22C30F7F7\n" 
+"8EF80220F2BD4FF0FF30009003462A4679682046F7F7F1\n" 
+"FD00280CD023467A6931460FF21430F7F77AF878692946\n" 
+"A140084378612CE00220F2BD012828D106EB4600574901\n" 
+"EB00177869E040C00708D423467A6931460FF2F020F7F7\n" 
+"60F8032516E04FF0FF332A4679682046F7F765FE002807\n" 
+"D023467A6931460FF2DC20F7F74EF800E0032578690121\n" 
+"A140884378612846F2BDF8F7DCBD02B598B00021ADF858\n" 
+"108DF801100DF101010A224A7000228A70CA7005218DF8\n" 
+"00108DF80100042218A90DF10300FBF746FB0020ADF858\n" 
+"0000A800F068F819B000BD04F094B938B5447885780078\n" 
+"032822D01A2802D02C282AD031BD012C0CD1012001F0B8\n" 
+"FE012322461A210FF2642001B0BDE83040F7F706B8022C\n" 
+"21D1022001F0A9FE022322461A210FF2582001B0BDE830\n" 
+"40F6F7F7BF012C12D1284604F083F929460FF25420BDE8\n" 
+"3440F6F7EBBF012C06D129460FF24C20BDE83440F6F7E2\n" 
+"BF31BD0FB480B5002805D10846002802D11046002804D0\n" 
+"07F0BEFDC046C04601E007F0A2FD01BC5DF814FB00222F\n" 
+"2809D200EB4003044800EB03104069C840C00700D50122\n" 
+"104670477878880030B595B00446012594F90000062800\n" 
+"F2A480DFE800F0042648647A9A9E00E11C82B068465522\n" 
+"F0F743FF0CBC94F9021094F90100F8F70EF9022809D160\n" 
+"78F8F727FB002561780FF2B810F6F795FF8AE0032840F0\n" 
+"888061780FF2AC10F6F78CFF81E060781A280BD1E01CF8\n" 
+"F710FEA37AD4F8062061790FF29810F6F77DFF04E02C28\n" 
+"02D1E01CF8F702FE94F9021094F90100F8F701FA032865\n" 
+"D161780FF28810F6F76AFF5FE0B4F8581000A8F8F70AFB\n" 
+"9DF9040002280AD1009800B2F8F7E8FA002500990FF268\n" 
+"10F6F756FF4BE0032849D100990FF26010F6F74EFF43E0\n" 
+"0FF0E5FE022809D16078F8F7D2FA002561780FF24C10F6\n" 
+"F740FF35E0032833D161780FF24410F6F738FF2DE06078\n" 
+"05280CD128460FF0B2FF02280DD0032823D161780FF234\n" 
+"10F6F728FF1DE002281BD110F0A9F80228F1D16078F8F7\n" 
+"AAFA002561780FF20C10F6F718FF0DE02046F8F71FFB09\n" 
+"E02046F8F716FD05E061780FF20010F6F70AFF00252846\n" 
+"15B030BD012070470FB4022004B0704701207047002070\n" 
+"4770470000534D4143202564202564202564000000534D\n" 
+"4120256420256420256400000000534D52432025642025\n" 
+"64202564000000534D52202564202564202564F1940300\n" 
+"968300000000004154205249204E6F72202D2564202564\n" 
+"20256400415420524920426174202D2564202564202564\n" 
+"0050442055542D256400000000534C4D2025640000414C\n" 
+"4F4620256400414C4346202564004F4A4820454C203078\n" 
+"257820307825782030782578000000524C434620256400\n" 
+"504C4F4620256400504C43462025640050414F46202564\n" 
+"00504143462025640050504F4620256400505043462025\n" 
+"64004558204C4D454C20256400007047032807D1012902\n" 
+"D11420F0F7E6BB1420F0F7EDBB7047010040F10980F446\n" 
+"404200F005F851F000416047010000BF09D0B0FA80F188\n" 
+"40C91CC1F58461090501EBD02140057047B0B581EA030C\n" 
+"0CF0004C40F2FF7515EA11541DBF15EA1357AC42AF4239\n" 
+"E0E41923EA455343F48013C90241F0004141EA505EC702\n" 
+"1100A7FB020200284FF00000EEFB01204FF00001E3FB07\n" 
+"2118BF42F00102401800214941E3FB0E01A4F580640F03\n" 
+"02D252004041494154F101046CDD470872F1004250F100\n" 
+"0051EB0451A1F580115CBF41EA0C01B0BD4CEA05510020\n" 
+"B0BD05EA1357AC4214BFAF4241E050EA410E1CBF52EA43\n" 
+"0E02E061460020B0BD24423C441BD15FEA070EF6D00903\n" 
+"02BF01460020AEF1140EB1FA81F7AEEB070401FA07FE0C\n" 
+"37C7F1200100FA07F7C8404EEA000E23EA455343F48013\n" 
+"A2E733F00043B3FA83F704BFB2FA82FE77440B3FE41BB7\n" 
+"F1200E2FBF02FA0EF3BB40C7F1200E22FA0EFE38BF43EA\n" 
+"0E03BA40641C82E750EA410E14BF52EA430E6FF000014F\n" 
+"F4001717EB430F8ABF194617EB410FB5E74CEA05510020\n" 
+"B0BDD4F10104B4F120070FDAC4F12007520828BF42F001\n" 
+"0210FA07F501FA07F7E1BF2A43E0403843E1400FE0352C\n" 
+"98DCC7F1200452EA400220FA07F218BF42F0010231FA07\n" 
+"F0A1400A43002172F1004250F1000051EB0C01B0BD0000\n" 
+"5FF0FF0C1CEAD05114BF614506E0C110400721F0E04101\n" 
+"F16051704779B900F0004100020AD0B0FA80FC00FA0CF0\n" 
+"01F16051A1EB0C5101EBD0214005704741020CBF40F4E0\n" 
+"016FF000010020704700004FEAF17CBCF1E04C2CBFBCF5\n" 
+"001F11E05FEA4C0C34BFBCF17F5F2EE05FEA9C0C4FEA0C\n" 
+"1C4FEA3C0CC10071F100414CEB50707047C90241EA5051\n" 
+"C00218BF41F0010141F000414FEA6C50C0F10900212810\n" 
+"D240EACC7CCCF1200C11FA0CF070F10040CCF1200C21FA\n" 
+"0CF00CF0004C40EB0C0070474FEACC707047490011F500\n" 
+"1F04D84FEACC10FF30C0057047C817704710B50024F6F7\n" 
+"A7FC007CC00700D50124204610BD00B597B0F194039099\n" 
+"830000A85C21F0F7ECFB0020ADF858000DF101000A2141\n" 
+"7000218170C17008468DF800001F208DF8010000A8FFF7\n" 
+"41FD012017B000BD00B597B000A85C21F0F7D0FB0020AD\n" 
+"F858000DF101000A21417000218170C17001208DF80000\n" 
+"1F208DF8010000A8FFF725FD012017B000BD00B597B000\n" 
+"A85C21F0F7B4FB0020ADF858000DF101000A2141700021\n" 
+"8170C17001208DF800001F208DF8010000A8FFF709FD01\n" 
+"2017B000BD0120704710B50024F6F747FC007CC00700D5\n" 
+"0124204610BD00B597B000A85C21F0F78CFB0020ADF858\n" 
+"000DF101000A21417000218170C17008468DF800002020\n" 
+"8DF8010000A8FFF7E1FC012017B000BD00B597B000A85C\n" 
+"21F0F770FB0020ADF858000DF101000A21417000218170\n" 
+"C17001208DF8000020208DF8010000A8FFF7C5FC012017\n" 
+"B000BD00B597B000A85C21F0F754FB0020ADF858000DF1\n" 
+"01000A21417000218170C17001208DF8000020208DF801\n" 
+"0000A8FFF7A9FC012017B000BD0120704710B50024F6F7\n" 
+"E7FB007C800700D50124204610BD00B597B000A85C21F0\n" 
+"F72CFB0020ADF858000DF101000A21417000218170C170\n" 
+"08468DF8000021208DF8010000A8FFF781FC012017B000\n" 
+"BD00B597B000A85C21F0F710FB0020ADF858000DF10100\n" 
+"0A21417000218170C17001208DF8000021208DF8010000\n" 
+"A8FFF765FC012017B000BD00B597B000A85C21F0F7F4FA\n" 
+"0020ADF858000DF101000A21417000218170C17001208D\n" 
+"F8000021208DF8010000A8FFF749FC012017B000BD0120\n" 
+"704710B50024F6F787FB007C00F00300032800D1012420\n" 
+"4610BD00B597B000A85C21F0F7CAFADFF83C03017841F0\n" 
+"020101700020ADF858000DF101000A22427001228270C1\n" 
+"7000208DF8000022208DF8010000A8FFF719FC012017B0\n" 
+"00BD00B597B000A85C21F0F7A8FADFF8F812087810F0FD\n" 
+"00087014D10020ADF858000DF101000A21417001218170\n" 
+"0021C17001208DF8000022208DF8010000A8FFF7F5FB02\n" 
+"E040B20FF07DFF012017B000BD012070470120704710B5\n" 
+"0024F6F72DFB007C00F00700072800D10124204610BD00\n" 
+"B597B000A85C21F0F770FAA249087840F0010008700328\n" 
+"05D140B20FF05AFF0FF070FF12E00021ADF858100DF101\n" 
+"010A224A7000228A70C87010468DF8000022208DF80100\n" 
+"00A8FFF7B8FB012017B000BD00B597B000A85C21F0F747\n" 
+"FA8E49087810F0FE00087013D10020ADF858000DF10100\n" 
+"0A21417000218170C17001208DF8000022208DF8010000\n" 
+"A8FFF796FB04E040B20FF01EFF0FF039FFF19403209D83\n" 
+"00012017B000BD012070470120704710B50024F6F7CCFA\n" 
+"007CC00700D50124204610BD00B597B000A85C21F0F711\n" 
+"FA0020ADF858000DF101000A21417000218170C1700846\n" 
+"8DF8000023208DF8010000A8FFF766FB012017B000BD00\n" 
+"B597B000A85C21F0F7F5F90020ADF858000DF101000A21\n" 
+"417000218170C17001208DF8000023208DF8010000A8FF\n" 
+"F74AFB012017B000BD00B597B000A85C21F0F7D9F90020\n" 
+"ADF858000DF101000A21417000218170C17001208DF800\n" 
+"0023208DF8010000A8FFF72EFB012017B000BD01207047\n" 
+"000070B598B004460E46FFF738FA054600200090042221\n" 
+"4600A8FAF7F2FD01A85C21F0F7AEF9009A31460FF2C010\n" 
+"F6F7CCFA30460C3809284DD8DFE800F0051118253C0C4C\n" 
+"4C4C471420C5F8D4052070012018B070BD1420C5F89406\n" 
+"2070F7E705F2D4503C21016308462070F0E705F2D45021\n" 
+"783C2904D13C21217021780166E6E700990166E3E72948\n" 
+"0078C10712D50021ADF85C100DF105010A224A7000228A\n" 
+"70C87001208DF8040022208DF8050001A8FFF7CEFA0099\n" 
+"304640B200F011F8009020600098C5F86406C1E71420C5\n" 
+"F894032070BCE70FF22410F6F776FA0020B7E710B4134A\n" 
+"D36B126C104C2478002C1AD00F2802D010280BD015E050\n" 
+"7A002812D0906B806800280ED488420DDD08460BE0587A\n" 
+"002807D0986B8068002803D4884202DD084600E0084610\n" 
+"BC70475E888900EC03880012B597B001460C3909292ED8\n" 
+"DFE801F005212325251F2D2D2D2B1F240020ADF858008D\n" 
+"F801000A208DF8020005208DF800008DF80140042217A9\n" 
+"0DF10300FAF745FD00A8FFF76AFA012018B010BD2324E4\n" 
+"E72024E2E72124E0E722241799FFF7A5FF1790DAE71324\n" 
+"D8E70FF26400F6F711FA0020E9E780B50FF25C010C20FE\n" 
+"F7E1FE0FF278011120FEF7DCFE0FF290010D20FEF7D7FE\n" 
+"0FF2AC010E20FEF7D2FE0FF2C4010F20FEF7CDFE0FF2E0\n" 
+"011020BDE80440FEF7C6BE4D52322044523D25642C2564\n" 
+"000000004D523220534446004D52322052434600799983\n" 
+"008D998300C5998300FD99830000000000359A8300F19D\n" 
+"830000000000000000002F9D8300439D83007B9D8300B3\n" 
+"9D830000000000EB9D8300F19D83000000000000000000\n" 
+"399A83004D9A8300859A8300BD9A830000000000F59A83\n" 
+"00F19D83000000000000000000F99A83000D9B8300459B\n" 
+"83007D9B830000000000B59B8300F19D83000000000000\n" 
+"000000B99B8300D19B8300159C8300659C830000000000\n" 
+"699C8300F19D83000000000000000000F19403B0A08300\n" 
+"6D9C8300859C8300D79C8300279D8300000000002B9D83\n" 
+"00F19D8300000000000000000000BF10B4414800210180\n" 
+"0846404C0DE001EB810100EB80031B19C91800230B7152\n" 
+"1C52B211460129F2DB401C142801DA0022F6E710BC7047\n" 
+"00EB80003449405E704700EB800032494018B0F9020070\n" 
+"4710B54FF0FF3401460C2903D01C2903D1002405E00124\n" 
+"03E00FF2AC00F6F73AF9204610BD38B504460125FFF7E9\n" 
+"FF20460C2804D01C2805D100F038F808E0FFF7B8FF05E0\n" 
+"21460FF29000F6F723F90025284632BD80B501460FF28C\n" 
+"00F6F71AF94FF0FF3002BDF3B581B0144C25882E46701C\n" 
+"152801DB0020FEBD00270DE007EB870106EB86000E4A80\n" 
+"18081801AA89180522F0F79BF87F1C7FB2012FEFDB681C\n" 
+"20800120FEBD0548008870470548002141800121017008\n" 
+"467047000044888900E4BF880098038800455820504452\n" 
+"4D4D20433120256400004558205044524D4D2043332025\n" 
+"6400004558205044524D4D204332202564000010B5DFF8\n" 
+"B04C40F2A52200212046FEF7CCFAFF202070E07284F862\n" 
+"02DFF8D80C0021417010BDF8B501240B2825D10B46012B\n" 
+"0ED1DFF87C3CD31893F954522E46DFF8747CD75DBE4210\n" 
+"DA6D1C83F8545231E0022B2FD1DFF85C3CD31893F95452\n" 
+"012D03DB6D1E83F8545224E0DFF8443CD318002483F854\n" 
+"421DE00A281BD10B46012B08D1DFF82C3CD31803F51573\n" 
+"5D796D1C5D710FE0022B0DD1DFF8183CD31803F5157393\n" 
+"F90550012D02DB6D1E5D7101E000245C71002C05D11346\n" 
+"02460FF20C00F6F76BF82046F2BD000041542D25643A25\n" 
+"6420256400DFF8D81B81F85E0270470FB42DE9F043ADB0\n" 
+"0124DFF8085CE868DFF8C06B90F8E014002958D190F8E1\n" 
+"04002854D10FF23820F6F747F8B4208DF8020046208DF8\n" 
+"030020468DF8040000208DF8580003208DF859000DF15B\n" 
+"0000A95522EFF7CEFF0A208DF85A0016A8FFF770F80028\n" 
+"01D10220F4E000A8F6F7CAFA9DF80000B0779DF90100F0\n" 
+"779DF9021086F82010BDF90320A6F821209DF900304FF4\n" 
+"6167C0EB001C4FEA8C0017FB030040FA81F04FF47A7101\n" 
+"FB0020C6F80200C6F80D000020A861E8702870A8706870\n" 
+"28712422014606F52A70FEF7FDF99DF8D270B846A146B8\n" 
+"F1010F1DD1DDF8D300402805D0D6F817100843C6F81700\n" 
+"0BE0204607E0D6F8171009FA00F21143C6F81710401C06\n" 
+"28F5DBF07E9DF9D71009FA01F10843F07651E008EB0600\n" 
+"90F9541200294BD190F95902002847D1B8F1020F2DD100\n" 
+"A8F6F766FA9DF900004FF461619DF9F1940340A4830001\n" 
+"20C2EB02139A0011FB00209DF9021040FA81F04FF47A71\n" 
+"BDF9032001FB0020C6F89802C6F8940206F12B0006F11E\n" 
+"010522EFF73DFF4FF49660B083DFF8D00CC6F88C020020\n" 
+"6861286116E0B8F1030F13D1DDF8D300C6F82300BDF8D8\n" 
+"004FF47A714843C6F827000020C6F8A00286F86C0286F8\n" 
+"6D0286F8A40209FA07F0B17D0143B1753178002910D0B8\n" 
+"F1010F08D109FA01F1DDF8D320914202D1002186F86112\n" 
+"96F86912084386F869023A46214696F85E02FFF7A5FE00\n" 
+"2800D10224E86896F95C120A9196F95B12099196F95A12\n" 
+"089196F95912079196F95712069196F95612059196F955\n" 
+"12049196F95412039190F8E114029190F8E0040190B08B\n" 
+"0090F37ED6F81720B17D0FF22000F5F734FF20462DB0BD\n" 
+"E8F0035DF814FB41542D52455631343132313200000000\n" 
+"41542D414C2025642025642025642025642C4154202564\n" 
+"2025642025642564256425642025642564256425640000\n" 
+"0000F0B5A3B0F7F79CFD06460124002E00F08180DFF820\n" 
+"5905F51577B2780221B87AFFF741FE002800D10324B078\n" 
+"01282AD1D6F8030005F21702402810D0D5F817108143C5\n" 
+"F817101079012396F90770BB40984310710FF25410F5F7\n" 
+"E0FE03E00020C5F817001071D5F81700002827D1A87D01\n" 
+"2196F9022091408843A8750FF23810F5F7CCFE1BE04019\n" 
+"90F95402002816D1B078401990F95902002810D1B07803\n" 
+"2806D10020C5F82300C5F82700F8643883A87D012196F9\n" 
+"022091408843A875A87D002814D10FF2FC00F5F7A8FEFF\n" 
+"F7D8FD01208DF82C0003208DF82D000A208DF82E000BA8\n" 
+"FEF7DEFE00282AD126E0DFF88808C06890F89010002922\n" 
+"D1002180F8E01480F8E114FFF7BBFD0FF2C800F5F785FE\n" 
+"16E00FF2D000F5F780FEFFF7B0FD20468DF82C0003208D\n" 
+"F82D000A208DF82E000BA8FEF7B6FE002801D1032032E0\n" 
+"0324DFF83408C068DFF8E85705F5157797F908100A9197\n" 
+"F90710099197F90610089197F90510079197F903100691\n" 
+"97F90210059197F90110049195F95412039190F8E11402\n" 
+"9190F8E0040190A88B009005F117000379D5F81720A97D\n" 
+"0FF25400F5F73CFE204623B0F0BD000041542D524D2025\n" 
+"640000000041542D524D2D494E5400000041542D414C4C\n" 
+"52454D4F56454400000041542D464F5243454452454D4F\n" 
+"5645440000000041542D524C204E756C6C000041542D52\n" 
+"4C2025642025642025642025642C415420256420256420\n" 
+"2564256425642564202564256425642564000000002DE9\n" 
+"F04F8BB04FF0000800A8F6F799F8F19403D0A7830004A8\n" 
+"0FF020FC4746384603900590DFF8F0469DF80000A0719D\n" 
+"F80100E0719DF802002072BDF80300A4F80900A0794FF4\n" 
+"6161E279C2EB02139A0011FB0020217A40184FF47A71B4\n" 
+"F8092001FB0020C4F80200BDF8100002900190BDF81290\n" 
+"00F06DFDD4F80D10D4F8020000F0ECFB0600DFF8D05601\n" 
+"D0C92E0AD3E868D0F8942031460FF2A440F5F7AFFDE868\n" 
+"D0F89460A07D400719D528693018286147F23051884212\n" 
+"D36969411869610FF28C40D4F88C228A4204D3F5F797FD\n" 
+"3846286104E0F5F792FD38466861286194F80BA0029882\n" 
+"4500F0928084F80190029820703846C4F89002A07D4007\n" 
+"7AD5D4F89412D4F8020000F0A8FB8346D4F89C0244F620\n" 
+"67BB4513D25844C4F89C0204EB8A00D0F874125944C0F8\n" 
+"7412E07A0019217B90F86E228A4212D280F86E120FE083\n" 
+"444046C4F89C021822014604F51D70FDF75BFF06224146\n" 
+"04F26E20FDF755FFD4F89C22BA4202D22879012834D140\n" 
+"46D4F87812D4F87432994200D3012002210BE004EB8303\n" 
+"D3F8743204EB8707D7F87472BB4200D20846491C0346C9\n" 
+"B20F46062FEEDB8DF82000181990F86E028DF8210008A9\n" 
+"08A800F0EFFB1822414604F51D70FDF722FF0622414604\n" 
+"F26E20FDF71CFF4046C4F89C0294F85F02002809D05A46\n" 
+"04F10B0104F10B0000F0D5FB404684F85F02D4F80200C4\n" 
+"F89402404684F8610284F8669201273846039029E0D4F8\n" 
+"90023018C4F8900294F866125FFA89F9494506D084F801\n" 
+"9084F86692012739460391217B6278914213D121788A45\n" 
+"10D144F62067B8420BD3A07D400706D594F85F02002802\n" 
+"D1012084F85F02C4F89072474694F8691200290AD0002F\n" 
+"08D10127C80701D5384603900FF2DC20F5F7BEFCA07D40\n" 
+"0712D5D4F80290D4F89812484600F0E3FAD4F88C128842\n" 
+"02D22879002804D0012738460590C4F89892002F00F0D9\n" 
+"80474611E00FF2AC20F5F79FFC404684F86502A4F86A02\n" 
+"04F12B00A11D0522EFF730FC404628717F1C032F80F2C2\n" 
+"80A07D3841C007F7D594F8690240FA07F1C90701D40028\n" 
+"EFD1002F03D0022F21D00CD3E9E7A868407A0028E5D103\n" 
+"980028E2D04146012000F021FADDE7D4F817000299C840\n" 
+"C007D7D560780028D4D094F861020028D0D1012084F861\n" 
+"02014600F00DFAC9E70598002802D128790028C3D0D4F8\n" 
+"0290D4F89412484600F07EFAD4F89C1201EB000B44F620\n" 
+"60834502D22879002806D05A4604F10B01204600F00CFB\n" 
+"09E0A9EB0B0106A800F079FAA01D06A90522EFF7CFFBB4\n" 
+"F86A020938FEF7B4FDDFF8702CF1940360AB8300DFF870\n" 
+"3CFEF7C6FD0BF0A8FE81461FFA89F994F86522914506D0\n" 
+"49460FF6BC40F5F71AFC84F8659294F8651284F8381001\n" 
+"2084F86002C2460FF6B040F5F70CFC4FF009091BE00AF1\n" 
+"010A09EB040000F130018A78CB781B0203EB02420B79D2\n" 
+"1800924B7890F830205FFA8AFA51460FF68840F5F7F1FB\n" 
+"09F105091FFA89F9B4F86A2210468145DEDBE96891F8E1\n" 
+"1400293FF443AF94F956120129FFF63EAF94F865120029\n" 
+"3FF435AF002A3FF432AF04F130010120F8F748FF404628\n" 
+"6168612CE7A07D00075AD5D4F82300410001990BD50129\n" 
+"04D180070CD54FF0010809E04FF001081E20019004E0C8\n" 
+"40C00701D54FF00108B8F1010F3AD194F86C02002894F8\n" 
+"6D02019929D1884223D0084694F8A412884205D0C4F8A0\n" 
+"62019884F8A40204E0D4F8A0023018C4F8A002D4F8A002\n" 
+"D4F82710884222D30321012000F03DF90020C4F8A00201\n" 
+"2084F86C02019884F86D0214E00020C4F8A00210E08842\n" 
+"0ED0002084F8A40284F86C02C4F8A00206E0002084F86D\n" 
+"0284F8A402C4F8A00204F10B0021460B22EFF704FB0020\n" 
+"84F8690201200BB0BDE8F08F000041542D43757253543A\n" 
+"2564202564000041542D437572543A2564000041542D43\n" 
+"4845434B2025640041542D4558202564202564002DE9FE\n" 
+"4306460F4691464FF0000801A841460A4606C0DFF89C4A\n" 
+"04F5187594F86002002807D0084684F8600268810FF614\n" 
+"30F5F72BFB6889002827D104F22B0094F82B104FF46162\n" 
+"4378C3EB031C4FEA8C0312FB0131807808184FF47A71E2\n" 
+"8D01FB002004F22E0101228A70CA701A220A7104224A71\n" 
+"020E8A71020CCA71020A0A7248726879887209206881B9\n" 
+"F1000F03D0B9F1020F2ED051D230788DF804000DF10409\n" 
+"707889F80100380C89F80200380A8DF8070089F8047005\n" 
+"2201A9688900193030F9F7FEFD6889411D69813078A870\n" 
+"7078E8706879401C68714FF00108009799F801309DF804\n" 
+"2089B20FF66820F5F7CCFA23E06889001900F22D0190F8\n" 
+"2D204B781B0203EB0242897851187A18110C80F82D1068\n" 
+"890019110A80F82E106889001980F82F20698908190092\n" 
+"90F82C3090F82B200FF63820F5F7A7FAD4F80200686300\n" 
+"20E8634046BDE8FE83DFF8640990F86012002904D00021\n" 
+"80F86012012070470020704710B51F4CFEF7E8F9E060F5\n" 
+"F716FAA060E068DFF83C19C0F8F81400F2F840DFF83419\n" 
+"4160DFF8301981600FF21901C1600FF28D010161012010\n" 
+"BD00007C748800C002880000200E49C96891F8E1140029\n" 
+"15D00146DFF8F43800E0491CF19403F0AE8300C9B20A46\n" 
+"052A05DAD21892F95422012AF5DB0120002801D1002070\n" 
+"47184690F96702704758748800DFF8C42802F51573D874\n" 
+"002813D00846042805DA801890F9540201280DDB03E092\n" 
+"F95402012808DB187C012202FA01F10843187470470020\n" 
+"187470477CB5002340F249120C7812FB0404012525700C\n" 
+"7812FB04041A25A570DFF86C4894F864520B26354214D0\n" 
+"0B7812FB030301255D7094F86432DD0603D503F0EF0384\n" 
+"F864320B7812FB030394F86452DD70012313E0ED0611D5\n" 
+"0B7812FB030303255D700B7812FB030301259D720B7812\n" 
+"FB0303DD70002384F868322B46002B12D00B7812FB0303\n" 
+"D4F802505D600B7812FB030325781D720B7812FB030062\n" 
+"7842720878401C087000210846FFF78BFF94F868020128\n" 
+"04D104210120BDE87C4081E773BD10B40022884201D342\n" 
+"1A08E00B1ADFF8CC47A34203D3DFF8C8271018421A1046\n" 
+"10BC70472DE9F0412DED028B82B007460E463046FEF745\n" 
+"FB41EC180B53EC182BDFF8A407DFF8A417FEF749FB0BF0\n" 
+"2BFC8DF800004FF4616853EC182BDFF89007DFF89017FE\n" 
+"F73BFB04460D469DF8000018FB00F0FEF71BFB02460B46\n" 
+"204629460BF03DFC41EC180B53EC182B4FF01130DFF864\n" 
+"17FEF723FB0BF005FC04468DF801403C25E4B215FB04F0\n" 
+"FEF700FB02460B4651EC180B0BF022FC0BF0F4FB8DF802\n" 
+"009DF8001011FB08F114FB051151FA80F04FF47A7101FB\n" 
+"1060ADF80300384600A90522EFF7F9F802B0BDEC028BBD\n" 
+"E8F081DFF8D41681F86802887D0522104215D091F86802\n" 
+"012802D104210120F8E6022809D1DFF8C4060122027191\n" 
+"F868120FF27C70F5F73DB9002081F868027047DFF89816\n" 
+"0B22EFF7D0B8804F12003CB40B461146DFF8842602F262\n" 
+"24E478002C04D0D57A92F86222AA4203D0002202B030BC\n" 
+"D8E5002C06D0AA4204D10222184602B030BCCFE533BC70\n" 
+"4738B52DED0E8BB0EE408AF0EE608AB0EE419AF0EE619A\n" 
+"51EC180B53EC182B0BF0B1FB41EC1D0B9FED4FAB53EC1D\n" 
+"2B51EC1A0BFEF797FA41EC1E0B9FED4CBB9FED4DCB53EC\n" 
+"182B0020DFF83416FEF78AFA04460D4653EC1E2BDFF8E4\n" 
+"05DFF82416FEF780FA22462B460FF0CEFB04460D4653EC\n" 
+"1E2B51EC1C0BFEF774FA02460B4651EC1D0B0BF07EFB53\n" 
+"EC1B2BFEF76AFADFF8F425DFF8F435FEF764FA22462B46\n" 
+"0FF0B2FB41EC180B51EC190B53EC192B0BF068FB41EC1D\n" 
+"0B53EC1D2B51EC1A0BFEF750FA41EC1A0B53EC192B4FF0\n" 
+"3330DFF8BC15FEF746FA04460D4653EC1A2BDFF8B005DF\n" 
+"F8B015FEF73CFA22462B46F1940380B283000FF08AFB04\n" 
+"460D4653EC1A2B51EC1C0BFEF730FA02460B4651EC1D0B\n" 
+"0BF03AFB53EC1B2BFEF726FADFF82425DFF87C35FEF720\n" 
+"FA22462B460FF06EFB41EC190B53EC182B51EC180BFEF7\n" 
+"14FA04460D4653EC192B51EC190BFEF70CFA22462B460F\n" 
+"F05AFB41EC100BBDEC0E8BBDE831400FF0C6BB00000000\n" 
+"00004E40000000000020AC40111111111111913F2DE9F8\n" 
+"432DED0A8BAAB09FEDD7AA00249FEDD59A00A8F5F7EEFA\n" 
+"0AA8F5F742FB07A8FFF70AFF0DF140084FF47A703C214F\n" 
+"F4616298F8013098F8025011FB05F512FB035398F80350\n" 
+"5B1900FB03F59DF9003013FB02F29DF9013013FB01219D\n" 
+"F9022041FA82F1BDF9032000FB012613A80EF041FEDFF8\n" 
+"6C749DED220AB5EE400AF1EE10FA04DD0320F8702046B8\n" 
+"7001E02046F8700DF14500016809EE901A98F80B00DFF8\n" 
+"309499F8CB12012940F02C81012840F02981B869A84200\n" 
+"F008810CAA1068516841EC100B09F52C721068516841EC\n" 
+"110B0AAA1068516841EC1B0B09F52A721068516841EC1C\n" 
+"0B51EC100B53EC112B0BF089FA41EC110BB0EE418AF0EE\n" 
+"618A51EC1B0B53EC1C2B0BF07DFA41EC100BB0EE481AF0\n" 
+"EE681AFFF7B3FEB0EE408AF0EE608AB9692846FFF7EEFD\n" 
+"804651EC180B224613460BF098F918D24046FEF744F9DF\n" 
+"F8B023DFF8B033FEF74CF9DFF8D023DFF8D033FEF746F9\n" 
+"02460B4651EC180B0BF010FBFEF738FA0AEE100A9DED21\n" 
+"0AD7ED080A70EE60AAF5EE40AAF1EE10FA01D5DFED78AA\n" 
+"42F2107080457CD353EC182B2046DFF89013FEF724F941\n" 
+"EC180B1AEE900AFEF7F0F941EC1B0B53EC182BC348C449\n" 
+"FEF716F902460B4651EC1B0B0BF03AF925D29FEDBA0AB4\n" 
+"EE40AAF1EE10FA09DB9FEDB70AF4EE409AF1EE10FA02DB\n" 
+"0A20387014E0B3EE080AB4EE40AAF1EE10FA03DB387840\n" 
+"1D387009E0B3EE020AB4EE40AAF1EE10FA02DB3878C01C\n" 
+"387097F9000006908DED04BB8DED028B19EE900AFEF7B0\n" 
+"F9CDE900011AEE100AFEF7AAF902460B460FF27C30F4F7\n" 
+"34FF9DF84000312880F2DC80B3EE080AB4EE409AF1EE10\n" 
+"FA40F1D4809FED970AF4EE409AF1EE10FA5EDB212880F2\n" 
+"DC809FED910AF4EE409AF1EE10FA52DB97F9000005284C\n" 
+"DB0A24CEE000EE108AB8EE400A09F2C520DFED890A0168\n" 
+"01EE101AF4EE419AF1EE10FA016801EE101A06DB39EEC1\n" 
+"1A81EE000A20EE209AC1E731EE691A81EE000A20EE209A\n" 
+"BAE7F9693046FFF71AFDB0F57A7F20D397F9000000281C\n" 
+"D09DED220AB5EE400AF1EE10FA15D0FE61FF208DF84000\n" 
+"DFED1B9A0DF145002146F1940310B6830001609DE70128\n" 
+"08D109F52A700AA92422EEF776FEBD61FE6192E77878C2\n" 
+"E0032481E002247FE0F3EE020AF4EE609AF1EE10FA08DB\n" 
+"F4EE409AF1EE10FA03D5212871DA02246FE09FED600AF4\n" 
+"EE409AF1EE10FA09DB9DF81C10012901D0042962D10224\n" 
+"60E000000000DFED580AF4EE609AF1EE10FA27DBF4EE40\n" 
+"9AF1EE10FA22D59DF81C10012903D19DF81D20022A01D0\n" 
+"042903D1212846DA012444E09DED220AB5EE400AF1EE10\n" 
+"FA3DDDF5EE409AF1EE10FA38DD7878002802D16FF00104\n" 
+"32E06FF002042FE09DED220AB5EE400AF1EE10FA0BDD78\n" 
+"78002802D16FF0020422E0F87803281FDB6FF002041CE0\n" 
+"B878401CB870C0B23C2816DB6FF001040020B87011E09D\n" 
+"ED220AB5EE400AF1EE10FA0ADD7878002802D16FF00204\n" 
+"04E0F878032801DB6FF0020438782018387040B2002801\n" 
+"D50020387097F900000A2804DB0A2038700120787003E0\n" 
+"002801D10020787097F9000097F90510814216D0049019\n" 
+"EE100AFEF791F8CDE902012298FEF78CF8CDE9000119EE\n" 
+"900AFEF786F802460B4679780FF24C10F4F70FFE09F52A\n" 
+"700AA92422EEF7B5FDBD61FE6121983862387878717878\n" 
+"2AB0BDEC0A8BBDE8F28300000000104200004042010010\n" 
+"4200007A449A9999999999C93F010040416766E6407C74\n" 
+"8800FFA283009DA58300C1A7830058748800A1780F0500\n" 
+"5C2605B9791F962FA4923EFCA9F1D24D62503F1111913F\n" 
+"00C05B409999FD3F5839B4C876BE9F3F33335640AE47E1\n" 
+"7A14AEF73F9999993FDFBC9A785634323F00408F404154\n" 
+"2D4346205742432025642025640041542D54433A256400\n" 
+"00000041542D4E6F256420543A256420413A256420443A\n" 
+"2564000041542D436C6561724261746368446174610000\n" 
+"0041542D424154322053503A2564202564202564202564\n" 
+"000041542D424154342053503A25642025642025642025\n" 
+"64000041542052492D3120536574256420256400000000\n" 
+"41542D5031202566202566202566202566202564000000\n" 
+"0041542D50322825642920473A256620503A256620443A\n" 
+"25662056656869636C652D25640080B50FF03BF94FF4FA\n" 
+"720021DFF8940DBDE80840FCF755BF70B50B4611460124\n" 
+"0B2831D1012B19D1DFF8782D8A1892F92A301D46DFF870\n" 
+"6D8E5DB54203DA581C82F82A0044E0002382F82A301C46\n" 
+"0A4601460FF28000F4F72DFD39E0022B37D1DFF8400D0A\n" 
+"1892F92A30012B03DB581E82F82A002CE0002082F82A00\n" 
+"04460FF26400F4F717FD23E00A2821D1012B08D1DFF810\n" 
+"0D0A1802F22A021079F19403A0B98300401C107116E002\n" 
+"2B14D1DFF8FC2C8A1802F22A0292F90430012B02DB581E\n" 
+"107108E0002313711C460A4601460FF22800F4F7F2FC20\n" 
+"4670BD534C4D2D414C20455220256420256400534C4D20\n" 
+"524C2D455220256400000000534C4D2D524C2045582025\n" 
+"6420256400DFF89C1C81F8360070470FB4F0B5AFB000A8\n" 
+"F4F772FF18A85C21EEF7A5FB0124DFF8846CB068DFF878\n" 
+"5C90F84018002963D190F8410800285FD10FF09DF87068\n" 
+"407A411E8941C90FA976A87E85F82200B4208DF80A0046\n" 
+"208DF80B0020468DF80C0000208DF8600003208DF86100\n" 
+"0DF1630002A95522EEF737FC0A208DF8620018A8FDF7D9\n" 
+"FC002801D10220A1E002A80EF0B3FA029885F8210095F8\n" 
+"210085F82900BDF8520085F8200095F8200085F828009D\n" 
+"F900004FF461619DF90120C2EB02139A0011FB00209DF9\n" 
+"021040FA81F04FF47A71BDF9032001FB0020E86168622C\n" 
+"2200210846FDF7BFFB022805D10FF2EC00F4F75DFC0220\n" 
+"6BE09DF8D2603746781990F92A1000294CD190F92E0000\n" 
+"2848D1002E1AD10FF00AFA0FF012FA0020A88785F83E00\n" 
+"C5F84700E869C5F84300C5F83F00002085F84B0085F84C\n" 
+"00BDF8D4004FF47A7148430FF0E6F9032F24D19DF8D600\n" 
+"002803D14FF6E850A88200E0A8829DF8D300E874BDF8D4\n" 
+"004FF47A714843C5F81600072085F8ED01002085F8EE01\n" 
+"85F8EF0185F8F00185F8F101C5F8E501C5F8E101C5F8E9\n" 
+"01022F02D10020C5F8DD0128782146B140084328703246\n" 
+"214695F83600FFF7ADFE002808D13B46224695F836100F\n" 
+"F22400F4F7F1FB022420462FB0F0BC5DF814FB0000534C\n" 
+"4D204641494C2041434300000000534C4D205245474920\n" 
+"4641494C2025642F25642F2564000070B598B000A85C21\n" 
+"EEF7ACFAF6F760FA05460124002D6DD0DFF8806AAA7802\n" 
+"2196F83600FFF774FE002800D10324A878801990F92A00\n" 
+"00282AD1A878801990F92E00002824D1A878032814D100\n" 
+"20F074C6F81600B082C6F8E101C6F8E501C6F8E90186F8\n" 
+"ED0186F8EE0186F8EF0186F8F00186F8F101A878022802\n" 
+"D10020C6F8DD013078012195F902209140884330703078\n" 
+"00281BD10FF2A000F4F787FBFFF72BFE2C2200210120FD\n" 
+"F7DCFA03283CD001208DF8000003208DF801000A208DF8\n" 
+"020000A8FDF7B6FB002831D12DE0DFF8D409806890F890\n" 
+"10002929D1002180F8401880F84118FFF707FE0FF25800\n" 
+"F4F75DFB1DE00FF25C00F4F758FBFFF7FCFD2C22002120\n" 
+"46FDF7ADFA03280DD020468DF8000003208DF801000A20\n" 
+"8DF8020000A8FDF7F1940330BD830087FB002801D10320\n" 
+"01E00324204618B070BD0000534C4D2D414C4C20524D00\n" 
+"00534C4D2D464F5243452044524D000000534C4D2D524C\n" 
+"204E756C6C000FB410B4079800EB40018800C11DDFF8FC\n" 
+"0A89B20A189DF8083082F84D30491CDDF8092089B20B18\n" 
+"140A83F84D40491C89B20B1883F84D20491CDDF80D2089\n" 
+"B20B18140C83F84D40491C89B20B18140A83F84D40491C\n" 
+"89B20B1883F84D20491CDDF8112089B20B18140A83F84D\n" 
+"40491C89B20B1883F84D20491CDDF8152089B20B18140E\n" 
+"83F84D40491C89B20B18140C83F84D40491C89B20B1814\n" 
+"0A83F84D40491C89B20B1883F84D20491C80F83D1010BC\n" 
+"04B0704700002DE9F04FB5B04FF0000B16A8F4F767FDDF\n" 
+"F87048616A19A800F043FE1EA80EF0DEF8584618900646\n" 
+"1BA831460A460B460EC0894600A8FDF768FA00981B901B\n" 
+"A80199416002998160DFF84058D5F804A09AF80900411E\n" 
+"8941C90FA1769DF95800C0B24FF461619DF95920D2B2C2\n" 
+"EB02139A0011FB00209DF95A1050FA81F04FF47A71BDF9\n" 
+"5B2092B201FB0020E0610746616A00F0CFFC8046B8F100\n" 
+"0F02D0B8F1C90F02D3A868D0F844889AF80B0015901EA9\n" 
+"81B068465822EEF718FA08BC3A4641461BA80EF0EAFE82\n" 
+"460EF0AFFFE0761E9984F821102FA90191C98884F82010\n" 
+"84F839809DF95910ADF802109DF865708F4215D09DF959\n" 
+"100A2291FBF2F202EB8203B1EB43010BD1052807D194F8\n" 
+"4C00401C84F84C00C0B20EF06BFE01201890AAF1010ABA\n" 
+"F1100F00F27B80DFE80AF0095C145C793B5C55736C7379\n" 
+"79732E797300E069C4F83F00C4F8430032461146E07E00\n" 
+"F081FC64E094F84C000028324607D00421022000F077FC\n" 
+"304684F84C0057E00121032000F06FFC32461146E07E00\n" 
+"F06AFC03200EF0C3FF4AE094F84C0000281CD032460321\n" 
+"E07E00F05DFC304684F84C003DE06868407A002802D101\n" 
+"2084F8320094F84C00002808D032460221E07E00F049FC\n" 
+"304684F84C0029E032461146E07E00F040FC23E0686840\n" 
+"7A002802D1012084F832003246012194F8230000F032FC\n" 
+"32461146E07E00F02DFC94F823000EF085FF0CE0686840\n" 
+"7A002802D1012084F83200189AD2B20121E07E00F01BFC\n" 
+"20780521084200F0918094F83E0013280ADB0FF63430F4\n" 
+"F7ACF93046C4F84700012084F8320081E06968497A0029\n" 
+"314631D184F8371094F8221000290DD13046C4F8470001\n" 
+"2084F83200D4F8DD0100281BD0012084F8340017E0D4F8\n" 
+"4710DFF8A82A914211D300280FD0A86800F504614A7890\n" 
+"F840180FF6D820F19403C0C08300F4F77AF93046C4F847\n" 
+"00012084F83200D4F847004044C4F847004AE0C4F84710\n" 
+"BDF902108F4244D09DF959100F290AD194F837200F2A06\n" 
+"D0012184F838100F2184F8371018E023290AD194F83720\n" 
+"232A06D0012184F83810232184F837100BE0372909D194\n" 
+"F83710372905D0012184F83810372184F8371000281AD0\n" 
+"94F83810012916D1A86800F50462537890F840280FF658\n" 
+"20F4F730F9304684F83800012084F83200D4F8DD010028\n" 
+"02D0012084F8340094F800A01AF004008DF800004AD094\n" 
+"F82000002831D094F82800002828D1B7EE000ADDED2F0A\n" 
+"80EE200A10EE100AFDF77AFB3246DFF8AC39FDF7A3FA0A\n" 
+"F09BFB94F8291094F821208A4202D3511A484308E0FDF7\n" 
+"88FA3246DFF88C39FDF791FA0AF089FBD4F8DD114018C4\n" 
+"F8DD0104E0D4F8DD014044C4F8DD019DF80000002810D0\n" 
+"6868407A00280CD10198C088002808D09DF866009DF95A\n" 
+"10884202D0012084F834005FEA0A7040F1F7809DF95800\n" 
+"C0EB001188009DF9591040FA81F6E07EE17C052906D101\n" 
+"2801D0022806D14FF0010B03E0884201D14FF0010BBBF1\n" 
+"010F40F0AF80012084F8F10194F8EE01A18A88427CD294\n" 
+"F8F301D4F81610D4F8E1218A4208D200282CD1D4F8E521\n" 
+"8A4228D32A88964225D1002809D1D4F8E501884205D328\n" 
+"88864202D1012084F8F30101200EF042FE012001F0E0FE\n" 
+"E07E84F8ED01D4F8E501C4F8E901022084F8EF01012084\n" 
+"F8F0014846C4F8E101012084F8350060E0A07E01285DD1\n" 
+"94F82200002803D0BDF9020087420DD0022084F8EF01D4\n" 
+"F8E501C4F8E901484684F8F001012084F8350015E094F8\n" 
+"2300012811D002280FD0012084F8EF01484684F8F301D4\n" 
+"F8E501C4F8E901484684F8F001012084F8350094F8ED01\n" 
+"07282DD1484684F8ED0184F8F301012084F8EF01D4F8E5\n" 
+"01C4F8E901484684F8F001012084F835001AE04846C4F8\n" 
+"E101A07E012814D194F82200002803D0BDF9020087420C\n" 
+"D0022084F8EF01D4F8E501C4F8E901484684F8F0010120\n" 
+"84F835000198C088002836D1D4F8E5014044C4F8E501D4\n" 
+"F8E1014044C4F8E1012BE048460EF0B8FD484601F056FE\n" 
+"A07E012819D194F8F101012815D16B882A8831460FF2EC\n" 
+"70F3F7EEFF4846C4F8E901032084F8EF01484684F8F001\n" 
+"012084F83500484684F8F1014846C4F8E101C4F8E50184\n" 
+"F8EE0184F8ED014846024607E021780141C90702D40119\n" 
+"81F83220401C0428F5DB94F83400012807D10221012000\n" 
+"F0C2F8484684F8340072E094F8320001280BD194F83E00\n" 
+"002803D01146F1940350C48300012000F0B2F8484684F8\n" 
+"320062E094F8350001285ED1288840F2DC51884218D06A\n" 
+"888A4215D0014682420BD28E4204D3B6F5B46F01D24FF0\n" 
+"0109B2420BD34FF0010908E08E4206D3B24204D34FF001\n" 
+"0901E04FF00109B9F1010F1FD10321012000F083F894F8\n" 
+"F00101280FD1D4F8162031460FF21470F3F777FF012084\n" 
+"F8F20194F8EE01401C84F8EE0120E094F8EF0103281CD1\n" 
+"002084F8F20118E094F8F201012814D194F8EF01032805\n" 
+"D002280ED194F8F00100280AD10321012000F055F894F8\n" 
+"EF01032802D1002084F8F201002084F8350004F1220004\n" 
+"F11A010822EDF7DFFE012035B0BDE8F08F10B55C4C40F2\n" 
+"DC5020806080FCF791FEA060F3F7BFFE6060A068DFF804\n" 
+"16C0F8581800F65800DFF8FC154160DFF8FC1581600FF2\n" 
+"0D01C1600FF241110161012010BD00204C49896891F841\n" 
+"18002912D00146BA4B00E0491CC9B20A46042A05DAD218\n" 
+"92F92A20012AF5DB0120002801D10020704700E07047B1\n" 
+"4890F93A007047AF4A02F22A031874002812D092F92A00\n" 
+"012807DA93F90300012803DA93F90200012808DB587C01\n" 
+"2202FA01F108435874704700205874704780B500210846\n" 
+"FFF7DFFF012002BD10B5044621460FF2E050F3F7D5FE28\n" 
+"48048010BD10B5044621460FF2D850F3F7CBFE23484480\n" 
+"10BD10B5044621460FF2D050F3F7C1FE9048002C03D14F\n" 
+"F6E851818210BD848210BD10B5044621460FF2BC50F3F7\n" 
+"B1FE88484FF47A716143C0F8161010BD10B5044621460F\n" 
+"F2AC50F3F7A3FE4FF47A706043BDE810400EF050BC7D4B\n" 
+"83F84D0003F24D00012343708170110EC170110C017111\n" 
+"0A417182717047DFF8C40470470000FC85880094038800\n" 
+"F08588002DE9F04105460E46002140F24917307817FB00\n" 
+"5001220270307817FB00502C228270684C04F11C0898F8\n" 
+"1F00C20707D5D4F83F2094F83C10FFF7C8FF012122E042\n" 
+"071DD5307817FB005001224270307817FB005098F81F20\n" 
+"C270307817FB005002220271307817FB0050D4F8DD21C0\n" 
+"F806203078401C30700846C4F8DD0102E0000700D50121\n" 
+"002900F08980307817FB00500121417098F81F00C10765\n" 
+"D504F13C08307817FB005098F801104171307817FB0055\n" 
+"FFF79AFF28613078401C307004F23F05E07E052838D100\n" 
+"2020E000EB400292000F3292B2131993F84D301B06521C\n" 
+"92B2161996F84D6003EB0643521C92B2161996F84D6003\n" 
+"EB0623521C92B2121992F84D2053FA82F251186960401C\n" 
+"696898F80220C0B29042D8D3DFF89803814203D3DFF894\n" 
+"0340186860F19403E0C78300687B002808D1297B68680E\n" 
+"F07FFB03E0297BE0690EF07AFB0EF09DFBE07E052803D1\n" 
+"6868C4F83F0003E0E069C4F83F006860002084F83C0088\n" 
+"F8020019E0010717D5317817FB0151C87004F2DD103178\n" 
+"17FB0151827C8A72317817FB0151C27CCA72317817FB01\n" 
+"51C068C8603078401C3070BDE8F041CCE610B400228842\n" 
+"01D3421A06E00B1AC34CA34202D3BF4A1018421A104610\n" 
+"BC7047FC8588002DE9F04796B081468A469046BB4C2078\n" 
+"C00740F117810025494600A80EF0E0FA9DF800008DF830\n" 
+"00DDF80900CDF83900DDF80500CDF83500DDF80D00CDF8\n" 
+"3D00DDF80100CDF83100B8F1010F0DD12846CDF83D00CD\n" 
+"F83500CDF83900CDF831004946E0690EF004FBB2E05646\n" 
+"012E0DD194F83E00002803D094F83C00002801D10125A5\n" 
+"E0401E84F83C00A1E0022E34D12E4694F84C00864280F2\n" 
+"9A80711DC9B211A80EF09DFA8DF81090DDF84D00CDF819\n" 
+"00DDF84900CDF81500DDF85100CDF81D00DDF84500CDF8\n" 
+"110094F83C00029003A984B068461822EDF7DCFC0FBCFF\n" 
+"F707FA94F83E00401C84F83E0094F83C00401C84F83C00\n" 
+"761CCBE7032E01D0042E66D12F462EE0791DC9B200A80E\n" 
+"F068FA03208DF81800DDF80900CDF82100DDF80500CDF8\n" 
+"1D00DDF80D00CDF82500DDF80100CDF8190094F83C0002\n" 
+"9005A984B068461822EDF7A6FC0FBCFFF7D1F994F83E00\n" 
+"401C84F83E0094F83C00401C84F83C007F1C94F84C0087\n" 
+"42CCDB042E2CD1032100A80EF034FA03208DF81800DDF8\n" 
+"0900CDF82100DDF80500CDF81D00DDF80D00CDF82500DD\n" 
+"F80100CDF8190094F83C00029005A984B068461822EDF7\n" 
+"72FC0FBCFFF79DF994F83E00401C84F83E0094F83C0040\n" 
+"1C84F83C0003200EF074FA94F83C0002900BA984B06846\n" 
+"1822EDF759FC0FBCFFF784F99DF8300084F84B00B8F101\n" 
+"0F08D194F83E00401C84F83E0048460EF059FA18E0BAF1\n" 
+"000F06D05646022E03D0042E01D0032E05D194F83E0040\n" 
+"1C84F83E0008E0012E06D1012D04D194F83E00401C84F8\n" 
+"3E0094F83C00401C84F83C0016B0BDE8F0872DE9FC4105\n" 
+"460C462046FCF702FE0022294B09F0DCFF09F0EEFE8DF8\n" 
+"00009DF80000254901FB10484046FCF7F2FD0022234B09\n" 
+"F0CCFF09F0DEFE06468DF801604EF66027F6B207FB1680\n" 
+"FCF7E2FD1C4A1D4BFCF7ECFD09F0CEFE8DF802009DF800\n" 
+"104EF6806202FB114107FB1611C0B24FF47A7202FB1010\n" 
+"ADF80300284600A90522EDF7D2FBBDE8F681814F120000\n" 
+"408F4000001C4013BA83000DBC830025BE830049868800\n" 
+"005C2605F1940370CB830000A4D9FAA1780F05FC858800\n" 
+"40774B4180EE3600004CED40FCA9F1D24D62503F534C4D\n" 
+"2046420000534C4D204F4E20434E542025642F25640000\n" 
+"0000534C4D204F464620434E542025642F25642F256400\n" 
+"000000534C4D2049412042522025642F25642F25640000\n" 
+"534C4D2049412055502025642F256400534C4D2031502F\n" 
+"2564000000534C4D2032502F2564000000534C4D203350\n" 
+"2F2564000000534C4D2034502F2564000000534C4D2035\n" 
+"502F25640000000FB410B5032200210846FCF71FFB0228\n" 
+"01D1022020E00FF24800F3F7BBFBDFF8484C0020E073E0\n" 
+"82E0629DF80C209DF80B109DF80A000DF04EFA58220021\n" 
+"DFF8500DFBF7AEFD00202064A07420746083E061606420\n" 
+"75012010BC5DF814FB000050443A205374617274506564\n" 
+"6F2D30383232000080B5032200210120FCF7E6FA032801\n" 
+"D1032002BD012002BD70B52DED028B8EB002A8FCF738FB\n" 
+"DFF8CC5B286A697A427A914205D0407A10F05BFE286A40\n" 
+"7A6872286A297A027B914205D0007B10F04DFE286A007B\n" 
+"287205210320FCF794FB002814D1DFF8240C0A90002068\n" 
+"83A883E88B401CE88380B240F2EF2188424ADB0FF2E800\n" 
+"F3F74DFB0020E88343E09DED0A8A95F90A00022836D195\n" 
+"ED110AB4EE408AF1EE10FA03D1688B401C688301E00020\n" 
+"68839FEDA50AB4EE408AF1EE10FA06D49FEDA20AB4EE40\n" 
+"8AF1EE10FA03DBA88B401CA88301E00020A883AE8B6C8B\n" 
+"972C01DA972E12DB18EE100AFCF789FDCDE90001324621\n" 
+"460FF28000F3F711FB00206883A88302E000206883A883\n" 
+"0020E88385ED118A686AD0F894400DF021F9A87295F90A\n" 
+"00022806D13C2C04D114210320FCF7B3FA07E0012805D1\n" 
+"142C03D13C210320FCF7AAFA204680B2DDED0A1A02A991\n" 
+"EC030A0CF0B5FFA86A2018A86201200EB0BDEC028B70BD\n" 
+"5044204261726F44697361626C6564005044204241524F\n" 
+"2025642025642025660000000010B5DFF8644A94F90000\n" 
+"00283AD494F90C0094F90110814228D1A17B0818207340\n" 
+"B23D2801DB3C38207394F90C100FF27000F3F7AFFA0020\n" 
+"A062DFF85C0B90F9010010F1010F01D1012010BD94F901\n" 
+"10081AFCF725FC21F0004109F01DFD40B2012801DB0120\n" 
+"10BD002010BDDFF82C0B90F90120914203D0D4E90023C0\n" 
+"E90023002010BDA06ADFF8181B884205DB0FF21C00F3F7\n" 
+"7FFA012010BD002010BD000050443A204E542025640000\n" 
+"0050443A204E6F54696D650000F8B52DED028B0025DFF8\n" 
+"A44901E0B819207394F90C60002D19D46078851B6DB294\n" 
+"F90E70F1940300CF8300002DF2D52846FCF7DDFB21F000\n" 
+"4141EC180B3846FCF7D6FB53EC182B09F014FCE5D2F01B\n" 
+"20730025E1E73C2E02DBA6F13C002073BDEC028BF1BD10\n" 
+"B5DFF84C49002020740120A0720020E0724FF0FF302070\n" 
+"0F2060731420A0730020E073E082E062E074A063E06328\n" 
+"220146DFF8580AFBF729FCFCF77AF96062F3F7A8F92062\n" 
+"606ADFF8481AC0F8A810A830DFF8401A4160DFF8401A81\n" 
+"600FF27D21C1600FF63D210161012010BD10B582B04FF4\n" 
+"6163C1EB0114A40013FB0043D3184FF47A746343DFF804\n" 
+"4A2360DFF8C0389B7C009313460A460146DFF8000AF3F7\n" 
+"EDF913BD0000FA430180BB442DE9F0412DED028BAAB0DF\n" 
+"F8C069314684B068465822EDF787F90FBC00F08EFC10EE\n" 
+"100AFCF744FC41EC100B9FED7E8BDFF8AC49656853EC10\n" 
+"2B51EC180BFCF765FB09F047FC15FA80F060604FF6FF75\n" 
+"A84200D36560314684B068465822EDF763F90FBC00F020\n" 
+"FC10EE100AFCF720FC41EC100BA76853EC102B51EC180B\n" 
+"FCF745FB09F027FC17FA80F0A060A84200D3A560002013\n" 
+"9002201290314684B068465822EDF741F90FBC00F07EFA\n" 
+"A1894018A08180B2FF2801DBFF20A08100201390032012\n" 
+"90314684B068465822EDF72CF90FBC00F069FA21694018\n" 
+"2061A84200D325610020139006201290314684B0684658\n" 
+"22EDF719F90FBC00F056FAA18A4018A08280B2FF2801DB\n" 
+"FF20A0820020139007201290314684B068465822EDF704\n" 
+"F90FBC00F041FAE18A4018E08280B2FF2801DBFF20E082\n" 
+"0020139008201290314684B068465822EDF7EFF80FBC00\n" 
+"F02CFAA1694018A061A84200D3A5610020139009201290\n" 
+"314684B068465822EDF7DCF80FBC00F019FAE1694018E0\n" 
+"61A84200D3E56114A80CF049FFDFF81877D7F838802398\n" 
+"FCF78DFB0022DFF83C3DFCF7B6FA09F098FB58FA80F0B8\n" 
+"63F96B491CF963B0FBF1F084F820000020139001201290\n" 
+"314684B068465822EDF7AEF80FBC00F0EBF9616A401860\n" 
+"62A84200D36562787C00F0E1FA2AB0BDEC028BBDE8F081\n" 
+"DFF8F0078189002914D10169002911D1818A00290ED1C1\n" 
+"8A00290BD18169002908D1C169002905D1406A401E8041\n" 
+"C043C00F704701207047000000000000000059402DE9F0\n" 
+"4FABB0814600254E46DFF86446207C494688420DD0012E\n" 
+"7AD128460DF031FB606A90F9902090F991100FF67C40F3\n" 
+"F7B6F814A80CF0D8FEDFF860A728461390012012905146\n" 
+"84B068465822EDF753F80FBC00F090F907469DED230ADA\n" 
+"ED0F0A30EE600A10EE100AFCF709FB2A46DFF8343CFCF7\n" 
+"32FAF1940390D2830009F014FB80461FFA88F8BDF89A00\n" 
+"BAF84A10A0EB010B5FFA8BFB206C216B149A5118091A21\n" 
+"63626B149B9A18101A6063B9F1000F42D1002902D00120\n" 
+"10F070FC606B002802D0012010F027FD002F02D15BEA08\n" 
+"0000D001250020A0624FF0FF302070DFF8CC26D4E90001\n" 
+"C2E90001DFF8282CC2E90001DFF8B426C2E90001607B20\n" 
+"73207C002851D000202074A07C00284CD00120E0740546\n" 
+"48E0B9F1000F07D10FF6A430F3F740F801200DF0AFFA85\n" 
+"E70FF6A030F3F738F82846EDE000F0ADF900281BD000A8\n" 
+"F3F7D4FA204600A90522ECF7C6FF2846E072DFF85426D4\n" 
+"E90001C2E9000194F9023094F9012094F900100FF67C30\n" 
+"F3F718F8FFF7A8FD00A8F3F7B8FA204600A90522ECF7AA\n" 
+"FFFFF742FD00280BD0DFF81426D4E90001C2E90001A07C\n" 
+"002801D00120E0740125012E07D1207C4946884203D000\n" 
+"F04FFA84F81090012E58D1002F56D0DFF84C9B607CA17C\n" 
+"08430CD10120A0740522214609F10800F7F7FEFAA27861\n" 
+"782078FFF7D5FD94F9010099F90910401A411E222901D2\n" 
+"012005E010F1230F01DA012000E0002001282AD10020A0\n" 
+"63E063FFF7D5FE002823D028220021DFF89005FBF7C5F9\n" 
+"607C401C6074C0B2152809D10FF6CC20F2F7B4FF0120E0\n" 
+"740020607401250DE0A07C401CA074A27861782078FFF7\n" 
+"9EFD0522214609F10800F7F7BCFAFFF7B6FD582214A950\n" 
+"46F7F7B5FAE07B012833D1E08A002805D10FF6E430F2F7\n" 
+"8FFF012523E0E16A814218D2002F02D15BEA080000D001\n" 
+"25DFF8749A99F9020094F90220904212D0491CE1620FF6\n" 
+"C430F2F776FFD4E90001C9E9000107E00020E073E082E0\n" 
+"620FF6BC30F2F769FF012E04D1A07C002801D00120E074\n" 
+"2846012801D10021A162616A91F89110002906D10021A1\n" 
+"62012801D100F0ABF90025002D03D1207D012800D10125\n" 
+"1498206428462BB0BDE8F08F10B5DFF8080B0021816203\n" 
+"2205210020FBF797FE044600F007F8204610BD03220521\n" 
+"0120FBF78DBE00B597B000A80CF051FD582200A9DFF8DC\n" 
+"0AF7F742FA012017B000BDDFF8C80A006B7047DFF8C00A\n" 
+"002101637047DFF8B40A00214163704700000FB410B596\n" 
+"B000249DF9BC0001280BD10CF026FE1899884202D3441A\n" 
+"E4B272E08038441AE4B26EE000A80CF022FD9DF9B80040\n" 
+"1E082866D8DFE800F02905111D2936424E5A0001981999\n" 
+"884201D3441A59E0DFF8782A1018401A441C53E002981A\n" 
+"99884201D3441A4DE0DFF8602A1018401A441C47E00398\n" 
+"1B99884201D3441A41E0DFF8482A1018401A441C3BE000\n" 
+"98F1940320D683001899884201D3441A35E0DFF8301A08\n" 
+"181899401A441C2EE004981C99884201D3441A28E0DFF8\n" 
+"142A1018401A441C22E005981D99884201D3441A1CE0DF\n" 
+"F8FC291018401A441C16E006981E99884201D3441A10E0\n" 
+"DFF8E4291018401A441C0AE007981F99884201D3441A04\n" 
+"E0DFF8CC291018401A441C204616B010BC5DF814FBDFF8\n" 
+"98090121C1727047DFF89009C07A704710B504460CF0B7\n" 
+"FC022C0CD1DFF87C09406A90F9902090F991100FF6E010\n" 
+"BDE81040F2F770BE10BD0146DFF85C29792902DB7820D0\n" 
+"8200E0D0820120D0730FF6D010F2F760BE0000000010B5\n" 
+"040001D1012402E0072C00DB062421460FF6C810F2F751\n" 
+"FE641E052C2DD8DFE804F0030A11181F26DFF814093721\n" 
+"41733C21817321E0DFF80409192141731E2181731AE0DF\n" 
+"F8F8080F2141731421817313E0DFF8E8080A2141730F21\n" 
+"81730CE0DFF8DC08072141730C21817305E0DFF8CC0805\n" 
+"2141730A218173DFF8C008417B0173BDE81040FFF7AABB\n" 
+"DFF89808704700EB80018800421CDFF88C088B4992B20B\n" 
+"681B0E1354521C92B20B681B0C1354521C92B20B681B0A\n" 
+"1354521C92B20B681354521C92B24B681B0A1354521C92\n" 
+"B24B681354521C92B28B681B0A1354521C92B28B681354\n" 
+"521C92B28B891354521C92B20B691B0A1354521C92B20B\n" 
+"691354521C92B28B8A1354521C92B2CB8A1354521C92B2\n" 
+"8B691B0A1354521C92B28B691354521C92B2CB691B0A13\n" 
+"54521C92B2CB691354521C92B291F820301354521C92B2\n" 
+"4B6A1B0A1354521C92B2496A11540F48511C0183704710\n" 
+"B5DFF8E047218B0FF68400F2F7A9FD208B10BD80B52822\n" 
+"00215548FAF7A8FFDFF8C4070021417401210183002181\n" 
+"748163C16301BD708288000FB400B597B000A80CF0B3FB\n" 
+"9DED090ADDED210AB4EE600AF1EE10FA02DB30EE600A05\n" 
+"E09FED401A71EE600A30EE800A10EE100AFBF7E8FFDFF8\n" 
+"5C27DFF85C370DF062F8FCF708F8FBF7DEFF0022DFF850\n" 
+"37FBF707FF08F0E9FF00EE100AB8EEC00A10EE100AFBF7\n" 
+"CFFFDFF82C27DFF83437FBF7F7FEDFF83027DFF854370D\n" 
+"F043F8FBF7E9FF00EE100A17B05DF814FB00007A440FB4\n" 
+"00B597B000A80CF069FB9DED0E0ADDED260AB4EE600AF1\n" 
+"EE10FA02DB30EE600A05E09FED1B1A71EE600A30EE800A\n" 
+"10EE100AFBF79EFFDFF8C826DFF8C8360DF018F8FBF7BE\n" 
+"FFFBF794FF0022DFF8BC36FBF7BDFE08F09FFF00EE100A\n" 
+"B8EEC00A10EE100AFBF785FFDFF89826DFF8A036FBF7AD\n" 
+"FEDFF89C26DFF8C0360CF0F9FFFBF79FFF00EE100A17B0\n" 
+"F19403B0D983005DF814FB1882880000247449C0828800\n" 
+"B882880040771B00D882880025CC830099CC8300B1CC83\n" 
+"00445286002DE9F8432DED068BAAB006460D4614A80CF0\n" 
+"09FB40F24914287814FB006001210170DFF83C76F87B01\n" 
+"2804D1F88A002801D10020F873287814FB006041702878\n" 
+"14FB006003218170387D012813D1287814FB0060E02101\n" 
+"715022DFF80816287814FB0060401DF6F7D5FF2878401C\n" 
+"28700020387531E2F87C012820D1B87C00281DD0297814\n" 
+"FB0161C0220A71DFF8B8150870FFF7F2FE297814FB0161\n" 
+"A1F85500287814FB0064FFF781FEC4F857002878401C28\n" 
+"70FFF7EBFE0020F8740DE20DF18C089FED828B9FED839B\n" 
+"DFF89C750020139001201290394684B068465822ECF729\n" 
+"FC0FBCFFF766FD0A28287814FB006080F0F48000210171\n" 
+"0846139002201290394684B068465822ECF714FC0FBCFF\n" 
+"F751FD297814FB01610A79104308710020139003201290\n" 
+"394684B068465822ECF701FC0FBCFFF73EFD297814FB01\n" 
+"6148710020139004201290394684B068465822ECF7F0FB\n" 
+"0FBCFFF72DFD297814FB01618871002013900520129039\n" 
+"4684B068465822ECF7DFFB0FBCFFF71CFD297814FB0161\n" 
+"C871394684B068465822ECF7D2FB0FBCFFF7D9FE10EE10\n" 
+"0AFBF78FFE41EC100B287814FB006953EC102B51EC190B\n" 
+"FBF7B2FD08F094FEA9F80E00287814FB00692398FBF77A\n" 
+"FE53EC182BFBF7A4FD08F086FE89F81000287814FB0060\n" 
+"B8F80E104174394684B068465822ECF7A2FB0FBCFFF75F\n" 
+"FE10EE100AFBF75FFE41EC1A0B287814FB006953EC1A2B\n" 
+"51EC190BFBF782FD08F064FE89F81200287814FB0069D8\n" 
+"F80800FBF749FE53EC182BFBF773FD08F055FE89F81300\n" 
+"0020139006201290394684B068465822ECF773FB0FBCFF\n" 
+"F7B0FC297814FB016108720020139007201290394684B0\n" 
+"68465822ECF762FB0FBCFFF79FFC297814FB0161487200\n" 
+"20139008201290394684B068465822ECF751FB0FBCFFF7\n" 
+"8EFC297814FB016188720020139009201290394684B068\n" 
+"465822ECF740FB0FBCFFF77DFC297814FB0161C8722878\n" 
+"401C287005E100BF000000000000244000000000000059\n" 
+"40802101710020139002201290394684B068465822ECF7\n" 
+"20FB0FBCFFF75DFC297814FB0161C1F805000020139003\n" 
+"201290394684B068465822ECF70EFB0FBCFFF74BFC2978\n" 
+"14FB0161C1F809000020139004201290394684B0684658\n" 
+"22ECF7FCFA0FBCFFF739FC297814FB0161C1F80D000020\n" 
+"139005201290394684B068465822ECF7EAFA0FBCFFF7F1\n" 
+"940340DD830027FC297814FB0161C1F81100394684B068\n" 
+"465822ECF7DCFA0FBCFFF7E3FD10EE100AFBF799FD41EC\n" 
+"100B287814FB006953EC102B51EC190BFBF7BCFC08F0B4\n" 
+"FDC9F82700287814FB00692398FBF784FD53EC182BFBF7\n" 
+"AEFC08F090FD89F82B00287814FB0060B8F80E1080F82C\n" 
+"10394684B068465822ECF7ABFA0FBCFFF768FD10EE100A\n" 
+"FBF768FD41EC1A0B9E4A9F4B08F0D2FC06D89E4A9E4B08\n" 
+"F0B5FC01D29FEDA0AB287814FB006953EC1A2B51EC180B\n" 
+"FBF77FFC08F061FDA9F82D00287814FB0069D8F80800FB\n" 
+"F746FD53EC182BFBF770FC08F052FD89F82F0000201390\n" 
+"06201290394684B068465822ECF770FA0FBCFFF7ADFB29\n" 
+"7814FB0161C1F815000020139007201290394684B06846\n" 
+"5822ECF75EFA0FBCFFF79BFB297814FB0161C1F8190000\n" 
+"20139008201290394684B068465822ECF74CFA0FBCFFF7\n" 
+"89FB297814FB0161C1F81D000020139009201290394684\n" 
+"B068465822ECF73AFA0FBCFFF777FB297814FB0161C1F8\n" 
+"21002878401C2870FFF750FB2AB0BDEC068BBDE8F18300\n" 
+"0024405044205265662045282564292C49282564290000\n" 
+"5044203A206C63646F6E00005044203A20624973415053\n" 
+"6C656570696E672077726F6E672025640050443A54696D\n" 
+"654E6F7469202564202564202564000000005044204254\n" 
+"2042462046554C4C000000C882880010B582B004460020\n" 
+"002C05D10FF2BC10F2F73CFA002016BD04F15001497801\n" 
+"295AD10FF2B810F2F731FA0020ADF8000020E0BDF80000\n" 
+"54F82000BDF80010354A42F82100BDF8000054F8200000\n" 
+"EE100AB8EE400ADFED270A20EE200ABDF80000324901EB\n" 
+"800080ED000ABDF80000401CADF80000BDF80000142827\n" 
+"DABDF8000054F82000B0F52F7F07D3BDF8000054F82000\n" 
+"40F215518842CBD3BDF8000054F82020BDF800100FF240\n" 
+"10F2F7EFF9BDF800001E494FF07E5241F82020BDF80000\n" 
+"14494FF47A7241F82020CEE71748012101650CF04FFC0B\n" 
+"E0022909D194F850100FF21810F2F7D2F994F850000120\n" 
+"C046C0B216BD6F12833A008388007B14AE47E17A743F00\n" 
+"005940E17A843F2D431CEB70828800F002880018828800\n" 
+"B81E85EB51B89E3F9A9999999999B93F40038800809698\n" 
+"00E2361A3F9A9999999999B93F80B50CF019FC012002BD\n" 
+"000050443A20526571205065646F496E666F3100000050\n" 
+"443A207574696D657220256400000050443A2052657120\n" 
+"5065646F496E666F320000005044205265663220452825\n" 
+"64292C49282564290050443A205374617274204461F194\n" 
+"03D0E08300746120256400000050443A20555420256400\n" 
+"000050443A204241544C454E4754482025640000000050\n" 
+"442053462050545233206E756C6C005044205346205345\n" 
+"543100005044205346204552525B25645D202564000000\n" 
+"0050442053462053455432202564000000D2B2203A22BF\n" 
+"00FA02F1002070475242D041D2F1200291404140D04090\n" 
+"40414070470000D2B2203A22BF21FA02F0002170472032\n" 
+"D141D04048409140D140484070470000DFF8081C087070\n" 
+"4770B50546F2F7A1F80646DFF8FC4B2078401C2070E9F7\n" 
+"32FB6078401C6070294689B23046F2F781FA6078401E60\n" 
+"70C0B2002801D1E9F71CFBBDE87040E9F75FBC1CB50446\n" 
+"0120009001ABFF221B210020F2F7FAF9002808D16222DF\n" 
+"F8881ADFF8AC0BF2F7E7F8002016BD9DF8040000F0CE00\n" 
+"20438DF804000FF238000088ADF800009DF804008DF801\n" 
+"00022300AA1B210020F2F7A1F9002808D16722DFF8441A\n" 
+"DFF8680BF2F7C6F8002016BD012016BD000000007F001C\n" 
+"B504460020FFF7C0FF0120009001AB85221B210020F2F7\n" 
+"BCF9002808D17322DFF80C1ADFF8300BF2F7A9F8002016\n" 
+"BD9DF8040020438DF804000FF234000088ADF800009DF8\n" 
+"04008DF80100022300AA1B210020F2F765F9002808D177\n" 
+"22DFF8CC19DFF8F00AF2F78AF8002016BD012016BD0500\n" 
+"7CB504460D4616462020FFF784FF0120009001AB81221B\n" 
+"210020F2F780F9002808D19922DFF89419DFF80C0DF2F7\n" 
+"6DF8002076BD9DF8040000F0C00046EAC40141EA450108\n" 
+"438DF804000FF294000088ADF800009DF804008DF80100\n" 
+"022300AA1B210020F2F723F9002808D19D22DFF84819DF\n" 
+"F8C00CF2F748F8002076BD0FF264000088ADF800000223\n" 
+"00AA1B210020F2F70DF9002808D1A722DFF81C19DFF894\n" 
+"0CF2F732F8002076BD0FF23C000088ADF80000022300AA\n" 
+"1B210020F2F7F7F8002808D1A822DFF8F018DFF8680CF2\n" 
+"F71CF8002076BD0020FFF71DFF012076BD000001000000\n" 
+"0201000000047CB505460C46164600208DF804002020FF\n" 
+"F70BFF0120009001AB94221B210020F2F707F9002808D1\n" 
+"B822DFF8A018DFF8180CF1F7F4FF002076BD9DF8040000\n" 
+"F0C00046EAC50141EA440108438DF804000FF294000088\n" 
+"ADF800009DF804008DF80100022300AA1B210020F2F7AA\n" 
+"F8002808D1BD22DFF85818DFF8D00BF1F7CFFF002076BD\n" 
+"0FF264000088ADF80000022300AA1B210020F2F794F800\n" 
+"2808D1C722DFF82C18DFF8A40BF1F7B9FF002076BD0FF2\n" 
+"3C000088ADF80000022300AA1B210020F2F77EF8F19403\n" 
+"60E48300002808D1C822DFF80018DFF8780BF1F7A3FF00\n" 
+"2076BD0020FFF7A4FE012076BD1400000015020000110A\n" 
+"1CB504462020FFF798FE0120009001ABD3221B210020F2\n" 
+"F794F8002808D1D922DFF8BC17DFF8340BF1F781FF0020\n" 
+"16BD9DF8040000F0F80020438DF804000FF23C000088AD\n" 
+"F800009DF804008DF80100022300AA1B210020F2F73BF8\n" 
+"002808D1DE22DFF87817DFF8F00AF1F760FF002016BD00\n" 
+"20FFF761FE012016BD000053001CB504460020FFF758FE\n" 
+"0120009001ABEE221B210020F2F754F8002808D1EB22DF\n" 
+"F83C17DFF8B40AF1F741FF002016BD9DF8040000F0FC00\n" 
+"20438DF804000FF234000088ADF800009DF804008DF801\n" 
+"00022300AA1B210020F1F7FBFF002808D1F022DFF8F816\n" 
+"DFF8700AF1F720FF002016BD012016BD6E0080B50FF2C8\n" 
+"100088ADF8000001208DF80100022300AA1B210020F1F7\n" 
+"DEFF002808D1FE22DFF8C016DFF8E407F1F703FF002002\n" 
+"BDF1F78AFE0521F2F777F80FF290100088ADF800004020\n" 
+"8DF80100022300AA1B210020F1F7C0FF002809D140F203\n" 
+"12DFF88016DFF8A407F1F7E4FE002002BDF1F76BFE0521\n" 
+"F2F758F80FF258100088ADF80000022300AA1B210020F1\n" 
+"F7A4FF002809D14FF48372DFF84816DFF86C07F1F7C8FE\n" 
+"002002BD2020FFF704FE01280FD02020FFF7FFFD03464F\n" 
+"F48572DFF82416DFF8A009F1F7B5FE2020FFF7F3FD02BD\n" 
+"1020FFF7EFFD01280FD01020FFF7EAFD034640F20B12DF\n" 
+"F8F815DFF87409F1F7A0FE1020FFF7DEFD02BDF1F725FE\n" 
+"0521F2F712F8012203210846FFF70DFE012813D0012203\n" 
+"210846FFF706FE03464FF48B72DFF8BC15DFF83809F1F7\n" 
+"82FE012203210846FFF7F8FD02BD012211460720FFF768\n" 
+"FE012813D0012211460720FFF761FE034640F22312DFF8\n" 
+"8815DFF80409F1F767FE012211460720FFF753FE02BD00\n" 
+"20FFF7C7FE01280FD00020FFF7C2FE034640F22912DFF8\n" 
+"5815DFF8D408F1F750FE0020FFF7B6FE02BD0020FFF7F2\n" 
+"FE01280FD00020FFF7EDFE03464FF49572DFF83015DFF8\n" 
+"AC08F1F73BFE0020FFF7E1FE02BD012002BD0000060000\n" 
+"0007000000030000B583B0F1F7B6FD0FF240100088ADF8\n" 
+"0000022300AA1B210020F1F7F2FE002809D14FF4A972DF\n" 
+"F8E414DFF85C08F1F716FE00200EBD0FF214100088ADF8\n" 
+"0000022300AA1B210020F1F7DBFE002809D140F25312DF\n" 
+"F8B814DFF83008F1F7FFFD00200EBDF1F786FD6421F1F7\n" 
+"73FF0120009001AB80221B210020F1F7FAFE002809D140\n" 
+"F25712DFF88414DFF8FC07F1F7E6FD00200EBDF19403F0\n" 
+"E78300FFF7C7FE01280DD0FFF7C3FE034640F25B12DFF8\n" 
+"6414DFF8E007F1F7D5FDFFF7B8FE0EBD0120C04601280D\n" 
+"D00120C046034640F25F12DFF84014DFF8BC07F1F7C3FD\n" 
+"0120C0460EBD0AF0F4FFDFF8781C08700FF268000088AD\n" 
+"F80000022300AA1B210020F1F782FE002809D140F26512\n" 
+"DFF80414DFF87C07F1F7A6FD00200EBD0FF23C000088AD\n" 
+"F80000022300AA1B210020F1F76BFE002809D14FF4B772\n" 
+"DFF8D813DFF85007F1F78FFD00200EBD01200EBD00007E\n" 
+"00000006800000077F0000064010B5DFF8E84D20780028\n" 
+"07D1FFF74CFF002801D1002010BD01202070012010BD1C\n" 
+"B5DFF8CC4D2078C00701D5012016BD0020FFF76EFC0120\n" 
+"009001AB86221B210020F1F76AFE002808D140F29D12D9\n" 
+"49DFF8E006F1F757FD002016BD9DF80400400624D59DF8\n" 
+"040000F0BF008DF804000FF220100088ADF800009DF804\n" 
+"008DF80100022300AA1B210020F1F70EFE002808D14FF4\n" 
+"D172C749DFF89806F1F733FD002016BDF1F7BAFC1E21F1\n" 
+"F7A7FE0120009001AB87221B210020F1F72EFE002808D1\n" 
+"40F2AF12BB49DFF86806F1F71BFD002016BD9DF8040000\n" 
+"F0C7008DF804000FF2B4000088ADF800009DF804008DF8\n" 
+"0100022300AA1B210020F1F7D6FD002808D140F2B312AB\n" 
+"49DFF82806F1F7FBFC002016BDF1F782FC0521F1F76FFE\n" 
+"2020FFF7F7FB0FF274000088ADF80000022300AA1B2100\n" 
+"20F1F7B8FD002808D140F2B9129C49DFF8EC05F1F7DDFC\n" 
+"002016BD0FF24C000088ADF80000022300AA1B210020F1\n" 
+"F7A2FD002808D14FF4DD729149DFF8C005F1F7C7FC0020\n" 
+"16BD207840F001002070012108460FF040FA012016BD00\n" 
+"00060000000700000015020000110A00B583B001200090\n" 
+"01AB87221B210020F1F7B3FD002807D140F2E3127E49C7\n" 
+"48F1F7A1FC00200EBD9DF8040040F038008DF804000FF2\n" 
+"B4000088ADF800009DF804008DF80100022300AA1B2100\n" 
+"20F1F75CFD002807D140F2E5126E49B848F1F782FC0020\n" 
+"0EBD9DF804007F2830D10120009001AB86221B210020F1\n" 
+"F77EFD002807D14FF4F4726349AD48F1F76CFC00200EBD\n" 
+"9DF8040040F040008DF804000FF24C000088ADF800009D\n" 
+"F804008DF80100022300AA1B210020F1F727FD002807D1\n" 
+"4FF4F57254499D48F1F74DFC00200EBDDFF8800B017801\n" 
+"F0FE010170002101200FF0C4F901200EBD000007000000\n" 
+"060001207047F0B587B004460125DFF8880D06680020FF\n" 
+"F735FB0620009005ABAD221B210020F1F731FD002807D1\n" 
+"4FF402723D498648F1F71FFC002072E005A8F1940380EB\n" 
+"8300417821709DF814106170C178A1708178E170417921\n" 
+"710079607100208DF810002846009004AB87221B210020\n" 
+"F1F70EFD002807D140F232222B497548F1F7FCFB00204F\n" 
+"E00020DFF8FC7D00E0401C062804D2015DC25D9142F8D0\n" 
+"0025012D13D1F868411CF9600A2910DB0A2091FBF0F000\n" 
+"EB8002B1EB420008D10FF27000F1F7DBFBF868386101E0\n" 
+"0020F860062221463846F5F7EDFEB868401CB860C82190\n" 
+"FBF1F1C82202FB110000281AD138690390707A0290706C\n" 
+"80680190B06B80680090B4F90430B4F90220B4F900100F\n" 
+"F23000F1F7B2FBB868DFF8701D884201DB0020B8600120\n" 
+"07B0F0BD2808840041434320446174612053616D652025\n" 
+"640000000041522D2025642C25642C25642C2025642C20\n" 
+"25642C2025642C2025640000000038B50546F1F713FB04\n" 
+"460020FFF78AFA0FF2E0000088ADF80000022300AA1B21\n" 
+"0020F1F74BFC002808D140F26322DFF8C41DC448F1F770\n" 
+"FB002032BD14212046F1F7E5FC2020FFF76DFA0FF2AC00\n" 
+"0088ADF80000022300AA1B210020F1F72EFC002808D140\n" 
+"F26722DFF8881DB548F1F753FB002032BD0FF284000088\n" 
+"ADF800008DF80150022300AA1B210020F1F716FC002808\n" 
+"D14FF41A72DFF8581DA948F1F73BFB002032BD0020FFF7\n" 
+"3CFA0FF250000088ADF8000000208DF80100022300AA1B\n" 
+"21F1F7FBFB002808D14FF41B72DFF8241D9C48F1F720FB\n" 
+"002032BD14212046F1F795FC012032BDD02D88001C2788\n" 
+"001808840007C700001200000013000000070030B583B0\n" 
+"0546F1F791FA04460020FFF708FA0120009001AB86221B\n" 
+"210020F1F704FC002808D140F27B22DFF8C41C8448F1F7\n" 
+"F1FA00203EBD9DF80400400627D59DF8040000F0BF008D\n" 
+"F804000FF2FC100088ADF800009DF804008DF801000223\n" 
+"00AA1B210020F1F7A8FB002808D140F27F22DFF87C1C72\n" 
+"48F1F7CDFA00203EBD14212046F1F742FC0FF2C410F1F7\n" 
+"C3FA012211460720FFF7AFFA012812D0012211460720FF\n" 
+"F7A8FA034640F28622DFF8401C6448F1F7AFFA01221146\n" 
+"0720FFF79BFA3EBD2020FFF7ACF90FF294100088ADF800\n" 
+"00022300AA1B210020F1F76DFB002808D14FF42272DFF8\n" 
+"081C5548F1F792FA00203EBD2020FFF793F9002D03D000\n" 
+"208DF8040002E019208DF804009DF80400FFF7F4FE2020\n" 
+"FFF783F90FF248100088ADF80000022300AA1B210020F1\n" 
+"F744FB002808D140F29B22DFF8B41B4048F1F769FA0020\n" 
+"3EBD0020FFF76AF9C7208DF804000FF214100088ADF800\n" 
+"00C7208DF80100022300AA1B210020F1F7F1940310EF83\n" 
+"0025FB002808D140F2A322DFF8781B3148F1F74AFA0020\n" 
+"3EBD14212046F1F7BFFB0020FFF747F90120009001AB90\n" 
+"221B210020F1F743FB002808D140F2A922DFF8441B2448\n" 
+"F1F730FA00203EBD9DF8040040F008008DF804000FF2A4\n" 
+"000088ADF800009DF804008DF80100022300AA1B210020\n" 
+"F1F7EBFA002808D140F2AB22DFF8041B1448F1F710FA00\n" 
+"203EBD0FF274000088ADF80000022300AA1B210020F1F7\n" 
+"D5FA002808D14FF42B72DFF8D81A0948F1F7FAF900203E\n" 
+"BD012211460320F1F7EDFBF3F7ECFADFF8C02AC2E90201\n" 
+"01203EBD00001808840090088400060000005B494E564E\n" 
+"5D20574F4D2066726F6D20534C500011FF000012030000\n" 
+"0700000010000000120080B50020FFF7C2FE002801D100\n" 
+"2002BD0120FFF7A8F8012002BD38B504460020FFF7C5F8\n" 
+"0FF280400088ADF80000022300AA1B210020F1F786FA00\n" 
+"2809D140F20732DFF8381ADFF8FC0DF1F7AAF9002032BD\n" 
+"0FF254400088ADF80000022300AA1B210020F1F76FFA00\n" 
+"2809D14FF44272DFF80C1ADFF8D00DF1F793F9002032BD\n" 
+"0FF22C400088ADF80000022300AA1B210020F1F758FA00\n" 
+"2809D140F20A32DFF8DC19DFF8A00DF1F77CF9002032BD\n" 
+"0FF200400088ADF80000022300AA1B210020F1F741FA00\n" 
+"2809D140F20B32DFF8B019DFF8740DF1F765F9002032BD\n" 
+"0FF2D8300088ADF80000022300AA1B210020F1F72AFA00\n" 
+"2809D14FF44372DFF88019DFF8440DF1F74EF9002032BD\n" 
+"0FF2AC300088ADF80000022300AA1B210020F1F713FA00\n" 
+"2809D140F21132DFF85419DFF8180DF1F737F9002032BD\n" 
+"0FF284300088ADF8000000208DF80100022300AA1B21F1\n" 
+"F7FAF9002809D140F21532DFF82019DFF8E40CF1F71EF9\n" 
+"002032BD0FF254300088ADF80000022300AA1B210020F1\n" 
+"F7E3F9002809D140F21732DFF8F418DFF8B80CF1F707F9\n" 
+"002032BD0FF22C300088ADF80000022300AA1B210020F1\n" 
+"F7CCF9002809D140F21932DFF8C418DFF8880CF1F7F0F8\n" 
+"002032BD2020FEF7F1FF0FF2FC200088ADF80000022300\n" 
+"AA1B210020F1F7B2F9002809D14FF44772DFF89018DFF8\n" 
+"540CF1F7D6F8002032BD0FF2D0200088ADF80000022300\n" 
+"AA1B210020F1F79BF9002809D140F21E32DFF86418DFF8\n" 
+"280CF1F7BFF8002032BD0FF2A8200088ADF80000022300\n" 
+"AA1B210020F1F784F9002809D140F21F32DFF83418DFF8\n" 
+"F80BF1F7A8F8002032BD0FF27C200088ADF80000022300\n" 
+"AA1B210020F1F76DF9002809D140F22132DFF80818DFF8\n" 
+"CC0BF1F791F8002032BD0FF254200088F19403A0F28300\n" 
+"ADF80000022300AA1B210020F1F756F9002809D140F222\n" 
+"32DFF8D817DFF89C0BF1F77AF8002032BD0FF228200088\n" 
+"ADF80000022300AA1B210020F1F73FF9002809D140F223\n" 
+"32DFF8AC17DFF8700BF1F763F8002032BD0FF200200088\n" 
+"ADF80000022300AA1B210020F1F728F9002809D14FF449\n" 
+"72DFF87C17DFF8400BF1F74CF8002032BD1020FEF74DFF\n" 
+"634D012000902B1D82221B210020F1F748F9002809D14F\n" 
+"F44A72DFF84C17DFF8100BF1F734F8002032BD01200090\n" 
+"6B1D83221B210020F1F734F9002809D140F22932DFF824\n" 
+"17DFF8E80AF1F720F8002032BD01200090AB1D84221B21\n" 
+"0020F1F720F9002809D140F22A32DFF8FC16DFF8C00AF1\n" 
+"F70CF8002032BD0120009005F108038E221B210020F1F7\n" 
+"0BF9002809D140F22B32DFF8D416DFF8980AF0F7F7FF00\n" 
+"2032BD0120009005F109038F221B210020F1F7F6F80028\n" 
+"09D14FF44B72DFF8A816DFF86C0AF0F7E2FF002032BD01\n" 
+"20009005F10A0390221B210020F1F7E1F8002809D140F2\n" 
+"2D32DFF88016DFF8440AF0F7CDFF002032BD0020FEF7CE\n" 
+"FE002C16D00FF2CC000088ADF80000022300AA1B210020\n" 
+"F1F78DF8002820D140F23132DFF84816DFF80C0AF0F7B1\n" 
+"FF002032BD0FF2A4000088ADF80000022300AA1B210020\n" 
+"F1F776F8002809D140F23332DFF81816DFF8DC09F0F79A\n" 
+"FF002032BD3220FEF77BFE4FF496720021DFF8240CF9F7\n" 
+"95F90C22002105F10C00F9F78FF90C22002105F11800F9\n" 
+"F789F9012032BD684F880006010000077F000010000000\n" 
+"1100000003000000760000006E00000003400000057000\n" 
+"00000A0000010100000203000010000000110A00001439\n" 
+"0000150200000778000007400178407840EA012000B270\n" 
+"472DE9F04788B08046894614461D4603A800210A460B46\n" 
+"0EC0B8F1020F01D1084600E004200FF274110988ADF800\n" 
+"108DF80100022300AA1B210020F1F708F8002809D140F2\n" 
+"6232DFF83C15DFF80009F0F72CFF00209AE00220009001\n" 
+"ABF0221B210020F1F72CF8002809D140F26632DFF81415\n" 
+"DFF8D808F0F718FF002086E09DF804009DF8051041EA00\n" 
+"20062190FBF1FA00271EE001A800EB4600FFF7ABFF06A9\n" 
+"21F8160059F8261001FA80F149F82610002C07D0296864\n" 
+"22DFF8F43A02FB063222F81100761C032EE4DB2868401C\n" 
+"28607F1C2868574517DA322815DA0620009001ABF2221B\n" 
+"210020F0F7E9FF002809D140F26E32DFF89014DFF85408\n" 
+"F0F7D5FE002043E00026DEE732283EDB002810D000260C\n" 
+"E059F82600296890FBF1F0811000EBF1940330F6830051\n" 
+"70C01003A941F82600761C032EF0DBB8F1020F28D1002C\n" 
+"26D0002620E06420DFF8681A00FB061030F917C04FEAAC\n" 
+"000CEB507003A951F82610C1EBE00204EBC603D3E90001\n" 
+"5243801851EBE27104EBC602C2E900017F1C28688742DF\n" 
+"DB761C032E01DA0027F7E7002008B0BDE8F0874B5D8800\n" 
+"495D880076002DE9FC410D4616461F460024A046214601\n" 
+"91002842D02020FEF77FFD0FF214200088ADF800003B20\n" 
+"8DF80100022300AA1B212046F0F73DFF002809D140F2A1\n" 
+"32DFF8A813DFF86C07F0F761FE2046ECE00FF2E4100088\n" 
+"ADF800001E208DF80100022300AA1B212046F0F723FF00\n" 
+"2809D140F2A632DFF87413DFF83807F0F747FE2046D2E0\n" 
+"2046FEF748FD1420FEF725FD04E045F8240046F8240064\n" 
+"1C032C4046F7DB01900FF294100088ADF80000022300AA\n" 
+"1B214046F0F7FCFE002808D140F2B132C949DFF8EC06F0\n" 
+"F721FE4046ACE0099C002C04D04FF49670FEF7FEFC08E0\n" 
+"6420FEF7FAFC04E03A4629460220FFF7B9FE019832286D\n" 
+"DA0FF244100088ADF80000022300AA1B214046F0F7D2FE\n" 
+"002808D140F2BA32B449DFF89806F0F7F7FD404682E00F\n" 
+"F21C100088ADF80000022300AA1B214046F0F7BCFE0028\n" 
+"08D140F2BB32A949DFF86C06F0F7E1FD40466CE01420FE\n" 
+"F7C2FC002C01D00E2000E010200FF2E4010988ADF80010\n" 
+"8DF80100022300AA1B214046F0F79CFE002808D140F2C3\n" 
+"329949DFF82C06F0F7C1FD40464CE01420FEF7A2FC0FF2\n" 
+"B0000088ADF80000022300AA1B214046F0F783FE002808\n" 
+"D140F2C5328D49DFF8F805F0F7A8FD404633E0002C01AB\n" 
+"8FD1424631460120FFF749FE8EE7002C1FD0B8F1030F1F\n" 
+"DA55F82800019990FBF1F045F828004FF47A71484345F8\n" 
+"280008F10108EDE756F82800019990FBF1F046F828004F\n" 
+"F47A71484346F8280008F10108B8F1030FEEDB08980028\n" 
+"01D0019901600120BDE8F681EC03880002000000150000\n" 
+"0067000000681F0000680000006700000067002DE9F043\n" 
+"87B004460D4616464FF00008474638460FF2901305E03A\n" 
+"4641F820204FF00108401C03280DDADFF8541D41180A79\n" 
+"00A9002AF0D003EB420232F8022C41F82020EEE7B94606\n" 
+"E0DFF8381D884200DB012709F10109B9F1030F1CDA55F8\n" 
+"290054F82910401A0EF0ABFC03A941F82900B8F1000FE8\n" 
+"D100A951F8291090FBF1F0A0F57A700EF09CFC46F82900\n" 
+"B0F5FA7FDFDD0127DDE7002F10D14FF000090AE054F829\n" 
+"000EF08CFCDFF8DC1C884200DB012709F10109B9F1030F\n" 
+"F1DB002F01D0002000E0012007B0F19403C0F98300BDE8\n" 
+"F0838C4F8800A18601002DE9F04186B004460D46174600\n" 
+"20012601460FF2BC0C04E0002042F821003046491C0329\n" 
+"0DDADFF8842C8A18137A03AA002BF1D00CEB430333F802\n" 
+"3C42F82130EEE700284FF0000832D1B8F1030F32DA55F8\n" 
+"280054F82810401A0EF047FC00A941F8280003AA52F828\n" 
+"1090FBF1F0A0F57A700EF03BFC47F82800B0F5FA7F00DD\n" 
+"002608F10108E0E755F8280054F82810401A0EF02BFC00\n" 
+"A941F82800DFF8741D0818DFF8741D884200D3002608F1\n" 
+"0108B8F1030FE8DB002E01D1002000E0012006B0BDE8F0\n" 
+"81000028088400D02D88003C0A560A700A8B0AA60AC10A\n" 
+"DD0AF80A150B310B4E0B6B0B880BA50BC30BE10B000C1E\n" 
+"0C3D0C5D0C7C0C9C0CBD0CDD0CFE0C1F0D410D630D850D\n" 
+"A80DCB0DEE0D120E360E5A0E7F0EA40ECA0EEF0E160F3C\n" 
+"0F630F8B0FB30FDB0F03102C1056108010AA10D4100011\n" 
+"2B1157118311B011DE110B12391268129712C712F71227\n" 
+"1359138A13BC13EF13221455148914BE14F31429155F15\n" 
+"9515CD1504163D167616AF16E91624175F179B17D81715\n" 
+"1852189118CF180F194F199019D119131A561A9A1ADE1A\n" 
+"221B681BAE1BF51B3D1C851CCE1C181D621DAD1DF91D46\n" 
+"1E941EE21E311F811FD11F23207520C8201C217121C721\n" 
+"1D227422CD2226238023DA2336249324F1244F25AF250F\n" 
+"267126D32636279B2700286728CE283629A0290B2A762A\n" 
+"E32A512BC02B302CA12C132D862DFB2D712EE82E602FD9\n" 
+"2F5330CF304C31CA314A32CA324C33D0335434DA346235\n" 
+"EA35743600378D371B38AA383C39CE39623AF83A8F3B27\n" 
+"3CC13C5D3DFA3D983E383FDA3F7E402341CA4172421C43\n" 
+"C84376442545D64589463D47F447AC486649224ADF4A9F\n" 
+"4B614C244DEA4DB14E7B4F46501451E351B55289535E54\n" 
+"36551156ED56CB57AC588F59745A5C5B465C325D215E12\n" 
+"5F0560FB60F361EE62EB63EB64ED65F266FA670469116A\n" 
+"206B336C486D5F6E7A6F9770B871DB7201742A75567685\n" 
+"77B778EC79247B5F7C9D7DDF7E2480000010B582B02020\n" 
+"FEF78FFADFF8404B01200090A31D80221B210020F0F789\n" 
+"FC002808D140F27942DFF8281B6548F0F776FB002016BD\n" 
+"01200090E31D81221B210020F0F776FC002808D140F27A\n" 
+"42DFF8001B5B48F0F763FB002016BD0120009004F10803\n" 
+"82221B210020F0F762FC002808D140F27B42DFF8D81A51\n" 
+"48F0F74FFB002016BD01200090E31C90221B210020F0F7\n" 
+"4FFC002808D140F27C42DFF8B41A4848F0F73CFB002016\n" 
+"BD01200090231D91221B210020F1940350FD8300F0F73C\n" 
+"FC002808D140F27D42DFF88C1A3E48F0F729FB002016BD\n" 
+"0120009004F1090394221B210020F0F728FC002808D140\n" 
+"F27E42DFF8641A3448F0F715FB002016BD0120009004F1\n" 
+"0A0395221B210020F0F714FC002808D140F27F42DFF83C\n" 
+"1A2A48F0F701FB002016BD0020FEF702FA01200090631D\n" 
+"83221B210020F0F7FEFB002808D140F28242DFF8101A1F\n" 
+"48F0F7EBFA002016BD01200090234685221B210020F0F7\n" 
+"EBFB002808D140F28342DFF8EC191648F0F7D8FA002016\n" 
+"BD01200090A31C87221B210020F0F7D8FB002808D140F2\n" 
+"8442DFF8C4190C48F0F7C5FA002016BD01200090631C86\n" 
+"221B210020F0F7C5FB002808D140F28542DFF8A0190348\n" 
+"F0F7B2FA002016BD012016BD1808840010B582B02020FE\n" 
+"F7ADF90020ADF80000DFF87449A0798DF80100022300AA\n" 
+"1B210020F0F76BFB002809D140F28D42DFF85C190FF684\n" 
+"10F0F78FFA002016BD0FF220200088ADF80000E0798DF8\n" 
+"0100022300AA1B210020F0F751FB002809D140F28E420F\n" 
+"F664110FF65010F0F775FA002016BD0FF2F0100088ADF8\n" 
+"0000207A8DF80100022300AA1B210020F0F737FB002809\n" 
+"D140F28F420FF630110FF61C10F0F75BFA002016BD0FF2\n" 
+"C0100088ADF80000E0788DF80100022300AA1B210020F0\n" 
+"F71DFB002809D14FF492620FF6FC010FF6E800F0F741FA\n" 
+"002016BD0FF290100088ADF8000020798DF80100022300\n" 
+"AA1B210020F0F703FB002809D140F291420FF6C8010FF6\n" 
+"B400F0F727FA002016BD0FF260100088ADF80000607A8D\n" 
+"F80100022300AA1B210020F0F7E9FA002809D140F29242\n" 
+"0FF694010FF68000F0F70DFA002016BD0FF230100088AD\n" 
+"F80000A07A8DF80100022300AA1B210020F0F7CFFA0028\n" 
+"09D140F293420FF660010FF64C00F0F7F3F9002016BD00\n" 
+"20FEF7F4F80FF2F8000088ADF8000060798DF801000223\n" 
+"00AA1B210020F0F7B2FA002809D140F296420FF624010F\n" 
+"F61000F0F7D6F9002016BD0FF2C8000088ADF800002078\n" 
+"8DF80100022300AA1B210020F0F798FA002809D140F297\n" 
+"420FF2F0710FF2DC70F0F7BCF9002016BD0FF660000088\n" 
+"ADF80000A0788DF80100022300AA1B210020F0F77EFA00\n" 
+"2809D14FF493620FF2BC710FF2A870F0F7A2F9002016BD\n" 
+"0FF630000088ADF8000060788DF80100022300AA1B2100\n" 
+"20F0F764FA002809D140F299420FF288710FF27470F0F7\n" 
+"88F9002016BDF0F70FF91E21F0F7FCFA012016BD0000A0\n" 
+"4F88000100000002000000100000001100000014000000\n" 
+"1500000003000000050030B5F19403E000840083B00446\n" 
+"0020ADF80600F0F7F0F80546FFF7D4FD012859D100208D\n" 
+"F804000FF2B0700088ADF8000000208DF80100022300AA\n" 
+"1B21F0F722FA002809D140F2CD420FF204710FF2F060F0\n" 
+"F746F900203EBD0120FEF736FE0020F0F73AFB01202070\n" 
+"2846407DC046012829D001212846F0F7AEFABDF8060040\n" 
+"1CADF80600BDF806003228EDDB0020FEF72DF801200090\n" 
+"01AB99221B210020F0F729FA002809D140F2DC420FF2A4\n" 
+"610FF29060F0F715F900203EBD9DF804100FF21C70F0F7\n" 
+"0DF9BDF806000020F0F704FB00F078F9FFF758FE012801\n" 
+"D000203EBD01203EBD2DE9F04F9DB004460D4613A80021\n" 
+"0A460B460EC00AA80EC010A80EC00DA80EC004A80EC00E\n" 
+"C016A81821E9F7C3FFDFF8040640680390002637463046\n" 
+"02904FF00208FFF74DFD012840F03181022C01D1012000\n" 
+"E03046FEF70DFF012840F0278101E0A8F10108B8F1010F\n" 
+"11DB022C01D1012000E03046019002A8009016AB0DAA0A\n" 
+"A93046FFF733FA0128EAD1B046EAE7012840F00C81022C\n" 
+"B4461FD1BCF1030F1FDA0AA951F82C104FF4FA5291FBF2\n" 
+"F1DFF8082402EB8C02D1600CF1010CEDE70DA951F82C10\n" 
+"4FF4FA5291FBF2F1DFF8EC2302EB8C0291610CF1010CBC\n" 
+"F1030FEEDB4FF0020801E0A8F10108B8F1010F11DB022C\n" 
+"01D1012000E03046019002A80090334610AA13A90120FF\n" 
+"F7F0F90128EAD1B046EAE7012840F0C980DDE916890DF1\n" 
+"580BDBE902018246DBE904018146022C31D104AA13A90A\n" 
+"A8FFF7FEFA0746B44611E002984FF4C85101FB00F2D317\n" 
+"0BEBCC0EDEE900018B4203DC01DB824200D237460CF101\n" 
+"0CBCF1030FEADB002F18D0B446BCF1030F14DA0AA850F8\n" 
+"2C004FF4FA5190FBF1F0039901EB4C01A1F858000CF101\n" 
+"0CEDE707AA10A90DA8FFF737FB0646022C6DD101202870\n" 
+"EF71C34804A90278002A06D142F2067204924A608A60FF\n" 
+"22EA71049A6A70049A1212AA704A68EA704A6812122A71\n" 
+"8A686A7189680912A97102992972029909126972029909\n" 
+"14A97202990916E972C1682973C16809126973C1680914\n" 
+"A973C1680916E9730169297401690912697401690914A9\n" 
+"7401690916E9744169297541690912697541690914A975\n" 
+"40690016E87585F818804FEA282068764FEA2840A8764F\n" 
+"EA2860E87685F81CA04FEA2A2068774FEA2A40A8774FEA\n" 
+"2A60E87785F820904FEA292085F821004FEA294085F822\n" 
+"004FEA296085F82300012C12D101202870079868700798\n" 
+"0012A87007A84168E97041680912297181686971806800\n" 
+"12A871EE71FFF7F9FC0128F19403700484000ED133463A\n" 
+"4621460FF24C40EFF79CFF022C01D1002F03D0012C03D1\n" 
+"002E01D1002000E001201DB0BDE8F08F1CB5DFF8544360\n" 
+"78002807D10020FDF767FE012200210320F0F77AF90020\n" 
+"FDF783FE01208DF804000FF21C400088ADF8000001208D\n" 
+"F80100022300AA1B210020F0F73EF8002809D140F2EF52\n" 
+"0FF23C310FF22830EFF762FF002016BD0120009001AB90\n" 
+"221B210020F0F762F8002809D140F2F1520FF214310FF2\n" 
+"0030EFF74EFF002016BD9DF8040000F0F7008DF804000F\n" 
+"F2B8300088ADF800009DF804008DF80100022300AA1B21\n" 
+"0020F0F709F8002809D140F2F3520FF2D4210FF2C020EF\n" 
+"F72DFF002016BD2020FDF72EFE00208DF804000FF27C30\n" 
+"0088ADF8000000208DF80100022300AA1B21EFF7EAFF00\n" 
+"2809D14FF4BF620FF294210FF28020EFF70EFF002016BD\n" 
+"02208DF804000FF248300088ADF8000002208DF8010003\n" 
+"4600AA1B210020EFF7CDFF002809D140F2FB520FF25C21\n" 
+"0FF24820EFF7F1FE002016BD0FF218300088ADF8000002\n" 
+"2300AA1B210020EFF7B6FF002809D140F2FD520FF22C21\n" 
+"0FF21820EFF7DAFE002016BD0020FDF7DBFD2078032803\n" 
+"D140208DF804000EE0022803D178208DF8040008E00128\n" 
+"03D147208DF8040002E07F208DF804000FF2BC200088AD\n" 
+"F800009DF804008DF80100022300AA1B210020EFF782FF\n" 
+"002809D140F20B620FF2C4110FF2B010EFF7A6FE002016\n" 
+"BD012016BD00000000684F880021EF7700C1F44F0010B5\n" 
+"04462078012806D12046FFF725FD002810D0012010BD20\n" 
+"780228FAD121460120FFF789FD0028F4D121460120FFF7\n" 
+"83FD0028EED1002010BD80B50878002820D10022012110\n" 
+"46FDF765FE012814D0002201211046FDF75EFE034640F2\n" 
+"27620FF240110FF2A410EFF764FE002201211046BDE808\n" 
+"40FDF74EBE0FF2FC10EFF759FE1FE0012211460720FDF7\n" 
+"44FE012814D0012211460720FDF73DFE034640F22D620F\n" 
+"F200110FF26410EFF743FE012211460720BDE80840FDF7\n" 
+"2DBE0FF2C010EFF738FE012002BD30B583B000242046AD\n" 
+"F80400FDF734FD0220009001AB98221B212046EFF730FF\n" 
+"002809D140F23B620FF2B0010FF29C00EFF71CFE20463E\n" 
+"BD9DF80500000700D501249DF80400800701D544F00204\n" 
+"9DF80400400701D544F00404144DE00711D5F1F7FFFED5\n" 
+"E90223801A9941002905DC02DBB0F57A7F01D224F00104\n" 
+"0FF24010EFF7F4FD012229780320EFF7E9FF20463EBD00\n" 
+"0090C1C7FFC98070002431880028088400EC038800495D\n" 
+"8800D02D880080B50FF2F194030008840018110020F8F7\n" 
+"B0FA0FF230110B20BDE80440F8F7A9BA00005B494E564E\n" 
+"5D25733A25640A00000000443A5C4D43555C53454E534F\n" 
+"525F6B616C6D6961615F5452454C54455F4252434D5F4E\n" 
+"6F746550435C4D43555C50726F6A6563745C5353505F53\n" 
+"656E736F724875625C53485F48414C5C7372635C416363\n" 
+"656C65726F6D657465725F49434D32303632382E630000\n" 
+"5B494E564E5D25733A256420657272203D202578000000\n" 
+"000700000006000000100000005B494E564E5D20535430\n" 
+"2D3228256429000000005B494E564E5D73656C665F7265\n" 
+"73756C743D25645F25645F256400000600000010000000\n" 
+"1200000015000000110A0000070000004C5046204F6666\n" 
+"004C5046204F6E00005B534D415D20574F4D000000B3E8\n" 
+"8300D3E8830053EA830043EB83000000000047EB830000\n" 
+"00000085068400BF068400B3E8830017F083009D048400\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000FB480B50DF0ACFCDA48052141700021017001714171\n" 
+"D84802A95822E9F7C8FC092200210846F8F773FC022801\n" 
+"D1022000E0012002BC5DF814FB80B5092200210120F8F7\n" 
+"65FC032801D1032002BDBDE8014048E110B5C74C94F901\n" 
+"0005280AD100F0E3F8002822D0042060700DF078FCBDE8\n" 
+"1040F8E0042819D100F0B7F8002808D003202070052060\n" 
+"700DF069FCBDE8104028E100F051F9002808D002202070\n" 
+"052060700DF05CFCBDE810401BE1012010BD80B5F8F72A\n" 
+"FCAE498860AF49C0F8C81100F5E470AE494160AE498160\n" 
+"0FF21101C1600FF295010161012002BD00000020A44902\n" 
+"46CA708A6892F8B121002A0FD091F90020002A02D00220\n" 
+"C870012091F90420012A04D1C87840F00400C870012070\n" 
+"47974800210170C17001710120704710B58CB0044600A8\n" 
+"0FF087FD0198A04204D3001BC0B200EE100A04E0803800\n" 
+"1BC0B200EE100AB8EE400ADDED070A20EE200A10EE100A\n" 
+"F8F7EEFE41EC100B0CB010BD834801210171704778B481\n" 
+"4A92F903309C0717D540F249140D7814FB050501262E70\n" 
+"0D7814FB05056E700D7814FB05050926AE700D7814FB05\n" 
+"041578E5700C78641C0C705B071DD540F249140B7814FB\n" 
+"030301251D700B7814FB030303255D700B7814FB030309\n" 
+"259D700B7814FB03030125DD700B7814FB030052780271\n" 
+"0878401C087071BC93E730B58DB0002420468DF8000001\n" 
+"A8F8F7E8FB4FF47A705D4D00ABE98800FB01F2A9884143\n" 
+"6D88684301AD95EC030A0DF0E3FB022800D1012420460D\n" 
+"B030BD30B58DB00024F19403900B840020468DF8000001\n" 
+"A8F8F7C9FB4FF47A704D4D00ABE98800FB01F2A9884143\n" 
+"6D88684301AD95EC030A0DF0C4FB012800D1012420460D\n" 
+"B030BD70B5B8B001240020ADF884008DF82D000DF12D06\n" 
+"0A2070700020B070F0703B4D95F90500002827D1AA208D\n" 
+"F88A003C208DF88B0020468DF88C0000208DF82C000320\n" 
+"8DF82D000DF12F0022A95522E9F76BFB0A2070700020AD\n" 
+"F884000BA8F8F70BFC002801D1022406E000A80FF0B2FC\n" 
+"0198A87020466871204638B070BD30B597B00124214D95\n" 
+"F9050001281ED10020ADF858008DF801000DF101000A21\n" 
+"417000218170C17021468DF8001003218DF801100A2141\n" 
+"700020ADF8580000A8F8F7DBFB002800D1032400206871\n" 
+"204617B030BD10B52DED028B00240C488078FFF7ECFEB0\n" 
+"EE408AF0EE608A0948007AF8F70FFD02460B4651EC180B\n" 
+"05F059FD00D801242046BDEC028B10BD0000E40288005C\n" 
+"818800610984009B098400B509840080B5AA48C16891F8\n" 
+"1115002901D1002002BD012101710FF0B0FE00280AD010\n" 
+"F0AEFB01460FF2D420EFF752FB0FF0A9FE012002BD0020\n" 
+"02BD0FB400B597B00FF05BFD9A4800218170C170017141\n" 
+"70BDF8620000F013F9BDF8640000F00DF901208DF86400\n" 
+"AA208DF862003C208DF8630000208DF8000003208DF801\n" 
+"000DF1030018A95522E9F7C0FA0A208DF8020000A8F8F7\n" 
+"62FB002805D10FF27420EFF718FB022000E0012017B05D\n" 
+"F814FB00B597B00FF0BAFD01208DF8000003208DF80100\n" 
+"0A208DF8020000A8F8F746FB002801D1032000E0012017\n" 
+"B000BD70B504460D4640F24916287816FB004001210170\n" 
+"10F046FB01281AD1287816FB004005214170287816FB00\n" 
+"401B2181700FF21820EFF7DFFA287816FB00400221C170\n" 
+"287816FB00401E2141710FF03DFE18E010F02EFB012814\n" 
+"D1287816FB004001214170287816FB00401B2181700FF2\n" 
+"E810EFF7C0FA287816FB00400121C1700FF033FE287840\n" 
+"1C2870BDE870400FF00BBE70B5A0B04F4E304609F0D1F8\n" 
+"14A8FAF770F930684A4C2169411A89B2002904D12278B6\n" 
+"F84A309A4203D02061B6F84A002070E068D0F814553160\n" 
+"A068807AC046C0469DF850001390314683B068465822E9\n" 
+"F734FA0EBCADB2284610F047FF6070A07801281CD117A8\n" 
+"EFF778FD1BA80268436843EC122B19A80268436843EC11\n" 
+"2B17A80268436843EC102B9DF877209DF876109DF87500\n" 
+"00F02DF80020A07006E0E078012803D100F02FF80020E0\n" 
+"70012020B070BD10B5224CEFF7DFF9A060F8F7ABF9E060\n" 
+"EFF7D9F9A0600020F19403200F8400206120700FF0D5FC\n" 
+"E0681C49C0F8281500F228501A4941601A4981601A49C1\n" 
+"601A490161012010BD80B5D2B2C9B2C0B20FF0C9FDBDE8\n" 
+"01400FF0B8BD0FF0BEBD0FF0F8BC0FF0E5BC0FF006BD0F\n" 
+"F020BD80B510F078FA002805D006480079002801D10120\n" 
+"02BD002002BD0248012181707047000020858800348588\n" 
+"00210D8400950D8400550E8400E90C8400C30D840010F0\n" 
+"9EBA10F0A0BAC9B210F0ACBA0FF065BD0FF0B5BC80B510\n" 
+"F09AFBC0B202BD80B510F06BFBC0B202BD10F06CBE10F0\n" 
+"6BBE00004C5420436D6452656164795F53532025640000\n" 
+"004C54205065646F4F70656E4661696C20535300004C54\n" 
+"205245515545535420504F5300004C5420524551554553\n" 
+"542041434B000038B5F9F724FF0446FFF79CFF002801D0\n" 
+"012028E0E4B2002C0BD0FFF7BEFF002805D00FF2DC30EF\n" 
+"F7B1F901201BE0002019E0FFF7BEFF0446D64D28780028\n" 
+"00D12C70287884420DD02046012803D1FFF7A4FF012004\n" 
+"E0022801D1012000E000202C7000E00020CB49496891F8\n" 
+"7115002900D1002032BD0FB400B597B0C5480021017040\n" 
+"6890F87015002946D190F87105002842D100208DF80000\n" 
+"1B208DF801000DF1030018A95522E9F70CF90A208DF802\n" 
+"0000A8F8F7AEF9002805D10FF24C30EFF764F9022029E0\n" 
+"02208DF862004FF49660ADF868000020CDF863008DF867\n" 
+"008DF800001A208DF801000DF1030018A95522E9F7E7F8\n" 
+"0A208DF8020000A8F8F789F9002805D10FF21430EFF73F\n" 
+"F9022004E04FF49660FFF73EFF012017B05DF814FB00B5\n" 
+"97B00FF20430EFF72FF901208DF800001B208DF801000A\n" 
+"208DF8020000A8F8F767F9002801D103201AE001208DF8\n" 
+"00001A208DF801000A208DF8020002208DF805000020AD\n" 
+"F80B00CDF806008DF80A0000A8F8F74DF9002801D10320\n" 
+"00E0012017B000BD2DE9F84F2DED028B92B004460D46FF\n" 
+"F7D5FE40F24916297816FB014101220A70297816FB0141\n" 
+"002840F0A28010464870287816FB00401D218170287816\n" 
+"FB004000214171FFF7EAFE002805D0FFF7D6FE82465FFA\n" 
+"8AFA01E04FF0000A287816FB004080F807A04FF0000870\n" 
+"E0414600A8FFF7C8FEFFF7D9FE8146C8EB4817287816FB\n" 
+"004038189DF829104FF461620DF129035B78C3EB031C4F\n" 
+"EA8C0312FB01310DF12902927851FA82F14FF47A72BDF9\n" 
+"2C3002FB0131C0F81B109FED518B287816FB004007EB00\n" 
+"0BDDE9002351EC180BF8F736FA05F018FBCBF80B002878\n" 
+"16FB004007EB000BDDE9022351EC180BF8F727FA05F009\n" 
+"FBCBF80F002878F19403B012840016FB004007EB000B02\n" 
+"A8D0E9022300203E49F8F717FA05F0F9FACBF813002878\n" 
+"16FB004038180BA94969C0F81F10287816FB004038180B\n" 
+"A9498BA0F81910287816FB00403818C0F8239008F10108\n" 
+"5FFA88F8D0458CDBFFF755FE287816FB00400521A0F843\n" 
+"11287816FB00402D49C0F8451112E005204870287816FB\n" 
+"00401D218170287816FB004011464171287816FB00400F\n" 
+"218171FFF73AFE2878401C287012B0BDEC028BBDE8F18F\n" 
+"10B584B000A8F9F7F1FE1C4C204600A90B22E8F7C0FF61\n" 
+"782078FFF731FE012004B010BD80B5F7F774FF0E4B5860\n" 
+"0E49C0F8881500F288500D4941600D4981600D49C1600F\n" 
+"4901610522002103F10800F7F70CFA012002BD00000000\n" 
+"000080842E4100408F40CC818800A31084004F1184005B\n" 
+"1384002D108400D4818800DC818800B511840010B50446\n" 
+"21460FF27800EEF7E5FF2046BDE81040FFF7B4BDFFF7B4\n" 
+"BD10B5044621460FF26800EEF7D7FF2046BDE81040FFF7\n" 
+"ACBD10B5044621460FF26000EEF7CBFF2046BDE81040FF\n" 
+"F79EBD4C5420436D644154440000004C54204F70656E20\n" 
+"6661696C000000004C54204154204F70656E206661696C\n" 
+"004C542053544F50004C54205365745754202564004C54\n" 
+"20536574534152202564000000004C5420536574535220\n" 
+"2564000FB400B597B0DFF8AC0701210177406A90F84015\n" 
+"00293CD190F84105002838D100208DF8000003208DF801\n" 
+"000DF1030018A95522E8F718FF0A208DF8020000A8F7F7\n" 
+"BAFF002822D000208DF86200ADF86800CDF863008DF867\n" 
+"008DF800001A208DF801000DF1030018A95522E8F7FCFE\n" 
+"0A208DF8020000A8F7F79EFF002806D01C2200210846F7\n" 
+"F7AFFE022801D1022000E0012017B05DF814FB00B597B0\n" 
+"1C2200210120F7F7A0FE022801D1022029E001208DF800\n" 
+"0003208DF801000A208DF8020000A8F7F778FF002801D1\n" 
+"032019E001208DF800001A208DF801000A208DF8020000\n" 
+"208DF80500ADF80B00CDF806008DF80A0000A8F7F75FFF\n" 
+"002801D1032000E0012017B000BD70B586B0DFF8A84620\n" 
+"6800280DD1DFF8A4663068002808D1204608F02AFD3046\n" 
+"21465822E8F7ACFE02E0204608F021FDDFF8846606F10C\n" 
+"000ECE0EC00C3E02A8F9F7B9FD304602A90B22E8F789FE\n" 
+"DFF85C56707868763178307B814204D029760FF26C60EE\n" 
+"F7E0FE00A8EFF782F99DF8000028739DF8010068739DF8\n" 
+"0200A873BDF80300A5F80F00DFF82866E86C2168326889\n" 
+"1A10FA81F0E86400F02BF9304621465822E8F76CFE0120\n" 
+"06B070BD10B5F1940340168400DFF8F845F7F712FE6062\n" 
+"002060750120A0750320E0754FF4FA70A062DFF8EC05E0\n" 
+"624EF6602020630FF20C60EEF7A4FE00202077E0632064\n" 
+"6064A0642083E076A06358220146DFF8BC05F7F79CF858\n" 
+"220021DFF8AC05F7F796F8EEF718FE20620020A0760120\n" 
+"E0770020A077606ADFF8A015C0F8581500F25850DFF898\n" 
+"154160DFF8941581600FF21101C1600FF2410101610120\n" 
+"10BD000080B5DFF86005416A91F84115002901D1002002\n" 
+"BD90F91400012801D1012001E000F09FF840B202BDDFF8\n" 
+"380500214163017501207047000070B5DFF8283593F914\n" 
+"20012A2BD15A6B002A20D040F249140D7814FB05050126\n" 
+"2E700D7814FB05056E700D7814FB05051C26AE700D7814\n" 
+"FB05050126EE700D7814FB0505AA800D7814FB0500C0F8\n" 
+"06300878401C087011460FF22450EEF724FEBDE87040C4\n" 
+"E7DA7F012A23D140F249140A7814FB0202012515700A78\n" 
+"14FB020255700A7814FB02021C2595700A7814FB020202\n" 
+"25D5705A7F0B7814FB030082720878401C087011460FF2\n" 
+"EC40BDE87040EEF7FABD70BD0146891E012903D9891E01\n" 
+"2905D908E0DFF8641401224A7503E0DFF8581400224A75\n" 
+"01460FF2D440EEF7E3BDDFF8481400EB80028A6201460F\n" 
+"F2D840EEF7D9BD38B50446DFF8305441F2883010FB04F0\n" 
+"E862F7F75EFF0022DFF83C34F7F767FF05F05FF8286321\n" 
+"460FF2BC40BDE83440EEF7BFBD38B50024DFF8FC53686A\n" 
+"90F81015002903D190F81105002813D00120E877FFF7C1\n" 
+"FB6877A97F002900D1A877A97F884209D00146012901D0\n" 
+"022900D10124A87701E02046E877204632BDF0B583B000\n" 
+"2500A829460A4606C0DFF8A843E06B10F1100F01D21430\n" 
+"E063E07E002800F0C580022801D06BD30BE1217E042934\n" 
+"D1607D002813D1606C14306064E26A9042C0F0FF80E26B\n" 
+"206B8242C0F0FA800125002060640FF22040EEF76AFDF1\n" 
+"E010466064206A827AA37E1A430FD1E26B206B824204D3\n" 
+"01250FF21840EEF759FD0FF22840EEF755FD0120A076DA\n" 
+"E0807A012840F0D7802846A076D3E0022901D0032915D1\n" 
+"206C1430206442F211729042C0F0C880E26B206B904280\n" 
+"F0C38001250020206403460FF2F430EEF732FDB9E00129\n" 
+"40F0B780A06C00F11403A3644EF661208342C0F0AE80E2\n" 
+"6B206B904280F0A98001250020E0760FF2E030EEF719FD\n" 
+"A0E0217E022901D003290FD1E36CA06A8342C0F09780E2\n" 
+"6B206B8242C0F0928001250FF2D030EEF704FD8BE00429\n" 
+"28D1606C14306064627E002A13D142F211729042C0F07F\n" 
+"80E26B206BF19403D019840090427AD201250220E07600\n" 
+"20606403460FF2B430EEF7E8FC6FE0E26B206B90426BD2\n" 
+"01250220E0760020606403460FF2B430EEF7D9FC60E001\n" 
+"295ED1A06C00F11403A3644EF66120834256D3E26B206B\n" 
+"904252D201250020E0760FF2A430EEF7C3FC4AE0217E02\n" 
+"2916D1206C14302064626441F2893290423FD3206BE26B\n" 
+"90423BD20120E07628462064012502460FF28C30EEF7A9\n" 
+"FC30E0042916D1606C14306064226441F28932904226D3\n" 
+"206BE26B904222D20220E07628466064012502460FF270\n" 
+"30EEF790FC17E0032915D1206C14302064626441F28932\n" 
+"90420DD3206BE26B904209D20120E07628462064012502\n" 
+"460FF25830EEF777FC207F012809D10020207701252846\n" 
+"207601460FF25430EEF76AFC012D40F0A780257E042D36\n" 
+"D1A06B461CA663606B002809D1207B6070607BA070A07B\n" 
+"E070002020710520606304208DF8000000A80421417081\n" 
+"70617D012902D10121C17001E00021C170042101712670\n" 
+"676B052200A93819F2F758FF781D6063002E6DD0012020\n" 
+"750020A063E26B29460FF2F020EEF72EFC62E0022D01D0\n" 
+"032D2ED1A06B461CA663606B002809D1207B6070607BA0\n" 
+"70A07BE070002020710520606302208DF8000000A80221\n" 
+"41708170C17001712670676B052200A93819F2F725FF78\n" 
+"1D6063002E3AD0012020750020A063E26B29460FF2A820\n" 
+"EEF7FBFB2FE0012D2DD1A06B461CA663606B002809D120\n" 
+"7B6070607BA070A07BE070002020710520606301208DF8\n" 
+"000000A8012141708170C17001712670676B052200A938\n" 
+"19F2F7F4FE781D6063002E09D0012020750020A063E26B\n" 
+"29460FF25C20EEF7CAFB0020E06320646064A064E0640F\n" 
+"F26420EEF7C0FBF7BD000048778800F077880098778800\n" 
+"4878880020BF02008914840023158400911584000000E0\n" 
+"3F5B41504452204C545D205472616E73204D6F64652025\n" 
+"64005B41504452204C545D20494E495420303231372D33\n" 
+"0000005B41504452204C545D2042756666657253697A65\n" 
+"3A2564005B41504452204C545D2053746179496E666F3A\n" 
+"25640000005B41504452204C545D206770732053746120\n" 
+"25640000000041504452205365745F5357554E20256400\n" 
+"00000041504452205365745F5457555320256400000000\n" 
+"5B41504452204C545D205245512D563120256420256400\n" 
+"005B41504452204C545D205245512D5632202564202564\n" 
+"00005B41504452204C545D2041505F4E4F54534C50005B\n" 
+"41504452204C545D205245512D56332025642025642025\n" 
+"64000000F19403601D84005B41504452204C545D205245\n" 
+"512D56342025642025642025640000005B41504452204C\n" 
+"545D205245512D57312025642025642025640000005B41\n" 
+"504452204C545D205245512D5732202564202564202564\n" 
+"0000005B41504452204C545D205245512D573320256420\n" 
+"25642025640000005B41504452204C545D205245512D57\n" 
+"342025642025642025640000005B41504452204C545D20\n" 
+"5245512D533120256420256400005B41504452204C545D\n" 
+"205245512D533220256420256400005B41504452204C54\n" 
+"5D205245512D533320256420256400005B41504452204C\n" 
+"545D2041504453542C202564005B41504452204C545D20\n" 
+"56656869636C653A202564202564000000005B41504452\n" 
+"204C545D2057616C6B3A2025642025640000005B415044\n" 
+"52204C545D2053746174696F6E6172793A202564202564\n" 
+"005B41504452204C545D20526573657400182200210248\n" 
+"F6F78ABC0148704700001C5C880080B5FFF7F8FF684908\n" 
+"600FF2910101600FF2A50141600FF2A50181600FF2A101\n" 
+"C1600FF20D0101610FF23901416101BD30B583B004465D\n" 
+"4D207869698847002009E004EB40014A78897841EA0221\n" 
+"00AA22F81010401C0328F3DB00A8E968884700203EBD30\n" 
+"B583B00446504D28698047207000A8A968884700200AE0\n" 
+"04EB400100AA32F910301B124B7032F810208A70401C03\n" 
+"28F2DB00203EBD000080B511F03DFD11F056FE41480068\n" 
+"804740480068BDE8024000470000704700007047000073\n" 
+"B52DED048B8EB0B0EE408AF0EE608AB0EE419A14460020\n" 
+"0090BDF84800ADF80C0003A8BDF84A104180BDF84C1081\n" 
+"802E4D00AA01A96B689847002001AE0FE036F9101000EE\n" 
+"101AB8EEC00ADFED250A80EE200A0BA901EB800181ED00\n" 
+"0A401C0328EDDBB0EE480A8DED080A08A8B0EE680A80ED\n" 
+"010AB0EE490A80ED020A05AA0BA9AB6998470098207005\n" 
+"98E06005A84168A16080686060BDF9040000EE100AB8EE\n" 
+"C00AF2EE040A80EE200A84ED040AB6F9020000EE100AB8\n" 
+"EEC00A80EE200A84ED050AB6F9040000EE100AB8EEC00A\n" 
+"80EE200A84ED060A00200EB0BDEC048B76BD000000401C\n" 
+"46F061880028CF8800ECD1880010B5264C2046ECF709FB\n" 
+"254820602548A060254820602548A0600020E060206123\n" 
+"4A24492046BDE81040ECF7F1BA38B504460D46200002D0\n" 
+"1848C06818B126211D48F6F754FB1548C4600561E3F717\n" 
+"FF1249BDE83440ECF7AEBC30B589B004000D4603D13321\n" 
+"1448F6F741FBE3F707FF014602A8EDF796F9014600A8ED\n" 
+"F720FDF19403F02084002246A9B2EDF721FD012102A8ED\n" 
+"F77BF902A8C046C04609B030BD000030E78800BC648600\n" 
+"D0648600BC608600D46086002480890057448200F46086\n" 
+"002DE9F14787B00C46174698460025A9469DF81C0010F0\n" 
+"070003D002282FD02CD33EE006200021E8F706FF5FEA00\n" 
+"0A03D15A216F48E2F714FE5046E8F7C2FF46B29EB99DF8\n" 
+"1C00000910F0070005D002281AD016D303281AD01CE064\n" 
+"224FF400715046E8F723FF46B2EEB15046E8F7AFFF5046\n" 
+"E8F7FCFE30465FE00720D2E70820D0E74FF4C872E9E74F\n" 
+"F44872E6E74FF44862E3E75046E8F79AFF5046E8F7E7FE\n" 
+"4FF0FF3049E0BFB27FB19DF81C00C0F3C00008B14FF400\n" 
+"450095ADF80440CDF80880ADF806704FF00109109880B2\n" 
+"C8B109EB4901890000AA45F002038B5009EB490102EB81\n" 
+"018C8009EB490102EB8101119A8A6009EB490100AA02EB\n" 
+"8101C88009F101094A4600A95046E8F734FF0400504606\n" 
+"D5E8F75BFF5046E8F7A8FE60B20BE0E8F754FF44B21CB1\n" 
+"FB213048E2F797FD5046E8F79BFE204608B0BDE8F0872D\n" 
+"E9F14382B00D46164698460A9C0B9F0197A4B2009492B2\n" 
+"89B2FFF751FF002843D5019700944346B2B2A9B20298FF\n" 
+"F747FF002839D54FF006099DF8080010F007000CD00228\n" 
+"08D031BF4FF0070940F23B111748E2F764FD01E04FF008\n" 
+"0900214846E8F748FE5FEA000904D140F241110F48E2F7\n" 
+"55FD002201214846E8F776FE4846E8F754FE0197009443\n" 
+"46B2B2A9B20298FFF715FF002807D5019700944346B2B2\n" 
+"A9B20298FFF70BFF03B0BDE8F083A86086002DE9F04385\n" 
+"B004460D4690469946B848B84901602088009002AA2946\n" 
+"00F0D3F902A90020E9F718FF08B1002038E00026B14F38\n" 
+"788DF8010000208DF8000000AB01220DF101010120E9F7\n" 
+"A0FF002802BF9DF800007978884205D1A74800EBC600A3\n" 
+"49086003E0761C0837042EE1DB0020E9F72FFF9E480068\n" 
+"406888B19F48007800F0F8009D4908700D9801900C9800\n" 
+"904B46424629462046954C24686468A04705B0BDE8F083\n" 
+"19B19A4201D1012070470020704711B11A700120704700\n" 
+"20704770B515001C462BD024B940F22D118C48E2F7CCFC\n" 
+"0498059E21786B2906D06C2920D0EB2936D0EC2948D019\n" 
+"E0022D04D040F233118248E2F7B9FC63787F4842780078\n" 
+"00F001016B20FFF7CDFF002849D17A4861784170007840\n" 
+"F0010077490870002070BD022D04D04FF4A1717448E2F7\n" 
+"9DFC6378714882780078C0F340016C20FFF7B1FF70BB6D\n" 
+"4861788170007840F00200E3E716B180B2012804D040F2\n" 
+"5111F19403802484006748E2F783FC3346644842780078\n" 
+"00F00101EB20FFF79EFFA0B9D1E716B180B2012804D04F\n" 
+"F4AF715D48E2F76FFC33465A4882780078C0F34001EC20\n" 
+"FFF78AFF0028BDD0012070BD70B515001C462FD024B940\n" 
+"F281115248E2F758FC0498059E217806290AD0072924D0\n" 
+"7F293BD0862952D0872964D0FF2973D019E0022D04D040\n" 
+"F287114648E2F741FC637843484278007800F001010620\n" 
+"FFF755FF002874D13E4861784170007840F001003B4908\n" 
+"70002070BD022D04D04FF4CB713848E2F725FC63783548\n" 
+"82780078C0F340010720FFF739FF002858D13048617881\n" 
+"70007840F00200E2E7022D04D040F2A5112C48E2F70CFC\n" 
+"63782948C2780078C0F380017F20FFF720FF00283FD124\n" 
+"486178C170007840F00400C9E716B180B2012804D04FF4\n" 
+"DA711E48E2F7F1FB33461B484278007800F001018620FF\n" 
+"F70CFF28BBB7E716B180B2012804D040F2C1111448E2F7\n" 
+"DDFB3346114882780078C0F340018720EAE716B180B201\n" 
+"2804D04FF4E7710C48E2F7CCFB33460948C2780078C0F3\n" 
+"8001FF20FFF7E7FE002892D0012070BD0000C0278800B0\n" 
+"2788009027880044E78800086186002DE9F14185B08846\n" 
+"16461F469DF81400C00748BF4FF0FF3050D40C9C0D9D0A\n" 
+"480068406890B10195A4B2009492B2C9B205A8DFF814C0\n" 
+"DCF800C0DCF804C0E04720B100203AE000BFC027880002\n" 
+"AA5FFA88F1059800F035F802A90020E9F77AFD50BB9DF8\n" 
+"1500C0F3C000D0B9A5B147B9B2B200262B4639463046E9\n" 
+"F705FEC0B905E02A463946B0B2E9F719FE88B90020E9F7\n" 
+"9DFD90B10FE00022002FE9D0B6B2E8E72B46A2B23946B0\n" 
+"B2E9F7EDFD0028EDD00020E9F78BFD6FF0070006B0BDE8\n" 
+"F08101B40020002309C29DF8000060F3070342F8083D9D\n" 
+"F8010000F00300012804D00CD3032807D003D308E043F4\n" 
+"803004E043F4003001E043F4403010601C20136860F397\n" 
+"431360506820F004009DF80130C3F3800340EA83005060\n" 
+"C9B2106861F31F60106001B07047000080B50B4AC2E900\n" 
+"01F5F761FF094AC2E9000101BD38B5F5F75AFF064AD2E9\n" 
+"0045001BA941024AD2E900450019694134BD383F880030\n" 
+"3F880038B50020ADF800000446EDF79CFD05464FF48051\n" 
+"2046EDF7FDFF0A212846EDF782FF00E0641C062C12D2DF\n" 
+"F80C0C215C8DF800102018007A8DF80100022300AA7221\n" 
+"0720EDF73DFE0028EBD1002032BD012032BD2DE9FC4107\n" 
+"468846EFF724FD04460020ADF80400DFF8D05BA88D0646\n" 
+"B8F1000F02D03843A88501E0B843A885012000900DF106\n" 
+"03F1940310288400AB2272210620EDF75AFE002801D100\n" 
+"20D4E1A88D0E2800F2B581DFE810F00F00B3011C00B301\n" 
+"3F00B3013F00B301C600B301C600B301C600B301C60080\n" 
+"208DF8040000208DF805009DF8060000F0FD008DF80600\n" 
+"96E116F00C0F01D00120687581208DF8040001AEEE2070\n" 
+"70022301AA72210920EDF7E1FD002801D100209DE17078\n" 
+"E87080208DF80400032070709DF8060000F0FD008DF806\n" 
+"0073E13046000701D4022E01D1012068759F208DF80400\n" 
+"01AE00207070022301AA72210720EDF7BCFD002801D100\n" 
+"2078E19D208DF804000C207070022301AA72210920EDF7\n" 
+"ADFD002801D1002069E19E208DF804000C207070022301\n" 
+"AA72210920EDF79EFD002801D100205AE181208DF80400\n" 
+"FD207070022301AA72210920EDF78FFD002801D100204B\n" 
+"E17078E8708E208DF80400287A002812D00C218F2011F0\n" 
+"43FA04218F2011F015FA3021902011F03BFA3021902011\n" 
+"F00DFA4520707011E00C218F2011F030FA08218F2011F0\n" 
+"02FA3021902011F028FA1021902011F0FAF98220707002\n" 
+"2301AA72210920EDF758FD002801D1002014E180208DF8\n" 
+"0400272070709DF8060000F0FD008DF80600ECE016F008\n" 
+"0701AE4FD111F00FFB01206875A4208DF8040000207070\n" 
+"DFF8F00C00210170022301AA72210920EDF731FD002801\n" 
+"D10020EDE0A5208DF8040000207070DFF8D00C00210170\n" 
+"022301AA72210920EDF71EFD002801D10020DAE0A7208D\n" 
+"F8040000207070DFF8A40D00210170022301AA72210920\n" 
+"EDF70BFD002801D10020C7E0A9208DF8040000207070DF\n" 
+"F8840D00210170022301AA72210920EDF7F8FC002801D1\n" 
+"0020B4E081208DF80400FE207070022301AA72210920ED\n" 
+"F7E9FC002801D10020A5E07078E8708E208DF80400287A\n" 
+"002812D00C218F2011F09DF904218F2011F06FF9302190\n" 
+"2011F095F93021902011F067F94F20707011E00C218F20\n" 
+"11F08AF908218F2011F05CF93021902011F082F9212190\n" 
+"2011F054F984207070022301AA72210920EDF7B2FC0028\n" 
+"01D100206EE0002F20D1B4F88A00B4F88C10401A6885B4\n" 
+"F88A108900298589B2FF2901DBFE21298580B281006529\n" 
+"02DB6420688501E080006885298D688D0A1A6A8592B20F\n" 
+"F2A000EDF742FCA6208DF80400287A00280AD06021A320\n" 
+"11F045F94121A32011F017F95720707009E06021A32011\n" 
+"F03AF94121A32011F00CF98B207070022301AA72210920\n" 
+"EDF76AFC002801D1002026E080208DF80400672070709D\n" 
+"F8060040F002008DF80600022301AA72210920EDF755FC\n" 
+"F19403A02B8400002801D1002011E0AB208DF804009DF8\n" 
+"06008DF80500022301AA72210920EDF744FC002801D100\n" 
+"2000E00120BDE8F681233E6755703D25642C674C6F3D25\n" 
+"640010B534220021DFF8100DF5F7ECFDDFF8D4470120A0\n" 
+"7111F087FD11F015F901202073DFF89C0D0021017010BD\n" 
+"10B582B00FF25C00EDF7D0FB0020ADF8000080208DF800\n" 
+"0000AC03206070022300AA72210620EDF70AFC002818D0\n" 
+"DFF88807817A00290DD08C218DF8001000216170817002\n" 
+"2300AA72210620EDF7F7FB002805D0FFF7BEFF01210020\n" 
+"FFF7B8FD13BD0000233E484C5300000010B582B00020AD\n" 
+"F80000044600E0641C052C12D2DFF8140D215C8DF80010\n" 
+"2018007A8DF80100022300AA72210720EDF7D0FB0028EB\n" 
+"D1002016BD012016BD30B583B0DFF80847E17D0FF2AC00\n" 
+"EDF778FB0020ADF806008DF80400607180208DF806000D\n" 
+"F106050320687002230DF1060272210720EDF7ADFB0028\n" 
+"01D100203EBD8C208DF8060000206870A07002230DF106\n" 
+"0272210720EDF79CFB002801D100203EBD012060720146\n" 
+"0420FFF75BFD002801D100203EBD0120009001AB9F2272\n" 
+"210720EDF7C8FB002801D100203EBD9DF804100FF23000\n" 
+"EDF733FB0120009001ABE52272210720EDF7B6FB002801\n" 
+"D100203EBD01203EBD0000233E50524F20307825780000\n" 
+"233E4F5F72636F6E66696720307825780000000030B583\n" 
+"B00FF2AC00EDF70EFB0020ADF806008DF80400DFF8480D\n" 
+"C469856A80208DF8060003208DF8070002230DF1060272\n" 
+"210720EDF741FB002801D100203EBD687A012828D1607A\n" 
+"012825D101210020FFF7FCFC002801D100203EBD012000\n" 
+"9001AB802272210720EDF769FB002801D100203EBD9DF8\n" 
+"04100FF24000EDF7D4FA0120009001ABE52272210720ED\n" 
+"F757FB00280CD100203EBDDFF89805002141720420FFF7\n" 
+"D3FC0028EAD100203EBD01203EBD0000233E5052430000\n" 
+"00233E2626656E61626C65203078257800012070477CB5\n" 
+"0446EFF7E4F905460020ADF80400DFF85065B07B002831\n" 
+"D1B07A002802D0307C207038E0012000900DF105039322\n" 
+"72210720EDF71BFB00280DD09DF80500800729D5012000\n" 
+"9001AB9C2272210720EDF70DFB002801D1002076BD9DF8\n" 
+"0400B5F88C10814205D37179401880B24008207000E020\n" 
+"709DF8040070710CE001280AD1B5F88C00DFF8100A4169\n" 
+"727989184910217040697071012076BD2DE9F04391B004\n" 
+"46EFF794F90546EDF7E0F90646002002908DF80C000120\n" 
+"009003AB932272210720EDF7D3FA002801D1002044E2F1\n" 
+"9403302F8400022000900DF10A03942272210720EDF7C6\n" 
+"FA002801D1002037E2DFF878749DF80B009DF80A1041EA\n" 
+"002045F254614843F978C1F580713A79DFF8B83BD25C12\n" 
+"FB01F140F24232514390FBF1F0797B002902D0B97A0029\n" 
+"01D1786308E0786B397E4A1C3A76062902DB0021797339\n" 
+"76397A00290BD141F6593188422BDB01213972B8630020\n" 
+"7876FFF729FEEEE1B96B411A44F62162914215DA40F6B8\n" 
+"31884217DA9DF80C20920613D57A7E531C7B76C92A04DA\n" 
+"BA7A002A0DD188420BDA884201DA00213972B863002078\n" 
+"76FFF707FECCE1002078769DF80C00800640F1D5810020\n" 
+"B8730120009003AB932272210720EDF756FA002801D100\n" 
+"20C7E19DF80C0080073AD5012000900DF10A039C227221\n" 
+"0720EDF745FA002801D10020B6E19DF80A1005F28A0042\n" 
+"888A4210D3B87A002804D17A790FF26430EDF7A7F99DF8\n" 
+"0A00797951FA80F080B2400860700DE0408888420AD2B8\n" 
+"7A002804D17A790FF24C30EDF793F99DF80A0060709DF8\n" 
+"0A00F8739DF80A00787160783874387B002802D0002038\n" 
+"7372E1DFF81C8D607888F80000B87900280AD010F0BAFE\n" 
+"002806D1B87A002803D0607810F0C4FE75E0787A002839\n" 
+"D0B87AB978084335D1002030758C208DF808000DF10809\n" 
+"202089F80100B870022302AA72210720EDF7A0F9002801\n" 
+"D1002053E189208DF80800002089F80100022302AA7221\n" 
+"0720EDF790F9002801D1002043E18B208DF80800B5F88A\n" 
+"0089F80100022302AA72210720EDF77FF9002801D10020\n" 
+"32E1B87A002809D105F18A004288B5F88A100FF28020ED\n" 
+"F726F92BE0414684B068461822E7F7CBF80FBC11F0D5FA\n" 
+"04A811F038FBDFF8D09C484604A93422E7F7BEF899F81C\n" 
+"00002807D034224946DFF85407F1F724FC0120787009F1\n" 
+"1C00417D88F81410817D88F81510007D002801D0FFF70D\n" 
+"FD787A002800F0E680B87A002840F0E2806078B5F88A10\n" 
+"884231D3307D00282ED10120F87120702078307589208D\n" 
+"F808000DF1080905F18A00408889F80100022302AA7221\n" 
+"0720EDF71DF9002801D10020D0E08B208DF80800FF2089\n" 
+"F80100022302AA72210720EDF70DF9002801D10020C0E0\n" 
+"61780FF2BC10EDF7BBF8AAE005F28A0041886278914231\n" 
+"D3317D01292ED10120F871002020702078307589208DF8\n" 
+"08000DF10809002089F80100022302AA72210720EDF7E6\n" 
+"F8002801D1002099E08B208DF80800B5F88A0089F80100\n" 
+"022302AA72210720EDF7D5F8002801D1002088E061780F\n" 
+"F25410EDF783F872E0B5F88A106278914235D3317DF194\n" 
+"03C0328400002932D1797C01292FD10120F87100202070\n" 
+"207830750020787489208DF808000DF10809002089F801\n" 
+"00022302AA72210720EDF7AAF8002801D100205DE08B20\n" 
+"8DF80800B5F88A0089F80100022302AA72210720EDF799\n" 
+"F8002801D100204CE00FF2E400EDF748F837E06178B5F8\n" 
+"8A20914232D3317D01292FD1797C01292CD10121F97121\n" 
+"70217831750021797489218DF808100DF10809408889F8\n" 
+"0100022302AA72210720EDF770F8002801D1002023E08B\n" 
+"208DF80800FF2089F80100022302AA72210720EDF760F8\n" 
+"002801D1002013E00FF27C00EDF70FF8012000900DF10A\n" 
+"03E52272210720EDF791F8002801D1002002E0012000E0\n" 
+"002011B0BDE8F0838000880044008800233E505241572F\n" 
+"202564202564000000233E505241572025642025640000\n" 
+"0000233E55703D25642C4C6F3D2564000000233E503120\n" 
+"256400233E503220256400233E526554483100233E5265\n" 
+"544832002DE9F84304460D46DFF8106DB07C002805D000\n" 
+"F03FFF0020F0743075C5E0EEF7FBFE804600273846ADF8\n" 
+"00002078072823D16078FF2820D12946601CFFF704FD60\n" 
+"78B8F88A10884208D301202070627821780FF25C10ECF7\n" 
+"A3FF0CE0B8F88C006178884207D338462070627821780F\n" 
+"F24010ECF795FF012097E00020F074307529462046FFF7\n" 
+"2EFD00280DD0707A00280AD0F079002807D00FF22810EC\n" 
+"F780FF0020F07101203075B07A002877D0DFF82886D8F8\n" 
+"189009F10C00417DC068D9F80C20801800F064FA002868\n" 
+"D0DFF8B8040078411E8941C90FF1747078002801D00020\n" 
+"7070707A002857D0D9F80C0040780DF1000989F8010031\n" 
+"8D814218D2ECF7DAFE007D002813D1B07E401CB076C0B2\n" 
+"02282DD10020B0760127ECF7CCFE3946017599F801100F\n" 
+"F2A400ECF739FF1FE099F80100718D884218D2ECF7BCFE\n" 
+"007D012813D1B07E401CB076C0B202280FD10020B07601\n" 
+"27ECF7AEFE0021017599F801100FF27400ECF71BFF01E0\n" 
+"0020B076002F12D0D8F81C80ECF79DFE007D8DF8000008\n" 
+"F10C00427D00A9C068D8F80C30C018F1F721FA01203075\n" 
+"00203070EEF760FF00283FF469AF307DBDE8F283000023\n" 
+"3E536C65657020414443202564202564000000233E5055\n" 
+"50000000233E67757031202564000000233E6775703220\n" 
+"2564000000F8B507460020ADF80000EEF713FE0546DFF8\n" 
+"244B012060743878A5F88A0005F28A0678787080B5F88A\n" 
+"00002802D07088002808D10FF29C00ECF7C0FE7820A5F8\n" 
+"8A000020708089208DF8000000AF708878700223F19403\n" 
+"5036840000AA72210720ECF7F8FE00280DD08B208DF800\n" 
+"00B5F88A007870022300AA72210720ECF7EAFE002801D1\n" 
+"0020F2BD7288B5F88A100FF25000ECF796FEB5F88A0071\n" 
+"88401A6085B5F88A108900218589B2FF2901DBFE212185\n" 
+"80B28100652902DB6420608501E080006085208D618D40\n" 
+"1A60850120F2BD00005588890056888900233E5054483D\n" 
+"3000233E544853455420256420256400000080B50FF218\n" 
+"010720F5F73AFB0FF230010A20BDE80440F5F733BB0000\n" 
+"792C8400B72C8400912D84005D2E840000000000193484\n" 
+"00FD3584000000000000000000792C8400B72C8400912D\n" 
+"84005D2E840000000000612E8400FD3584000000000000\n" 
+"00000030B583B00020ADF80400FFF717F8002803D10FF2\n" 
+"7000ECF729FE0024DFF8C85900E0641C0B2C12D2601900\n" 
+"7F8DF80400DFF8B80D205C8DF80500022301AA72210620\n" 
+"ECF75CFE0028EBD100203EBD0120009005F11703912272\n" 
+"210620ECF791FE002801D100203EBDE97D0FF22400ECF7\n" 
+"FDFDEEF75FFE01203EBD00005788890058888900233E47\n" 
+"504641494C00000000233E474348495020307825780000\n" 
+"000038B5DFF84449E17D0FF28800ECF7DEFD0020ADF800\n" 
+"0080208DF8000000AD03206870022300AA72210620ECF7\n" 
+"18FE002801D1002032BD8C208DF8000000206870A07002\n" 
+"2300AA72210620ECF708FE002801D1002032BDA3208DF8\n" 
+"0000DFF8EC0CC0786870022300AA72210620ECF7F7FD00\n" 
+"2801D1002032BD0120A072FFF7BAF901210820FEF7B4FF\n" 
+"002801D1002032BD012032BD233E47454F203078257800\n" 
+"0010B582B00FF26800ECF790FD0020ADF8000080208DF8\n" 
+"000000AC03206070022300AA72210620ECF7CAFD002801\n" 
+"D1002016BD9F208DF8000000206070022300AA72210620\n" 
+"ECF7BBFD002801D1002016BDDFF8B00B002181720820FE\n" 
+"F779FF002801D1002016BD012016BD0000805D8800233E\n" 
+"4745430000000120704730B58DB0DFF82458A879002814\n" 
+"D010F091FA002810D0DFF8B444201D0FC810F085FB10F0\n" 
+"90FA002832D00020A871012060752075A0752BE0A87900\n" 
+"2828D1DFF88C44214684B068461822E6F7DDFC0FBC10F0\n" 
+"1AFF00A810F04AFFDFF8F454284600A93422E6F7D0FC05\n" 
+"F11C00417D2175817D6175007D002801D0FFF72DF9287F\n" 
+"002805D034222946DFF8300DF1F72CF801200DB030BD00\n" 
+"00D45C88009000880010B584B0044602A8002101600846\n" 
+"ADF804000120009001AB932272210620ECF782FD002800\n" 
+"F088809DF8040010F0040004D1DFF858174978F19403E0\n" 
+"39840000297DD0002806D0DFF848074178002901D10121\n" 
+"8173012000900DF10503AE2272210620ECF763FD002869\n" 
+"D09DF80500002817D00420009002ABFC2272210620ECF7\n" 
+"55FD00285BD0DFF8A8039DF80810416002A94A7882608A\n" 
+"78C260C9780161FFF762FFDFF87C1C0A78DFF8E8064378\n" 
+"002B227007D000226270A270E27022716271A2710BE04A\n" 
+"6962708A69A2704A68E2708A682271CA6862710A69A271\n" 
+"0A6AE2714A6A22728A6A6272CA6AA2724A7FE272DFF834\n" 
+"2C12782273DFF8302C12786273DFF82C2C1278A273DFF8\n" 
+"282C1278E273DFF8242C12782274DFF8202C12786274DF\n" 
+"F81C2C1278A274C27BE274002202700878042801D11046\n" 
+"0870012000E0002004B010BDDFF8A809C07C70470000EC\n" 
+"03880080B5052802D1084600F002F8012002BD80B50178\n" 
+"41F04103DFF8D41BCB70027801780FF6F430ECF74DFC01\n" 
+"2002BD00001048840070B584B004460020019002A80021\n" 
+"01600E460FF6E430ECF73BFC01210820FEF749FEA0208D\n" 
+"F8040001AD30466870022301AA72210620ECF774FC0028\n" 
+"01D13046C5E0A1208DF80400FF206870022301AA722106\n" 
+"20ECF765FC002801D13046B6E0AB208DF8040001206870\n" 
+"022301AA72210620ECF756FC002801D13046A7E0012000\n" 
+"900DF10603802272210620ECF78BFC002801D130469AE0\n" 
+"80208DF804009DF8060040F045006870022301AA722106\n" 
+"20ECF737FC002801D1304688E0A3208DF80400DFF84C09\n" 
+"C0786870022301AA72210620ECF726FC002801D1304677\n" 
+"E0012000900DF10703AF2272210620ECF75BFC002801D1\n" 
+"00206AE09DF80700C0070BD50420009002ABFC22722106\n" 
+"20ECF74BFC00280CD100205AE03046461CB0F57A7FDDDB\n" 
+"0FF6DC20ECF7B3FB00204FE09DF80800207002A8417861\n" 
+"708178A170C078E070012000900DF10603802272210620\n" 
+"ECF729FC002801D1002038E080208DF80400DFF8040841\n" 
+"7A002905D09DF8060000F0BF0068700CE09DF8061001F0\n" 
+"BB016970C07A002804D19DF8060000F0BA006870022301\n" 
+"AA72210620ECF7C2FB002801D1002013E0AB208DF80400\n" 
+"00206870022301AA72210620ECF7B3FB002801D1002004\n" 
+"E000210820FEF774FD012004B070BD0FF618310620F5F7\n" 
+"32B810B582B00020ADF80000044600E0641C052C12DADF\n" 
+"F8CC09215C8DF800102018007A8DF80100022300AA7221\n" 
+"0920ECF78AFB0028EBD1002016BD012016BD30B583B0DF\n" 
+"F84847E17D0FF6E410ECF732FB0020ADF8040080208DF8\n" 
+"040001AD03206870022301AA72210920ECF7F19403703D\n" 
+"84006CFB002801D100203EBD8F208DF804000B20687002\n" 
+"2301AA72210920ECF75DFB002801D100203EBD03202071\n" 
+"0120A075E0720320206301210220FEF717FD002801D100\n" 
+"203EBD012000900DF10603E62272210920ECF783FB0028\n" 
+"01D100203EBD01203EBD345C880000B583B00FF66010EC\n" 
+"F7EAFA0020ADF8060080208DF8060003208DF807000223\n" 
+"0DF1060272210920ECF723FB002801D100200EBD012000\n" 
+"9001AB8F2272210920ECF759FB002801D100200EBDDFF8\n" 
+"68060021C1720220FEF7D5FC002801D100200EBD012000\n" 
+"9001ABE62272210920ECF742FB002801D100200EBD0120\n" 
+"0EBD00004C5C8800012070472DE9F04F89B0044606A800\n" 
+"210A4606C0884608460590DFF87408D0F82490084689F8\n" 
+"5E00DFF808A69AF81600012804D09AF81500002840F090\n" 
+"800820009006AB942272210920ECF712FB002801D14046\n" 
+"EEE09DF81800A07106A84178E17181782170C178617001\n" 
+"79A1704179E17081792171C07960719AF8030020729AF8\n" 
+"040060726078217841EA0025E078A17841EA0026607921\n" 
+"7941EA0027E079A17941EA002805A8009043463A463146\n" 
+"284600F013F900281DD19AF8160001284ED100208AF816\n" 
+"00DFF8C8075B21017000214170852181700021C170AE21\n" 
+"017100214171702181710121C171EE2101720021417234\n" 
+"E000208AF81600DFF894072178017061784170A1788170\n" 
+"E178C1702179017161794171A1798171E179C171217A01\n" 
+"72617A4172DAF8300001286BDB059803909AF804000290\n" 
+"9AF803000190CDF800803B46324629460FF2A070ECF705\n" 
+"FADAF83000401ECAF8300054E053D0DFF8300701782170\n" 
+"417861708178A170C178E17001792171417961718179A1\n" 
+"71C179E171017A2172407A607200208AF8150060782178\n" 
+"41EA0025E078A17841EA00266079217941EA0027E079A1\n" 
+"7941EA00289AF803008DF81000207A8AF803009AF804B0\n" 
+"607A8AF8040005A8009043463A463146284600F081F805\n" 
+"9803909AF8040002909AF803000190CDF800803B463246\n" 
+"29460FF22870ECF7B0F99DF810008AF803008AF804B0AD\n" 
+"B25B2D11D1B6B2852E0ED1BFB2AE2F0BD1B8F5B87F08D1\n" 
+"207AEE2805D1607A002802D1012089F85E00012009B0BD\n" 
+"E8F08F1CB504460020ADF806008DF804000120009001AB\n" 
+"8F2272210920ECF70DFA002801D1002016BD9DF8040000\n" 
+"F0FC008DF80400012C0AD0042C04D0102C1FD0402C22D0\n" 
+"26E040F001008DF804008F208DF806009DF804008DF807\n" 
+"00DFF89C439DF8040000F0030020710223F19403004184\n" 
+"000DF1060272210920ECF79FF900280DD1002016BD40F0\n" 
+"02008DF80400E1E740F003008DF80400DCE7002016BD01\n" 
+"20607316BD0000440088002DE9F0419C4614460D460646\n" 
+"A8192018A0EB0C00401C47103FB2002F00D50027CD4908\n" 
+"790FF2B062805CC978C1F5807110FB01F240F6DC2E0EFB\n" 
+"02F88902B1F5803F01D34FF6FF71C9000A22B1FBF2F110\n" 
+"2831D18B422FD30120FFF780FF002844D1EA1BE01B0699\n" 
+"B74206DA0B68F61B40F6CA0C0CFB06330B60AF4205DA0B\n" 
+"684FF47A7505FB02320A60A74205DA0A68DFF8283503FB\n" 
+"102008600868002801D500200860DD20B8FBF0F00A68B2\n" 
+"FBF0F008600120BDE8F081102808D1BCF1640F05DA4020\n" 
+"FFF74BFF00280FD1C9E7402802D164398B4204D20128C2\n" 
+"D1BCF1640FBFDA1020FFF73BFF0028BAD00020E1E70FF2\n" 
+"0C610920F4F79BBD974988740120704710B5DFF8B84420\n" 
+"202070002060700A20A0700020E0700A20207100206071\n" 
+"3220A0710020E07207222146DFF89404F0F7C2FB002060\n" 
+"72012010BD00B583B000A800210A4606C00722DFF87414\n" 
+"0DF10100F0F7B1FBA0208DF80000082300AA72210720EC\n" 
+"F7D5F8002801D100200EBD01200EBD00B583B000208DF8\n" 
+"0400DFF84004417B012903D100F0ADF901200EBD418AFF\n" 
+"290CD000290DD0C27A521CC272491E4182417AD2B29142\n" 
+"01D20021C17200F015F805E0818A41820021C17200F00E\n" 
+"F80120009001ABE32272210720ECF7E2F8002801D10020\n" 
+"0EBD01200EBD38B50020ADF80000DFF8D843608A002801\n" 
+"D1A07A60720722E07AC0EBC000DFF8C41341182046F0F7\n" 
+"58FBFFF798FF80208DF8000000AD81206870022300AA72\n" 
+"210720ECF777F8002801D1002032BDA7208DF80000208A\n" 
+"6870022300AA72210720ECF768F8002801D1002032BD01\n" 
+"2032BD30B585B0044600208DF80C00ADF80E0060790290\n" 
+"20790190E0780090A378627821780FF20440ECF704F801\n" 
+"20009003AB802272210720ECF787F8002801D1002061E0\n" 
+"CB4D9DF80C0028720120009003AB8F2272210720ECF777\n" 
+"F8002801D1002051E09DF80C00A8730120009003AB9022\n" 
+"72210720ECF768F8002801D1002042E09DF80C00E87300\n" 
+"F0A6F88F208DF80E000DF10E050B20687002230DF10E02\n" 
+"72210720ECF70FF8002801D100202BE090208DF80E0001\n" 
+"20687002230DF10E0272210720EBF7FFFF002801D10020\n" 
+"1BE0AA4D8122FF212846F4F7B3F980222146681CF0F7C3\n" 
+"FA0020287081232A4672210720EBF7E8FF002805D10FF2\n" 
+"4830EBF799FF002000E0012005B030BDF1940390448400\n" 
+"4400880080B501780F2904DA964A527A521C8A4205DA0F\n" 
+"F22C30EBF785FF002002BD4278202A01DB202242700022\n" 
+"C2704271C1EBC1018D4A20238B54891800224A70427800\n" 
+"2A01D1002201E05200521E8A7182788A70C278CA700279\n" 
+"0A7140794871012002BD8048417A491C41728172012070\n" 
+"4738B504467B4D6C82FFF795FE002C00D0AC8221460FF2\n" 
+"C820EBF74CFF012032BD74494873012070477549087001\n" 
+"20704700000000A000880071480078704780B56C490873\n" 
+"0A7B52000A8201460FF2A020EBF730FF012002BD00B583\n" 
+"B00020ADF806008DF8040080208DF8060001208DF80700\n" 
+"02230DF1060272210720EBF763FF002801D100200EBD10\n" 
+"2000905D4BA02272210720EBF799FF002801D100200EBD\n" 
+"0120009001AB802272210720EBF78DFF002801D100200E\n" 
+"BD01200EBD00B587B00020ADF8000001A81421E5F7CFFD\n" 
+"80208DF8000001208DF80100022300AA72210720EBF730\n" 
+"FF002801D1002013E0102244490DF10500F0F7F9F9A020\n" 
+"8DF80400112301AA72210720EBF71DFF002801D1002000\n" 
+"E0012007B000BD30B583B00020ADF804008DF80600324C\n" 
+"217A0FF2D010EBF7C0FE0020FFF7FAFD002060736072FF\n" 
+"F7BCFF8F208DF8040001ADA07B6870022301AA72210720\n" 
+"EBF7F5FE002801D100203EBD90208DF80400E07B687002\n" 
+"2301AA72210720EBF7E6FE002801D100203EBD80208DF8\n" 
+"0400207A6870022301AA72210720EBF7D7FE002801D100\n" 
+"203EBD012000900DF10603E32272210720EBF70CFF0028\n" 
+"01D100203EBD01203EBD0000805D8800485D8800558889\n" 
+"005688890057888900588889005A8889005B888900A000\n" 
+"8800AC008800EC038800B45D8800F0F1FFFFC05D8800D8\n" 
+"5D8800545E88005C888900445E8800233E474520435520\n" 
+"257820257820257800000000233E4753454C4600233E47\n" 
+"535445525200000000233E4C49474F203078257800233E\n" 
+"4C4947430000233E723D256420673D256420623D256420\n" 
+"633D2564206174696D653D25642C20616761696E3D2564\n" 
+"206C75783D25642000000000233E4040723D256420673D\n" 
+"256420623D256420633D2564206174696D653D25642C20\n" 
+"616761696E3D2564206C75783D25642000004D42442025\n" 
+"642025642025642025642025642025640000004D6F6265\n" 
+"616D2057460000004D6F6265616D20486F70204661696C\n" 
+"004D4220486F70436F756E7420256400004D6F6265616D\n" 
+"204C656E3D25640000004D4220436C6F73652025640001\n" 
+"0410404D378400ED3784008D388400F194032048840005\n" 
+"39840000000000E73A840000000000293B8400F53A8400\n" 
+"053D8400433D8400D93D84005D3E840000000000613E84\n" 
+"000000000000000000000000002DE9F04786B0044601A8\n" 
+"1421E5F782FCEBF72FFD05464FF00208002601E0761C76\n" 
+"B20A2E80F29E80022EF8D0032EF6D0062EF4D0524850F8\n" 
+"2670787A002806D107F10C00406D406880470028E7D008\n" 
+"F8046008F101084FFA88F8304609284FD8DFE800F0050A\n" 
+"4E4E10204E154E49C8212846EBF7EEFE43E04FF4487128\n" 
+"46EBF7E8FE3DE032212846EBF7E3FE38E007208DF80400\n" 
+"FF208DF8050032212846EBF7D8FE2DE03C212846EBF7D3\n" 
+"FE4FF0000A07F10C09BAF1030F22DA0020D9F854100969\n" 
+"884714212846EBF7C3FE0120D9F8541009698847142128\n" 
+"46EBF7BAFEBAF1020F05DA062101A8D9F8542052699047\n" 
+"0AF1010ADEE74FF416712846EBF7A9FE07F10C0999F815\n" 
+"1001A8D9F8542052699047002819D0D9F80C00F96800EB\n" 
+"010A99F8152001A95046F0F734F83846ECF7D9F899F815\n" 
+"20514608EB0400F0F72AF899F9150080444FFA88F8787A\n" 
+"00287FF466AFD9F854008068804700287FF45FAF002009\n" 
+"E0A8F10200ADF80000022200A92046F0F70FF8002006B0\n" 
+"BDE8F0870000EC0388000FB480B5BDF80B006449488002\n" 
+"2802DB801E088001E0002008800C229DF90A100020F4F7\n" 
+"35FC032801D1022000E0012002BC5DF814FB5948012141\n" 
+"800021018001207047564908707047000030B58DB002A8\n" 
+"F4F77CFC514C2088401C2080618880B2884231D3002020\n" 
+"80054627E06068D0F85402E840C00720D52846F5F78CFB\n" 
+"00281BD400EB80009FED430ADDED0B0A60EE800AFDEEE0\n" 
+"0A10EE901A00AA8152DDED0C0A20EE800ABDEEC00A10EE\n" 
+"101A8218518000A94018012101716D1C182DD5DBDDE900\n" 
+"01F5F770FB01200DB030BD80B5F4F7DBFB314948603249\n" 
+"C0F8581200F5167030494160304981600FF20D01C1600F\n" 
+"F225010161012002BD10B50024274890F90000002804D1\n" 
+"F5F76EFB002800D00124204610BDF8B504460D4640F249\n" 
+"16287816FB004001210170287816FB00404170287816FB\n" 
+"00400C218170287816FB0040164991F90010002902D002\n" 
+"21C17001E00121C170287816FB004001210171287816FB\n" 
+"0040C180287816FB00470020F5F7DBFA3881287816FB00\n" 
+"440020F5F7D9FA60812878401C28700C20BDE8F240F5F7\n" 
+"E9BA00000000C842DC02880064888900E1498400174A84\n" 
+"002D4A840000F5E0700268914203D343689A18914202D3\n" 
+"80680028F5D17047DFF820070168F19403B04B840099B9\n" 
+"4FF48031816004224FF4805141604FF0FF31C160016104\n" 
+"214161DFF80017C1F8BC21DFF8FC1601600120704701F1\n" 
+"080313F0070305D001F10803C3F1080303F007035918D2\n" 
+"1A8161C26042F001034B60511828224A60DFF8C0160969\n" 
+"C16170472DE9F84F044601F1080010F0070005D001F108\n" 
+"00C0F1080000F0070000EB010B02F1080010F0070005D0\n" 
+"02F10800C0F1080000F007008618A6EB0B00A0EB030803\n" 
+"EB0B0743F00300CBF80400B74228BF10F02BF93079C007\n" 
+"58BF10F026F9B8F1100F38BF10F021F9A069864207D1E0\n" 
+"684044E060A76140F0010078605AE16069864208D1A068\n" 
+"4044A060676140F001017960C0514EE1706800F0030101\n" 
+"2940F0AD80C0084FEAC00920283BD2D6F808A0F5680090\n" 
+"AE4208BF10F0F7F8564508BF10F0F3F870680099C008C0\n" 
+"00B0EBC10F18BF10F0EAF8009804EBC00000F128018A45\n" 
+"08D021698A45C0F08480DAF80C10B14240F07F80554506\n" 
+"D1009A2068012191408843206077E02830854205D02069\n" 
+"85426FD3A868B0426CD1CAF80C50C5F808A069E0F568D6\n" 
+"F818A0B5420CD0B0682169884223D3C168B14204BFA968\n" 
+"B1421DD1C560A8601CE006F11400056835B906F1100005\n" 
+"68A5B101E00846056805F114010A68002A02BF05F11001\n" 
+"0A68002AF3D12169884202D30021016001E010F094F8BA\n" 
+"F1000F37D0F06904EB800000F5987001688E4209D10560\n" 
+"280014D1F2696068012191408843606025E02069824508\n" 
+"D3DAF81000B04214BFCAF81450CAF8105001E010F071F8\n" 
+"B5B12069854211D3C5F818A0316929B1814226BF29618D\n" 
+"6110F063F8706938B12169884202D36861856101E010F0\n" 
+"59F84E44C84470684008400070604FEAD80548F0010078\n" 
+"6048F80780202D21D204EBC50000F12806B146B8F1100F\n" 
+"38BF10F040F8206820FA05F1C90704D40121A940084320\n" 
+"6006E0B068216988422CBF814610F02FF8B760C9F80C70\n" 
+"C7F80890FE606CE05FEA182008BF002123D0B0F5803F28\n" 
+"BF1F211ED2A0F58071090C01F008018840A0F58052120C\n" 
+"02F004029040A0F580431B0CC1F10E0103F00203891AC9\n" 
+"1A984001EBD030C11D28FA01F101F0010101EB4001F961\n" 
+"00227A613A6104EB8100626822FA01F300F59870DB0706\n" 
+"D4012303FA01F11143616007601CE01F2900680EBF0021\n" 
+"4908C1F1190108FA01F100E010464268D208D200424510\n" 
+"D0CA0F00EB820202F1100349001A68002AF0D121698B42\n" 
+"11D31F60B861FF60BF600EE022698168904228BF914206\n" 
+"D3CF608760B960F8600020B861F19403404F840001E00F\n" 
+"F0BBFF0BF10800BDE8F28F2DE9F04F0546DFF874030068\n" 
+"83B0884608B9FFF723FEDFF86403806800EB08012F3140\n" 
+"1E21EA0000804580F0A581D5F8B81141B1D5F8B0218018\n" 
+"824280F09C818142C0F099810FF096FF00281EBF044607\n" 
+"6814F1010F00F08F81D5F8B0013818C5F8B001D5F8B411\n" 
+"814238BF0146C5F8B411A86968BB286908B1844200D22C\n" 
+"61C5F8C041C5F8C4710020C5F8CC012021BB4800686862\n" 
+"4FF0FF302862284600F128020830D2609260491EF8D1B5\n" 
+"48854203D1A7F12802214625E055F8040CC00805EBC000\n" 
+"A0F108013819401AA0F1280219E005F5E071084600E080\n" 
+"68B8B142680368D2189442F8D1027B12070FD4AA699A42\n" 
+"0CD3466833449A4208D2B9194160E868A9693A182846FF\n" 
+"F7C2FD1FE12869844238BF2C610846391900E0806880B1\n" 
+"02688A42FAD1017B09070AD40460434641687918416028\n" 
+"46214603B0BDE8F04FC0E5AE6931462846FFF77BFD4168\n" 
+"0068081801902F3800F1080111F0070105D000F10801C1\n" 
+"F1080101F0070101EB000906F11000814538BFB14609F1\n" 
+"0800009004F1080109F1180A4FF0000BA7F1280011F007\n" 
+"0105D004F10801C1F1080101F007010A19401AAA61E860\n" 
+"40F00101516080182821416071480069E861009810F007\n" 
+"0018BF0FF0D3FE1B20C9F8040005F5E071B1E80C500098\n" 
+"A0E80C50C5F8C041C5F8C471C5F8CCB10098C5F8C80101\n" 
+"9800E08A460722CAF804200AF104010A1D0BF1010B8242\n" 
+"F4D3BBF1020FB8BF0FF0AEFEB14500F09B80A9EB060081\n" 
+"194FEAD0094A68520852004A6040F0010171608051B9F1\n" 
+"200F1FD205EBC90101F128042746102838BF0FF092FE28\n" 
+"6820FA09F1C90705D4012101FA09F10843286006E0A068\n" 
+"296988422CBF07460FF080FEA660FE60B760F4606AE001\n" 
+"0A08BF002223D0B1F5803F28BF1F221ED2A1F58072120C\n" 
+"02F008029140A1F580531B0C03F004039940A1F5804424\n" 
+"0CC2F10E0204F00204D21A121BA14002EBD131CA1D20FA\n" 
+"02F202F0010202EB4102F26100237361336105EB82016B\n" 
+"6823FA02F401F59871E40705D401209040184368600E60\n" 
+"1CE01F2A09680EBF00225208C2F1190200FA02F200E019\n" 
+"464B68DB08DB00834210D0D30F01EB830303F110045200\n" 
+"2368002BF0D12869844211D32660B161F660B6600EE02A\n" 
+"698868914228BF904206D3C6608E60B060F1600020B061\n" 
+"01E00FF010FEE868804511D2A0EB0800E86040F00100A9\n" 
+"6908EB0102AA61506048F00300486003B001F10800BDE8\n" 
+"F08F002000F02BBC28808900F19403D052840040808900\n" 
+"6859883C2DE9F84F044688460026C8F1000B5FEA182008\n" 
+"BF002123D0B0F5803F28BF1F211ED2A0F58071090C01F0\n" 
+"08018840A0F58052120C02F004029040A0F580431B0CC1\n" 
+"F10E0103F00203891AC91A984001EBD030C11D28FA01F1\n" 
+"01F0010101EB400104EB8100D0F8300130B31F290EBF00\n" 
+"224A08C2F1190208FA02F2002300E052004568ED08ED00\n" 
+"A5EB08055D4503D206465FEA050B0CD045694FEAD27E00\n" 
+"EB8E00002D00691CBF85422B460028E7D1184600283AD1\n" 
+"002E3AD1012088404000414208436168084000F05F8141\n" 
+"420840411E080B00F0100021FA00F2510901F00801CA40\n" 
+"930803F00403DA40550805F002050818EA401818C2F340\n" 
+"0E2844704422FA0EF1081804EB8000D0F830010DE00846\n" 
+"4168C908C900A1EB080159453CBF8B46064601690029F2\n" 
+"D140690028F0D1002E00F02A81A068A0EB0800834580F0\n" 
+"248120698642C0F01E817068C00808EB0B09C00008EB06\n" 
+"05484518BF0FF043FDAE4280F01081F768D6F818A0B742\n" 
+"0CD0B0682169884223D3C168B14204BFB968B1421DD1C7\n" 
+"60B8601CE006F11400076837B906F110000768A7B101E0\n" 
+"0846076807F114010A68002A02BF07F110010A68002AF3\n" 
+"D12169884202D30021016001E00FF011FDBAF1000F38D0\n" 
+"F06904EB800000F5987001688E4209D10760380014D1F2\n" 
+"696068012191408843606026E02069824508D3DAF81000\n" 
+"B04214BFCAF81470CAF8107001E00FF0EEFCBFB1206987\n" 
+"4212D3C7F818A0306930B12169884226BF386187610FF0\n" 
+"DFFC706938B12169884202D37861876101E00FF0D5FCBB\n" 
+"F1100F09D249F00300706009EB0600416841F001014160\n" 
+"96E048F0030070604BF0010068604BF805B04FEADB0020\n" 
+"281DD204EBC00101F12807216821FA00F2BB46D20705D4\n" 
+"012202FA00F00843206006E0B868216988422CBF83460F\n" 
+"F0A5FCBD60CBF80C50C5F808B0EF606CE05FEA1B2008BF\n" 
+"002123D0B0F5803F28BF1F211ED2A0F58071090C01F008\n" 
+"018840A0F58052120C02F004029040A0F580431B0CC1F1\n" 
+"0E0103F00203891AC91A984001EBD030C11D2BFA01F101\n" 
+"F0010101EB4001E96100226A612A6104EB8100626822FA\n" 
+"01F300F59870DB0706D4012303FA01F11143616005601C\n" 
+"E01F2900680EBF00214908C1F119010BFA01F100E01046\n" 
+"4268D208D2005A4510D0CA0F00EB820202F1100349001A\n" 
+"68002AF0D121698B4211D31D60A861ED60AD600EE02269\n" 
+"8168904228BF914206D3CD608560A960E8600020A86101\n" 
+"E00FF031FC07E10FF02EFCF194036056840001E12DE9F8\n" 
+"4F04468846606841420840411E080B00F01000C1404A09\n" 
+"02F00802D1408B0803F00403D9404D0805F002051018E9\n" 
+"401818C1F3400628443018F140081804EB8000D0F83001\n" 
+"4168C908C9000646A1EB080A09E008464168C908C900A1\n" 
+"EB080151453CBF8A46064601690029F2D140690028F0D1\n" 
+"20698642C0F0C1807068C00808EB0A09C00008EB060B48\n" 
+"4518BF0FF0E3FB5E4580F0B380F768B569B7420CD0B068\n" 
+"2169884223D3C168B14204BFB968B1421DD1C760B8601C\n" 
+"E006F11400076837B906F110000768A7B101E008460768\n" 
+"07F114010A68002A02BF07F110010A68002AF3D1216988\n" 
+"4202D30021016001E00FF0B2FB002D34D0F06904EB8000\n" 
+"00F5987001688E4209D10760380011D1F2696068012191\n" 
+"408843606022E02069854205D32869B04214BF6F612F61\n" 
+"01E00FF093FBB7B12069874211D3BD61306930B1216988\n" 
+"4226BF386187610FF085FB706938B12169884202D37861\n" 
+"876101E00FF07BFBBAF1100F09D249F00300706009EB06\n" 
+"00416841F0010141603FE048F0030070604AF00100CBF8\n" 
+"04004AF80BA0D4F808804FEAD805202D28BF0FF05DFBB8\n" 
+"F1000F27D0D4F81490009504EBC50000F128052F46B8F1\n" 
+"100F38BF0FF04DFB2068009920FA01F1C90705D4009A01\n" 
+"2191400843206006E0A868216988422CBF07460FF03AFB\n" 
+"C5F80890C7F80C90C9F80870C9F80C50C4F808A0C4F814\n" 
+"B004E00FF02BFB0020BDE8F28F06F10800BDE8F28F2DE9\n" 
+"F04F83B00546C046C046DFF8B847F52D80F001810B2D31\n" 
+"BF102705F10B00C008C7002068FE08F04010F0030F42D0\n" 
+"C04300F00100861904EBC60000F12808F700D8F8085068\n" 
+"68C008C000B84218BF0FF0FAFAD5F80890454508BF0FF0\n" 
+"F4FA4D4508BF0FF0F0FA6868C008C000B84218BF0FF0E9\n" 
+"FAC84505D120680121B140884320600DE02069814508D3\n" 
+"D9F80C00A84204D1C8F80890C9F80C8001E00FF0D3FA47\n" 
+"F00300686078190835416841F001014160F8E0A168B942\n" 
+"80F0BF80002800F0A180012505FA06F149004A42B04011\n" 
+"43084041420840411E080B00F01000C1404A0902F00802\n" 
+"D1408B0803F00403D9404E0806F002061018F1401818C1\n" 
+"F340083018404421FA08F101EB000804EBC80000F12809\n" 
+"4FEAC80AD9F808607068C008C000504518BF0FF08EFAD6\n" 
+"F808B04E4508BF0FF088FA5E4508BF0FF084FA7068C008\n" 
+"C000504518BF0FF07DFAD94505D1206805FA08F1884320\n" 
+"600DE02069834508D3DBF80C00B04204D1C9F808B0CBF8\n" 
+"0C9001E00FF067FA47F0F19403F059840003007060AAEB\n" 
+"0708B819019048F001014160019848F80080A7684FEAD7\n" 
+"0ABAF1200F28BF0FF052FA47B3CDF800A004EBCA00D4F8\n" 
+"149000F1280AD346102F38BF0FF044FA2068009920FA01\n" 
+"F1C90705D4009905FA01F10843206007E0DAF808002169\n" 
+"88422CBF83460FF030FACAF80890CBF80C90C9F808B0C9\n" 
+"F80CA0C4F8088006F108050198606150E06068C0B33946\n" 
+"2046FFF7EEFD050012D047E015F1400F28BF4FF0FF370B\n" 
+"D205F10B00C008C700606828B139462046FFF716FC0500\n" 
+"35D1A168B9421CD3CA1B6069102A0AD339186161A26042\n" 
+"F001034B60525047F0030141600AE00022A260626141F0\n" 
+"0302426009184A6842F001024A6000F1080515E0E06887\n" 
+"420DD2C01BA169E0607A18A26140F00100506001F10805\n" 
+"47F00300486004E039462046FFF71AFA0546C046C04628\n" 
+"4603B0BDE8F08F00B970472DE9F047A0F10804C046C046\n" 
+"DFF8005528698442C0F07582616801F00302012A00F06F\n" 
+"82CA084FEAC20808EB0409CA0737D4226811F0030F00F0\n" 
+"658251420C1990448442C0F05D8269698C4200F0D880D6\n" 
+"08202E70D2D4F80CA0A768544508BF0FF096F9BC4208BF\n" 
+"0FF092F96068C008C000B0EBC60F18BF0FF08AF905EBC6\n" 
+"0000F128018F4205D029698F4251D3F968A1424ED1BA45\n" 
+"3DD128680121B140884328604C4580F02D82D9F80400C1\n" 
+"0740F12882810700F17A81A969894540F0B580E868AC61\n" 
+"4044E86040F00101616069698C4202D100216961A960E9\n" 
+"69814280F01282DFF83004006808B9FEF7C8FFA9690029\n" 
+"00F00882E868292824BF2846FEF7B1FFE869E968884280\n" 
+"F0FD814FF0FF30E861F8E12830824506D02869824508D3\n" 
+"DAF80800A04204D1C7F80CA0CAF80870B7E70FF02DF9B4\n" 
+"E7E768A669A7420BD0A168814222D3C868A04204BFB868\n" 
+"A0421CD1CF60B9601BE004F114010F6837B904F110010F\n" 
+"689FB101E011460F6807F114021368002B02BF07F11002\n" 
+"1368002BF3D1814202D30020086001E00FF000F9002E86\n" 
+"D0E06905EB800000F5987001688C4209D10760380011D1\n" 
+"E2696868012191408843686074E72869864205D33069A0\n" 
+"4214BF7761376101E00FF0E1F8002F3FF467AF28698742\n" 
+"ABD3BE61216929B1814226BF39618F610FF0D2F8606900\n" 
+"283FF457AF296988429BD37861876150E799F8040000F0\n" 
+"030003287FF44AAFC5F80880D9F8040040084000C9F804\n" 
+"0048F00100606048F804806DE16969894508D1A8686C61\n" 
+"4044A86040F001016160005161E1C008C0004FEAD00A80\n" 
+"44BAF1200F36D2D9F8F19403805D84000C70D9F80860B9\n" 
+"4508BF0FF097F8B14508BF0FF093F8D9F80400C008C000\n" 
+"B0EBCA0F18BF0FF08AF805EBCA0000F128018E4206D029\n" 
+"698E42C0F08180F16849457DD1B74206D12868012101FA\n" 
+"0AF18843286076E02830874205D0286987426ED3B86848\n" 
+"456BD1F760BE606AE0D9F80C70D9F818604F450DD0D9F8\n" 
+"08002969884223D3C168494504BFB96849451DD1C760B8\n" 
+"601CE009F11400076837B909F110000768A7B101E00846\n" 
+"076807F114010A68002A02BF07F110010A68002AF3D129\n" 
+"69884202D30021016001E00FF037F8002E37D0D9F81C00\n" 
+"05EB800000F59870016889450AD10760380012D1D9F81C\n" 
+"206868012191408843686023E02869864205D330694845\n" 
+"14BF7761376101E00FF016F8BFB12869874212D3BE61D9\n" 
+"F8101029B1814226BF39618F610FF008F8D9F8140038B1\n" 
+"2969884202D37861876101E00EF0FDFF48F00100606048\n" 
+"F80480686984420BD1C5F80880ACE040084000C9F80400\n" 
+"48F00100606048F804804FEAD807202F22D205EBC70000\n" 
+"F128094E46B8F1100F38BF0EF0DBFF286820FA07F1C907\n" 
+"04D40121B9400843286007E0D9F80800296988422CBF06\n" 
+"460EF0C9FFC9F80840F460A660C4F80C907CE05FEA1820\n" 
+"08BF002123D0B0F5803F28BF1F211ED2A0F58071090C01\n" 
+"F008018840A0F58052120C02F004029040A0F580431B0C\n" 
+"C1F10E0103F00203891AC91A984001EBD030C11D28FA01\n" 
+"F101F0010101EB4001E16100226261226105EB81006A68\n" 
+"22FA01F300F59870DB0706D4012303FA01F11143696004\n" 
+"601CE01F2900680EBF00214908C1F1190108FA01F100E0\n" 
+"10464268D208D200424510D0CA0F00EB820202F1100349\n" 
+"001A68002AF0D129698B4211D31C60A061E460A4600EE0\n" 
+"2A698168904228BF914206D3CC608460A160E0600020A0\n" 
+"6101E00EF055FF286A401E28620BD1D5F8C80100E08068\n" 
+"0028FCD14FF0FF30286201E00EF045FFC046C046BDE8F0\n" 
+"870000408089002880890030B482B083680469828AE318\n" 
+"C468A34228BF1B1B5343446811F8015B1D555B1C521EF8\n" 
+"D18168491C8160012903D102B030BCF1F7D9B81A484078\n" 
+"18B902B030BCE1F7B6BB02B030BC704710B50446A08A22\n" 
+"6942436368D35C01F8013B521C401EF8D12069401C2061\n" 
+"E168884224BF00202061A068421EA2608842094A527807\n" 
+"D10AB9E1F795FB2046BDE81040F1F7ACB8002A04BFBDE8\n" 
+"1040E1F78ABB10BD00001C2788002DE9F04786B0044660\n" 
+"69056A466A300C00F00100290C01F00101484090F00108\n" 
+"75D0771B1CD26920F1940310618400E2F719F880B1DE48\n" 
+"00680590DD4800680490039702960195CDF800806369DA\n" 
+"4ADA496920E2F717F8206E009033462A467E21D748DEF7\n" 
+"00FF002F00F0E980E765A06CB946874288BF8146C4F858\n" 
+"90A7EB0900A0664A46A8B2D4F8B4104118206DE4F7BEF8\n" 
+"206D48442065A06CA0EB0900A064E06C4844E06409EB05\n" 
+"002066E069216E89B2884206D200962B46226E9521BF48\n" 
+"DEF7D1FE206EBA4908600122216E6069EEF77FFC94F918\n" 
+"004109B94A012300F01F0003FA00F042F82100A06C0028\n" 
+"40F0A680E06C616C884200F07F806B20E1F7B1FF002879\n" 
+"D0636CE26BAE496B20E1F7B9FF72E0E069A9B2A0EB010A\n" 
+"1FFA86F818EB0A0700F08B80E765A06CB946874288BF81\n" 
+"46C4F85890A7EB0900A066CA4588BFCA465246A8B2D4F8\n" 
+"B4104118206DE4F75DF8206D50442065A06CA0EB0A00A0\n" 
+"64E06C5044E0641AFA85F0E169884205D10027E80306D4\n" 
+"4FF4803703E005F4803141EA0007B9EB0A0014D0C24680\n" 
+"4588BF82465246D4F8B410206DE4F737F8206D50442065\n" 
+"A06CA0EB0A00A0645744E06C5044E0642766E069B9B288\n" 
+"4207D200962B46226E40F209117C48DEF74BFE206E7749\n" 
+"08600122216E6069EEF7F9FB94F918004109764A012300\n" 
+"F01F0003FA00F042F82100A06C08BB0120E06303202074\n" 
+"60694FF44171016081696F4A1143816194F9180041096A\n" 
+"4A012300F01F0003FA00F042F8210002212046EFF71EFA\n" 
+"A06A20B1E26C0021E06AA36A98475B480660E06C06B0BD\n" 
+"E8F0872DE9F04784B08046164699460025C8EB08105C4A\n" 
+"02EB0017387C032806BF787C01286FF0010040F099800C\n" 
+"4697F918004109554A012300F01F0003FA00F042F82100\n" 
+"402107F13C00E3F7FCFE2C2107F18800E3F7F7FE3C647E\n" 
+"643C6530197865BE64042038747869D0F818A04AF00041\n" 
+"81613846FFF7A2FE7969C1F818A097F918104A09414B4F\n" 
+"F0010C01F01F010CFA01F143F822100028786909D18169\n" 
+"3C4A1140816149464046EFF7C0F8054610E04FF4417101\n" 
+"608169314A1143816197F9180041092C4A00F01F000CFA\n" 
+"00F042F8210097F9180041092B4A012300F01F0003FA00\n" 
+"F042F8210097F918004109224A00F01F0003FA00F042F8\n" 
+"21000C9818B903203874FD6C28E0CDB1B9F1000F24D06F\n" 
+"20E1F782FE48B102960194CDF800802B461C4A1C496F20\n" 
+"E1F787FEB86AA0B1FA6C6FF00401F86ABB6A98470DE06F\n" 
+"20E1F76BFE48B102960194CDF800800023104A12496F20\n" 
+"E1F770FE284604B0BDE8F0870000188089001C80890078\n" 
+"70860088708600F19403A06484001C71860080E200E028\n" 
+"71860004030080187A890080E100E000E100E0FBFCFF7F\n" 
+"6C71860078718600CC71860070B50A4E04463078401C00\n" 
+"253070E1F791F9606810B1401E60600125707808B9E1F7\n" 
+"82F9E1F7C7FA284670BD1C27880008B902488068406970\n" 
+"4700BF1C27880070B505460E46E1F775F90C4C012E0BDB\n" 
+"206A3218A0684069284205D1082128460EF0E0FCE1F766\n" 
+"F9A068456900214161607808B9E1F758F9284670BD1C27\n" 
+"8800F0B5154F044685B0B86802940D46164601940390E1\n" 
+"F74EF9B868C660386A301A012805DA7878A0B9E1F73EF9\n" 
+"05B0F0BD2068009000A82060009808B100A9416000A9B8\n" 
+"68816045F00401B8680174E1F760FB05B0F0BD00BF1C27\n" 
+"880030B581B00546E1F727F9114C6078401C6070012028\n" 
+"71286868B12078401C207028460EF09DFC20B968790128\n" 
+"1CBF00202871E1F752FA6078401E6070C0B220B901B0BD\n" 
+"E83040E1F701B901B030BD00BF1C27880010B50446E1F7\n" 
+"FEF80020207104484078002804BFBDE81040E1F7EEB810\n" 
+"BD00BF1C27880082B000228DF8002000AA59B1137810F8\n" 
+"01CB8CEA0303DFF84CC013F80C301370491EF3D19DF800\n" 
+"0002B0704700BF002101707047027851400A4A895C0170\n" 
+"084670475AB1037811F801CB8CEA0303DFF814C013F80C\n" 
+"300370521EF3D10078704700000000606E8600E1E70028\n" 
+"18BFFFF74BBA70470278C9B28A421AB11CBF10F8012FF9\n" 
+"E718BF002070470000C9B2830706D0521E22D310F8013B\n" 
+"9942F7D11FE0083A13D302F1040241EA012141EA014150\n" 
+"F8043B121F21BF4B40A3F1013C2CEA030C1CF0803FF3D0\n" 
+"C9B2001F083210F8013B521E28BF91EA030FF8D818BF01\n" 
+"20401E704730B4436803F0004201211B031B0B436004BF\n" 
+"0368002B08D10DE00368DD0F45EA440444605B00036049\n" 
+"1E4468E302F4D523031B0B436043681A434260084630BC\n" 
+"704700004FF4001C1CEB410F94BF1CEB430F09E041EA03\n" 
+"0C50EA4C0C52EA0C0C03D2994208BF9042704714BF8B42\n" 
+"8242704700004FF4001C1CEB410F94BF1CEB430F09E041\n" 
+"EA030C50EA4C0C52EA0C0C03D28B4208BF8242704714BF\n" 
+"994290427047000070B504460D466068C0F30A5040F2FF\n" 
+"71884207D16068000304BF2068002817D0022070BD20B9\n" 
+"2046FFF798FF012867DA012D0FDB40F2FF71091A8D420A\n" 
+"D3606800284CBF9FED2F0B9FED300B84ED000B012070BD\n" 
+"4142A942616806DA6FF31E51401941EA0050606041E040\n" 
+"1E63680122451962F31F5305F1350001F0004163603528\n" 
+"03D361600020F1940330688400206070BD002215F11F0F\n" 
+"04DA22682360002020356060684213D0521E25689241C0\n" 
+"F12003D2439D4045EAD27225686668C54006FA03F32B43\n" 
+"2360636823FA00F06060606808436060B2F1004F03D80D\n" 
+"D12078C0070AD52068401C2060206828B96068401C6060\n" 
+"4FF0FF3070BD6068884204BF20680028F6D1002070BD00\n" 
+"0000000000F0FF000000000000F07FF446400D40EAC120\n" 
+"490006D200F014F8004248BF6FF00040604700F00DF84F\n" 
+"F0004188428CBF084640426047400D40EAC120490080F0\n" 
+"0D8040F00040490DA1F58061491C05D4D1F11F0154BFC8\n" 
+"40C01770474FF00000704770B44FF0004591EA030F44BF\n" 
+"6B4004F043B800BF841A71EB030604D26E40001BB14112\n" 
+"1973414FF4001C1CEB410F34BF7CEB430684E00C0DA4EB\n" 
+"1356362E7DDC012E43DC45EAC32343EA525312BFD20292\n" 
+"025B08240545EAC12141EA5051D2EBC020994125D407D1\n" 
+"B0FA80F610FA06F164D00020203608E0B1FA81F6B140C6\n" 
+"F1200220FA02F21143B0404FEAF474B4EB465434F00106\n" 
+"4FEA74040AD8D6F50016760D04F00044F04061FA06F250\n" 
+"40F1404840C00A40EA415021F0004128BF5FEA500550F1\n" 
+"000044EBD12137E045EAC323DB0A45EAC121C90AB6F120\n" 
+"050EDD42EA0242120CC5F1200603FA06F6EB4042EA0605\n" 
+"6D42984161F100010DE062FA06F5F240554063FA06FC82\n" 
+"EA0C02F3405A406D42904161EB030111F4801F05D1641E\n" 
+"620502D06D004041494121F48011430875F1004350F100\n" 
+"0041EB045170BC70471CEB410F15D223F0004352EA4306\n" 
+"0BD04FEA4C0CBCEB410F04D80C0D661E342EB7DDEBE780\n" 
+"1A994150EA410608BF0021E4E708BF1CEB430F28BF6FF0\n" 
+"0001DDE7F0B540F2FF7581EA030C0CF0004C15EA11541D\n" 
+"BF15EA1357AC42AF42E5E0BC41C1F31301C3F31303801A\n" 
+"994143F4801304D2641E4000494180185941C90241EA50\n" 
+"51B1FBF3F603FB1611A2FB0675D7EBC020A94102D2761E\n" 
+"80185941C90241EA5051B1FBF3FE03FB1E11A2FB0E75D7\n" 
+"EBC020A94103D2AEF1010E80185941890241EA90517605\n" 
+"46EA8E2EB1FBF3F603FB1611A2FB0675D7EB8020A94102\n" 
+"D2761E80185941C90241EA50514EEA060EB1FBF3F603FB\n" 
+"1611A2FB0675D7EBC020A94102D2761E80185941C90241\n" 
+"EA5051B1FBF3F703FB1711A2FB0735D3EBC020A94167F1\n" 
+"00070CBF004247F0010766F3D5274FEA1E31B80814F580\n" 
+"6412DDBD0775F1004250EB0E5051EB045111F5801F5CBF\n" 
+"41EA0C01F0BD4CF07F6141F0E0410020F0BDBD076D0840\n" 
+"EA0E5041F4F19403C06B84008011D4F10104B4F120060A\n" 
+"DAC4F120060200E04001FA06F3E1401843B24015430EE0\n" 
+"342C13DCC6F1200445EA40056D0820FA06F2154321FA06\n" 
+"F0A1400D43002175F1004250F1000051EB0C01F0BD0020\n" 
+"5FEA0C01F0BDCFB992185B41B3FA83F704BFB2FA82F6BF\n" 
+"190B3FB7F120062FBF02FA06F3BB40C7F1200622FA06F6\n" 
+"38BF3343BA401CB1E419641E33E77F4231F00041B1FA81\n" 
+"F404BFB0FA80F6A4190B3CB4F120062FBF00FA06F1A140\n" 
+"C4F1200620FA06F638BF3143A0403C1B1AE7AC421ABF05\n" 
+"EA1357AF4212E050EA41061CBF52EA4306BFE750EA4107\n" 
+"304661461CBF41EA0551F0BD52EA430C08BFC143F0BD00\n" 
+"204FF4001616EB410F98BF16EB430F08BF16EB410F24BF\n" 
+"C14305E016EB430F0CBF61464CEA0551F0BD91FBF2F303\n" 
+"FB1211C0E90031704770B50446E06A68B10849074D8968\n" 
+"8C420EBF00262E682860E06A0EF029F90020E0622E6070\n" 
+"BD0000CCD288001C27880010B5CC4C2078002804D1F7F7\n" 
+"1AFD0121217010BD012010BD1CB5C74C2078800701D501\n" 
+"2016BD0020F7F740FA0120009001AB86221B210020E9F7\n" 
+"3CFC002808D127220FF28C310FF27830E9F729FB002016\n" 
+"BD9DF80400400624D59DF8040000F0BF008DF804000FF2\n" 
+"CC300088ADF800009DF804008DF80100022300AA1B2100\n" 
+"20E9F7E0FB002808D12A220FF244310FF23030E9F705FB\n" 
+"002016BDE9F78CFA3221E9F779FC9DF80400C0071BD40F\n" 
+"F288300088ADF800009DF8040040F001008DF801000223\n" 
+"00AA1B210020E9F7BBFB002808D12F220FF2F8210FF2E4\n" 
+"20E9F7E0FA002016BD0120009001AB87221B210020E9F7\n" 
+"E0FB002808D133220FF2D4210FF2C020E9F7CDFA002016\n" 
+"BD9DF8040000F0F8008DF804000FF224300088ADF80000\n" 
+"9DF804008DF80100022300AA1B210020E9F788FB002808\n" 
+"D135220FF294210FF28020E9F7ADFA002016BDE9F734FA\n" 
+"3221E9F721FC207840F0020020700121022007F021F801\n" 
+"2016BD00B583B00120009001AB87221B210020E9F79CFB\n" 
+"002808D15D220FF24C210FF23820E9F789FA00200EBD9D\n" 
+"F8040040F007008DF804000FF2A0200088ADF800009DF8\n" 
+"04008DF80100022300AA1B210020E9F744FB002808D15F\n" 
+"220FF20C210FF2F810E9F769FA00200EBD9DF804007F28\n" 
+"32D10120009001AB86221B210020E9F765FB002808D162\n" 
+"220FF2DC110FF2C810E9F752FA00200EBD9DF8040040F0\n" 
+"40008DF804000FF234200088ADF800009DF804008DF801\n" 
+"00022300AA1B210020E9F70DFB002808D164220FF29C11\n" 
+"0FF28810F19403506F8400E9F732FA00200EBD3D480178\n" 
+"01F0FD0101700021022006F0AAFF01200EBD0120704710\n" 
+"B584B004460020F7F723F90620009001ABB3221B210020\n" 
+"E9F71FFB002808D190220FF250110FF23C10E9F70CFA00\n" 
+"200EE001A8417821709DF804106170C178A1708178E170\n" 
+"4179217100796071012004B010BD30B583B004460020AD\n" 
+"F8040020484568687A002807D1286E40688047E9F774F9\n" 
+"0A21E9F761FB0020F7F7E9F80220009001ABB9221B2100\n" 
+"20E9F7E5FA002808D1B8220FF2DC010FF2C800E9F7D2F9\n" 
+"00203EBD9DF805009DF8041040EA012000B200EB40004F\n" 
+"F47A7190FBF1F01530207000206070687A002802D1286E\n" 
+"8068804701203EBD00004B5D8800495D8800EC03880010\n" 
+"B504462078002819D10FF2FC00E9F7A7F921460220F9F7\n" 
+"A5F800281DD10FF20410E9F79DF921460220F9F79BF800\n" 
+"2813D10FF20810E9F793F9002010BD207801280AD10FF2\n" 
+"0C10E9F78AF92046FFF78EFF002801D1002010BD012010\n" 
+"BD80B5062806D10846FFF782FF002801D1002002BD0120\n" 
+"02BD0FF2F4010120F1F748BE5B494E564E5D25733A2564\n" 
+"0A00000000443A5C4D43555C53454E534F525F6B616C6D\n" 
+"6961615F5452454C54455F4252434D5F4E6F746550435C\n" 
+"4D43555C50726F6A6563745C5353505F53656E736F7248\n" 
+"75625C53485F48414C5C7372635C4779726F73636F7065\n" 
+"5F49434D32303632382E63000006000000060000000700\n" 
+"000007000000060000005B494E564E5D4779726F73636F\n" 
+"70655F53656C6674657374000000005B494E564E5D4779\n" 
+"726F73636F70655F52657472790000005B494E564E5D20\n" 
+"73656C6674657374206661696C000000005B494E564E5D\n" 
+"4779726F73636F70655F54656D7000000000196D840031\n" 
+"6D8400816E84006F6F840000000000736F840000000000\n" 
+"59708400B7708400002106E0DFF8A02D8A180B5C82F838\n" 
+"30491C0929F6DB704700EBC0000FF204014018EDE70001\n" 
+"00FF0000000001FF000000FF0000000100FF0001000000\n" 
+"000101000000010000000100FF00FF00000000FF010000\n" 
+"00FF000000FF0001000100000000FFFF00000001000000\n" 
+"FF2DE9F14F86B00C460E20009001AB90225C210220E9F7\n" 
+"31F9002809D00E20009001AB90225C210220E9F727F900\n" 
+"2802D14FF0FF30D3E09DF8040001A94A788B78CE78B508\n" 
+"0F79B60006F00C0646EA971607F03F0791F805804FEA98\n" 
+"0E91F806C04FEA081808F0300848EA1C1891F807A04FEA\n" 
+"CC0C0CF0780C4CEA5A1991F808C04FEA4A0A0AF03E0A4A\n" 
+"EADC1AF19403E072840091F809B04FEADB1B4BEA4C0B8D\n" 
+"F801B091F809C0CCF3840B8DF800B091F80AC00CF0010C\n" 
+"91F80BB04FEADB1B4BEA4C0CDDF818B08BF803C091F80A\n" 
+"C04FEA5C0C4FEA8C0C4FFA8CFC4FEAAC0CDDF818B08BF8\n" 
+"00C091F80BC00CF0010C91F80CB04FEADB1B4BEA4C0CDD\n" 
+"F818B08BF804C091F80BC04FEA5C0C4FEA8C0C4FFA8CFC\n" 
+"4FEAAC0CDDF818B08BF801C091F80CC00CF0010C91F80D\n" 
+"B04FEADB1B4BEA4C0CDDF818B08BF805C091F80CC04FEA\n" 
+"5C0C4FEA8C0C4FFA8CFC4FEAAC0CDDF818B08BF802C091\n" 
+"F80DC00CF0010CDDF818B08BF806C04FF00A0C1CFB00F0\n" 
+"A0F5A06020601CFB02F0A0F5A06060601CFB03F0A0F5A0\n" 
+"60A060A5F12000E060A6F108002061A7F1200060610EF1\n" 
+"2600A061A8F12000E061A9F140002062AAF1200060629D\n" 
+"F80100A0629DF80000E062002000E0401CC0B202460D2A\n" 
+"04DA525C002AF7D0002006E0487B000601D5002001E06F\n" 
+"F0090007B0BDE8F08F1CB5002400E0641CB4F57A7F12DA\n" 
+"0120009001ABB0225C210220E9F73CF8002802D14FF0FF\n" 
+"3016BD9DF804000006EAD4002016BD6FF0040016BD10B5\n" 
+"DFF8180B90F8541000290DD000F154046078002808D0FF\n" 
+"F7D5FF002802D56FF0040010BD00206070002010BD10B5\n" 
+"82B014460022ADF8002082228DF8002000AA0123537040\n" 
+"1E8041C043C00F400040F001005070491E8941C943C90F\n" 
+"50EA8100507002235C211846E8F7B5FF002802D14FF0FF\n" 
+"3016BD002C0BD0FFF7A3FF002802D56FF0040016BDDFF8\n" 
+"000D0021417003E0DFF8F80C01214170DFF8800A012180\n" 
+"F85410002016BD70B584B015461C46DFF8686A96F85420\n" 
+"002A04D10122FFF7B5FF002859D10820009001ABB0225C\n" 
+"210220E8F7C2FF002806D10FF2A400E8F731FF4FF0FF30\n" 
+"48E0002086F854009DF80400C009286001A89DF80410C9\n" 
+"0001F47E71427851EA5211218008998278920102F4FE52\n" 
+"C37852EA93020A800279920102F4FE52437952EA93024A\n" 
+"808279920102F4FE52C07952EA90008880099800220260\n" 
+"17E031F91230002B05D1036801245500AC402343036031\n" 
+"F9123041F6FE74A34206D10368012455006D1CAC402343\n" 
+"0360521C032AE5DB002004B070BD0000474D2D52463100\n" 
+"0038B504460020ADF80000FFF734FF002802D56FF00400\n" 
+"32BD85208DF8000000AD20786870022300AA5C211846E8\n" 
+"F70FFF002819D086208DF8000060786870022300AA5C21\n" 
+"1846E8F702FF00280CD087208DF80000A0786870022300\n" 
+"AA5C211846E8F7F5FE002802D14FF0FF3032BD002006E0\n" 
+"DFF8F194037076840020194118025D81F84120401C0328\n" 
+"F6DB002032BD80B50020ADF80000FFF7F1FE002802D56F\n" 
+"F0040002BD81208DF8000000208DF80100022300AA5C21\n" 
+"1846E8F7CCFE002802D14FF0FF3002BD002002BD70B58C\n" 
+"B0044602A800210160FFF7D1FE00282ED4DFF8B8080021\n" 
+"80F854100D4611E006A850F82100002808D08B560FF654\n" 
+"5656F82560704340FA83F08854491C0329EEDB6D1C052D\n" 
+"02A836DAFFF776FF002836D405A8019009A8009003AB04\n" 
+"AA00210846FFF7FAFE00282AD40498002802D06FF00400\n" 
+"30E0002019E009A931F91010B1F5805F03D106AA002342\n" 
+"F82030B1F5805F03DD06AA012342F82030B1F5805F04DA\n" 
+"06A94FF0FF3241F82020401C0328E3DB002102AAC2E7FF\n" 
+"F73FFF002802D54FF0FF3008E0002503E002A8285C2855\n" 
+"6D1C032DF9DB00200CB070BD2DE9F0438BB004460E4600\n" 
+"2005900490FFF760FE002802D56FF0040071E0DFF8D057\n" 
+"002085F8540005A8019008A8009002AB03AA00210120FF\n" 
+"F7A1FE0398002802D06FF004005CE004A8019006A80090\n" 
+"02AB03AA01210846FFF791FE0398002802D06FF004004C\n" 
+"E005F120077869F1F75AFF80468946BDF92000BDF91810\n" 
+"401AF1F751FFDFF85C2BDFF85C3BF1F763FF42464B46F1\n" 
+"F75FFF0022DFF84C3BFFF72AF9FFF73CF820600DF11808\n" 
+"0DF120097869296A4843F1F736FF04460D46B9F90200B8\n" 
+"F90210401AB9F90410401AB8F904104018F1F727FFDFF8\n" 
+"142BDFF8143BF1F739FF22462B46F1F735FF0022DFF8F8\n" 
+"3AFFF700F9FFF712F830600598049908430BB0BDE8F083\n" 
+"80B5FFF7E3FD002802D56FF0040002BD002211460846BD\n" 
+"E80840EEE500002DE9F8432DED048B8AB0044689461746\n" 
+"1D4600200790804607A80190CDF8009002AB08AA414608\n" 
+"46FFF716FE002802D54FF0FF30FAE04046DFF8906615E0\n" 
+"39F910108219D2780FF64C3333F91220891A821992F941\n" 
+"208357D21A06EB80039B6C03FB021147F82010401C0328\n" 
+"E7DB306F06EB4000BDF80810A0F85810306F401C30670A\n" 
+"2801DB40463067F06E401CF0660A2801DB0A20F0664046\n" 
+"06E006EB4001B1F9581008FA81F8401CF16E8842F5DB08\n" 
+"EB88004000B0FBF1F004903868009078680390B8680190\n" 
+"169800281DD00098B168049A51434FF47A7291FBF2F140\n" 
+"1A00900398F168049A51434FF47A7291FBF2F1401A0390\n" 
+"01983169049A51434FF47A7291FBF2F1401A0190039801\n" 
+"99401A0690039840420199401A0590706BF1F76FFE41EC\n" 
+"180B9FEDCB9B009864217269069B5A4301FB0020B16905\n" 
+"9AF19403007A840002FB0100F1F75EFE53EC192BF1F772\n" 
+"FE53EC182BF1F76EFEFEF750FF0490F0690099326A069B\n" 
+"5A4301FB0020716A059A02FB0100F1F746FE53EC192BF1\n" 
+"F75AFE53EC182BF1F756FEFEF738FF0390B06A0099F26A\n" 
+"069B5A4301FB0020316B059A02FB0100F1F72EFE53EC19\n" 
+"2BF1F742FE53EC182BF1F73EFEFEF720FF019096F93800\n" 
+"049996F93920039B5A4301FB002096F93A10019A02FB01\n" 
+"00206096F93B00049996F93C20039B5A4301FB002096F9\n" 
+"3D10019A02FB0100606096F93E00049996F93F20039B5A\n" 
+"4301FB002096F94010019A02FB0100A060002D02D0BDF8\n" 
+"080028800898002802D06FF0040000E007980AB0BDEC04\n" 
+"8BBDE8F2831CB50020ADF806008DF8040008E0DFF88414\n" 
+"41180FF65012825C81F84120401C0328F4DB88208DF806\n" 
+"000DF106040020607002230DF106025C211846E8F788FC\n" 
+"002817D089208DF806000020607002230DF106025C2118\n" 
+"46E8F77AFC002809D00120009001AB80225C210220E8F7\n" 
+"B2FC002802D14FF0FF3016BDDFF818449DF8040084F844\n" 
+"0004F108012046FFF765FB002812D4002007E004EB8001\n" 
+"0FF6900252F820208A64401C0328F5DB04F14400002101\n" 
+"82C1628162084616BD002815D090F90010202911DA90F9\n" 
+"0120202A0DDA90F90200202809DA6FF01E03994205DB9A\n" 
+"4203DB984201DB01207047002070472DE9FC4704460D46\n" 
+"16461F464FF00009DFF89483D8F8A000012802D0022828\n" 
+"D052E008F1A00ADAF81800DAF81410411AB1F5FA7F48D3\n" 
+"CAF81400FFF72EFD8146B9F1000F40D4DAF80C00002805\n" 
+"D108F1B000FFF7BBFF002803D10220C8F8A00002E00020\n" 
+"C8F8A000FFF728FE00282BD55AE001A8FFF72FFD8146B9\n" 
+"F1000F23D408F1A00A9AF910009DF9041088420CD101A8\n" 
+"9AF9111090F90120914205D19AF9121090F90200814201\n" 
+"D04FF040090020C8F8A00006E000EB080101AA825C81F8\n" 
+"B020401C0328F6DBB9F1000F01D548462AE00A9800903B\n" 
+"46324629462046FFF7FCFD002820D408F1A00A012814DB\n" 
+"DAF80C10002903D1DAF81810CAF814100121CAF80C10D8\n" 
+"F8A010002902D10121C8F8A01040EA090902E00020CAF8\n" 
+"0C00FFF7CDFD002800D44846BDE8F68700009A99999999\n" 
+"99B93FF8B5040002D16FF07F00F2BD984D6A6F002A02D1\n" 
+"6FF00200F2BD05F17406326B002A21D0009104F1200304\n" 
+"F1140204F10C01FFF74AFF002816D4002110E005EB8102\n" 
+"02F1780304EB4107B7F90C70DF6004EB81077F699F6154\n" 
+"F821309367491C0329ECDB318D2184316B002901D00028\n" 
+"F19403907D840014D500210EE005EB8102936F44F82130\n" 
+"783204EB4103D7689F8104EB810392695A61491C0329EE\n" 
+"DB318D2184716CB26C51187164F2BDDFF8CC05704770B5\n" 
+"00206F4C11E001190FF25C62825C81F8B02004EB800101\n" 
+"F178020FF24C6353F82030D3608B679361401C0328EBDB\n" 
+"04F174050020288568643220A8640020286368630120E8\n" 
+"624FF0FF3060670020A8630320FFF7EEF9FFF769FE0028\n" 
+"05D50FF2A850E8F7C2FA002070BD04F1B0063046FFF7BA\n" 
+"FE00280FD03046FFF7D8FB002805D50FF28C50E8F7B0FA\n" 
+"002070BDFFF712FCC00FE86208E0FFF70DFC002802D501\n" 
+"20E86201E00220E862012060671822002104F1C000F0F7\n" 
+"9FFC012070BD80B5DFF80805D0F8A410012909D00121C0\n" 
+"F8A410FFF701FD0FF24050E8F786FA06E00121C0F8A810\n" 
+"0FF23850E8F77EFA012002BDDFF8D40400F1A4014A6801\n" 
+"2A03D00021C0F8A41001E0002048600120704701207047\n" 
+"38B5002803D002283ED00DD34DE0274800F1740494F83C\n" 
+"00087094F83D00487094F83E00887040E02148436F002B\n" 
+"07D16FF002010FF2E040E8F74DFA002032BD002305E01C\n" 
+"185D5684F8B0505B1CDBB29342F7DB00F17404216B0029\n" 
+"25D000F1B0052846FFF736FE002803D02846FFF754FB1A\n" 
+"E0FFF795FB002802D50120E06213E00220E06210E00023\n" 
+"0CE001EB4300407811F8132012EB0020DFF81C2402EB43\n" 
+"0290835B1C092BF0DB012032BD445B88002DE9F04389B0\n" 
+"05460E46904699460027012100A8FFF7BAFE04460FE000\n" 
+"A850F82700F1F785FBDFF8E423DFF8E433F1F797FBFEF7\n" 
+"79FC25F817007F1C032FEDDB002C06D521460FF22840E8\n" 
+"F7EBF900204FE0E00702D547F6FF702880A00702D5DFF8\n" 
+"B0032880600702D547F6FF706880200702D5DFF89C0368\n" 
+"80E00602D547F6FF70A880A00601D5E248A880E248C468\n" 
+"04F10C077A7D2946F868E368C018ECF7DDFC2046E8F782\n" 
+"FD7A7DF868E16841182846ECF7D3FCD44C4A4631462846\n" 
+"636898474046A16888473088B8F80010081828807088B8\n" 
+"F8021008186880B088B8F804100818A88031463046CC4A\n" 
+"52689047012009B0BDE8F08330B58BB0044600A800210A\n" 
+"4606C00D46FFF7E9F9002807D56FF004010FF26430E8F7\n" 
+"84F928462DE0294602A8FFF732FE002801D5284625E0FF\n" 
+"F7D5F9002807D56FF004010FF24830E8F770F9284619E0\n" 
+"0798ADF80000099808990A1AADF802204942081AADF804\n" 
+"0009E000A830F9150004F8150004EB4501001248706D1C\n" 
+"032DF3DB01200BB030BDF8B504460025EAF789F80746F1\n" 
+"940320818400FFF751FE0646A1480069C06A80689A49C1\n" 
+"F8BC00F86E400717D406F1140306F10C02B11D3046FFF7\n" 
+"25FF00280DD12846F2BD06EB4500C18804F8151004EB45\n" 
+"01B0F90600001248706D1C032DF1DB7069A0710120F2BD\n" 
+"F8B505460026EAF758F80746FFF720FE0446F86E000706\n" 
+"D52846FFF77CFF00280BD0032526E004F1140304F10C02\n" 
+"A11D2046FFF7F4FE002814D13046F2BD34F8160005F816\n" 
+"0005EB460034F916100912417004EB46018A898271B1F9\n" 
+"0C100912C171761C032EEADB0225182221466B48ECF703\n" 
+"FC704850F82500C06A80686849C1F8BC000120F2BD0000\n" 
+"985B88002DE9F0478EB0044602A800210A4606C0E8F75B\n" 
+"F881465F4E06F174080120C8F83000706F002804D006F1\n" 
+"4100C078022803D0FFF7C9FDFFF727FE06F24107F87820\n" 
+"7000206070A070E07003220FF2E0110120FFF744FE0021\n" 
+"04A8FFF75FFD00286DD410F0150F02D06FF0050512E010\n" 
+"F02A0F02D06FF006050CE00498002808D10598002805D1\n" 
+"0698002802D16FF0070500E0002596F841002071787860\n" 
+"71B878A071E571002020726072064602AF0DE004A850F8\n" 
+"2600F1F703FA334A334BF1F717FAFEF7F9FA27F8160076\n" 
+"1C032EEFDB3548C66806F10C0A9AF8152002A9DAF80C00\n" 
+"F368C018ECF781FB3046E8F726FC9AF81520DAF80C00F1\n" 
+"68411802A8ECF775FBBDF908000012A072BDF80800E072\n" 
+"B7F902000012207378886073B7F904000012A073B888E0\n" 
+"73257402214846E8F7BCF900A901A8FFF730FA002801D5\n" 
+"002018E010F0150F01D06FF0050010F02A0F01D06FF006\n" 
+"000199091261740199A17400990912E174009921756075\n" 
+"0020C8F8300001200EB0BDE8F08700009A9999999999B9\n" 
+"3F00003240FCA9F1D24D62503F045C8800445B880028CF\n" 
+"88007B14AE47E17A843F0080FFFFEC038800ECD1880010\n" 
+"B50FF2AC0421460220F0F7D3FC0FF2C4010420F0F7CEFC\n" 
+"21460320BDE81040F0F7C8BC474D2D5046310000474D2D\n" 
+"5046320000474D2D4F00000000474D2D534B495000474D\n" 
+"2D494F46202564000000474D2D43462025640000000047\n" 
+"4D2D524631202564000000474D2D524632202564000000\n" 
+"52030000EE020000EE0200007F7F7F0000000000000000\n" 
+"0000000000100000000800000004000000020000000100\n" 
+"0000890E830F7D10771100000000CD7D84008D7E8400C1\n" 
+"7E8400DF7E840000000000778184000000000005828400\n" 
+"E37E8400CD7D84008D7E8400C17E8400DF7E8400000000\n" 
+"00158184000000000005828400E37E840010B588B0F194\n" 
+"03B084840001A81821E1F75CFE0120009001ABD022EE21\n" 
+"0520E8F703F89DF80410552956D1012854D1DFF84C4704\n" 
+"2020620320A084E0845520A0751620009001ABAA22EE21\n" 
+"0520E7F7ECFF002842D001A99DF804204B7843EA022222\n" 
+"808A78CB7843EA022262800A794B7943EA0222A2808A79\n" 
+"9DF80B3043EA0222E2800A7A9DF80D3043EA022222818A\n" 
+"7A9DF80F3043EA022262810A7B9DF8113043EA0222A281\n" 
+"8A7B9DF8133043EA0222E2810A7C9DF8153043EA022222\n" 
+"828A7C9DF8173043EA02226282097D9DF8192042EA0121\n" 
+"A18200E0002008B010BD38B50020ADF80000DFF8984606\n" 
+"2201462046F0F716F901202072F4208DF800002E208DF8\n" 
+"0100022300AAEE210520E7F74AFF0546012D03D00FF2B0\n" 
+"60E7F7FAFE0622002104F12000F0F7FBF8002060720146\n" 
+"C4E904010120A072284632BD80B50020ADF80000F4208D\n" 
+"F800002E208DF80100022300AAEE210520E7F724FF02BD\n" 
+"38B50546DFF81C46E8F71EFAA061E069A169091A142905\n" 
+"D2002803D00FF25460E7F7C8FEA069E061002D02D0012D\n" 
+"0DD01DE004F1200000F0CCF8002817D12078002812D160\n" 
+"7800280FD110E004F1220000F096F800280AD1A0780028\n" 
+"05D1E078002802D12079002801D000202072012032BDF0\n" 
+"B585B00546002422461346CDE9022300290ED0DFF89805\n" 
+"D0E9062312F1080043F10001000940EA01700911CDE902\n" 
+"011FE01046ADF804000220009001ABF622EE210520E7F7\n" 
+"08FF0446012C03D00FF2CC50E7F776FE012CEED19DF804\n" 
+"009DF8051041EA0020C11700F02BF9C117CDE90201DDE9\n" 
+"02010A22A2FB006702FB0177CDE90267DDE9020100B200\n" 
+"122871DDE902016871204605B0F0BDDFF8140500214172\n" 
+"01207047DFF80805002141720120704770B50446DFF8F8\n" 
+"5405F1200000F077F80646687A022808DA0622002105F1\n" 
+"2000F0F73DF8687A401C6872287A002805D10522294620\n" 
+"46ECF747F90BE0062205F120012046ECF740F9062205F1\n" 
+"20012846ECF73AF901202872304670BD1CB50021ADF804\n" 
+"10032100910346F622EE210520E7F799FE002805D10FF2\n" 
+"F840E7F708FE002016BDF4208DF804002E208DF8050002\n" 
+"2301AAEE210520E7F743FE0446012C03D00FF2D840E7F7\n" 
+"F3FD204616BD1CB50021ADF80410022100910346F622EE\n" 
+"210520E7F770FE002805D10FF2B840E7F7DFFD002016BD\n" 
+"F4208DF804008DF80500022301AAEE210520E7F71BFE04\n" 
+"46012C03D00FF29840E7F7CBFD204616BDF0B589B00446\n" 
+"00200146CDE90001CDE90201CDE90601CDE90401F19403\n" 
+"408884002078617841EA0020C117CDE90401DDE9040100\n" 
+"F071F8C117CDE90201A2780023E0781946000250EA0242\n" 
+"20791043DFF8B423928CC2F10802F5F770FCCDE90601DD\n" 
+"E9060100F084F8CDE90001DFF89853A87A0028DDE90001\n" 
+"15D0E44A002399420ADB01DC904207D3DDE90001E04A99\n" 
+"4206DB01DC904203D3DE481946CDE900011846A87212E0\n" 
+"D5E90423801A05F0F4FCB0F5FA7F0ADDDDE9002311460F\n" 
+"F2DC30E7F76AFDD5E90401CDE90001DDE90001C5E90401\n" 
+"0020E070DDE900010014A070DDE9000100B200126070DD\n" 
+"E900012070DDE902010A22A2FB006702FB0177CDE90267\n" 
+"DDE9020100B200126071DDE902012071012009B0F0BD70\n" 
+"B5BA4EB27D552A20D172890023821A61EB03033089A0FB\n" 
+"024500FB0355E40B44EA4544B6F91200C117C90241EA50\n" 
+"51C002B6F91420D317A21853EBE533DFF7DDFC201851EB\n" 
+"E531C6E90601D6E906010830001100B270BD2DE9FB4F84\n" 
+"B0A34ED6E90601B0F57A6061F10001A0FB002300FB0133\n" 
+"01FB0033120B42EA03521B13F4880025CDE90045B6F904\n" 
+"804FEAE879A0FB084500FB095501FB0855640B44EAC544\n" 
+"B6F90C804FEAE879A2FB08AB02FB09BB03FB08BB4FEA1A\n" 
+"4A4AEA0B4A4FEA2B4B14EB0A044BEB6535A41C45F10005\n" 
+"A40844EA8574AD1014F5004845F10009DDE900ABA8FB0A\n" 
+"4509FB0A55E40B44EA4544ED0BB6F92470DDE90489CDE9\n" 
+"0289B6F900804FEAE8794FEA890949EA98794FEA8808CD\n" 
+"E9008990469946B6F90E20D317A2FB08AB02FB09BB03FB\n" 
+"08BB4FEADA2A4AEA4B5ADDE9002312EB0A0243EBEB23B6\n" 
+"F902804FEAE879A0FB08AB00FB09BB01FB08BB4FEADA2A\n" 
+"4AEA4B5A12EB0A0043EBEB213A46F5F74AFB821C41F100\n" 
+"03920842EA8372DDE90201B0EB020861EBA3094CF25030\n" 
+"40FA07F2D317A2FB080102FB091103FB081100290CD802\n" 
+"D3B0F1004F08D2490041EAD071400022462B46DFF745FC\n" 
+"07E022462B46DFF740FC490041EAD071400002460B4612\n" 
+"0A42EA03621B12A2FB024502FB035503FB025540F6DE32\n" 
+"A2FB046702FB0577360C46EA0746434A4FF0FF33A2FB00\n" 
+"4502FB015503FB0055240C44EA05442D14321945EB2743\n" 
+"40F6CF64002512196B41120942EA0372801851EB231107\n" 
+"B0BDE8F08F7CB4012100222D4BB3F90040002C02D014F1\n" 
+"010F03D114468DF8004002E00C468DF80040B3F9025000\n" 
+"AC002D02D015F1010F02D11546657001E00D466570B3F9\n" 
+"0450002D02D015F1010F02D11546A57001E00D46A570DD\n" 
+"88002D03D04FF6FF76B54202D11546E57001E0F19403D0\n" 
+"8B84000D46E5701D89002D03D04FF6FF76B54202D11546\n" 
+"257101E00D4625715B89002B03D04FF6FF75AB4202D113\n" 
+"46637101E00B466371134604E01D5D002D00D1521C5B1C\n" 
+"062BF8DB062A00D100210170084676BC7047E02D880000\n" 
+"008800915F0100B0AD01001189010043E3FFFF18B40346\n" 
+"0C460020012B02D0022B02D009E011BCC7E41146491E89\n" 
+"41C943C90F204614BC09E512BC70470FF264010520F0F7\n" 
+"7CB8424F2D57460000004261726F3A204D656173757265\n" 
+"2025752061626E6F726D616C00000042542D5246000000\n" 
+"42522D524632000042522D574632000042522D52463100\n" 
+"0042522D57463100004261726F3A207072652025640000\n" 
+"0000AD84840085858400118784001D8784000586840029\n" 
+"87840000000000678B84003D8C84007CB500242046ADF8\n" 
+"0400E7F7E8FA054620208DF8040001AE20467070022301\n" 
+"AABA210520E7F799FB002801D1204676BD01212846E7F7\n" 
+"C3FC641C0120009001AB2122BA210520E7F7CAFB002801\n" 
+"D1002076BDA4B2B4F5FA7F05DD0FF2A420E7F733FB0020\n" 
+"76BD9DF804000006E0D420208DF8040002207070034601\n" 
+"AABA210520E7F76BFB002801D1002076BD012076BD1CB5\n" 
+"04460020ADF804000120009001AB0F22BA210520E7F79A\n" 
+"FB002801D1002016BD9DF80400BD2851D100F052F80028\n" 
+"01D1002016BD032001E0401E40B2002807D40FF2582151\n" 
+"F830108C4201D20028F3D110208DF8040001AC05206070\n" 
+"022301AABA21E7F731FB002801D1002016BD20208DF804\n" 
+"00C4206070022301AABA210520E7F722FB002801D10020\n" 
+"16BD21208DF8040040206070022301AABA210520E7F713\n" 
+"FB002801D1002016BD2E208DF80400DF206070022301AA\n" 
+"BA210520E7F704FB002801D1002016BD012016BD002016\n" 
+"BD80B50020ADF8000020208DF8000000208DF801000223\n" 
+"00AABA210520E7F7ECFA002805D10FF28010E7F79DFA00\n" 
+"2002BD012002BD80B58F20FFF779FF002801D1002002BD\n" 
+"012002BD80B5FFF728FF002805D10FF25810E7F786FA00\n" 
+"2002BD012002BD80B5FFF7E6FF002801D1002002BD0120\n" 
+"02BD80B5FFF7C3FF002801D1002002BD012002BD012070\n" 
+"47012070477FB5044601A800210A460B460EC001200090\n" 
+"01AB0F22BA210520E7F7E8FA002846D09DF80400BD2842\n" 
+"D10320009001ABA822BA210520E7F7DAFA002801D10020\n" 
+"37E09DF80400207001AD68786070A878A0700020E07026\n" 
+"6826490868301A00F5C820B0F5482F0CD904222046EBF7\n" 
+"50FDF01206EB105001130FF2AC00E7F72CFAF19403608F\n" 
+"840000E00E600220009001ABAB22BA210520E7F7ADFA00\n" 
+"2801D100200AE09DF80400207168786071201D00F006F8\n" 
+"012000E0002004B070BD00004178007840EA01204FF4F0\n" 
+"7190FBF1F000EE100AB8EEC00ADFED070A30EE200ABDEE\n" 
+"C00A10EE100A80B205490870000A487001207047000000\n" 
+"002A4228008800D65D880001207047012070470FF25401\n" 
+"0520EFF7BDBE000042522D524600000042522D43460000\n" 
+"0042522D504600000041626E6F726D616C206261726F20\n" 
+"256400000000280000007000000050000000600000008F\n" 
+"00000050000000E8030000100000009B8E8400B58E8400\n" 
+"C78E8400D98E8400DD8E8400E18E840000000000DD8F84\n" 
+"00E18F84000020704701207047012070470120704738B5\n" 
+"04460D46E7F72AF90521E7F717FB0020104904E00A6802\n" 
+"55521C0A60401CA842F8DB012032BD0120704701207047\n" 
+"094802680A704A70511C01600120704706490A68027042\n" 
+"70501C086001207047000000002C008800945888009858\n" 
+"88000FF23C010820EFF747BE10B50FF2300421461220EF\n" 
+"F740FE21461320EFF73CFE21461420BDE81040EFF736BE\n" 
+"0FF210011520EFF731BE0FF22C011620EFF72CBE619084\n" 
+"00699084006D9084006D9084009D908400719084009990\n" 
+"8400B1908400A190840065908400699084006D9084006D\n" 
+"9084009D9084007190840099908400B1908400A1908400\n" 
+"0FB480B5082200210846F0F785F8022801D1022004E074\n" 
+"48002101704180012002BC5DF814FB7048002101700120\n" 
+"704738B501240020ADF800006B4D95F90000002809D120\n" 
+"4628700020A880A8680BF0F1FE0CF067F84CE001282CD1\n" 
+"6888401C68800DF10101A8680CF008F9002815D0082200\n" 
+"212046F0F74FF8032800D1032408220B210020F0F747F8\n" 
+"022801D1022032BD022028700CF02DFB2AE0B5F9020096\n" 
+"2826DB0520287000F065F80FF28410E7F7D6F81DE00328\n" 
+"1BD1A888401CA88000B2FB280DDA00A9A8680BF0EFFE00\n" 
+"280FD004202870204600F03EF800F04BF807E00FF25810\n" 
+"E7F7BBF80520287000F042F8204632BD10B53B4CF0F70B\n" 
+"F8E060E8F7EAFFA060E0683849C0F8981100F5CC703749\n" 
+"4160374981600FF21101C1600FF2D9010161012010BD00\n" 
+"00014600202D4AD26892F88121002A02D0012900D106E0\n" 
+"704780B5002000F006F8012002BD294890F90000704727\n" 
+"490870704780B5082200210846EFF7D7FF022801D10220\n" 
+"02BD012002BD80B51B4800218180418008220120EFF7C8\n" 
+"FF032801D1032002BD012002BD38B50124F19403F09284\n" 
+"00134D95F9000002281DD108220B212046EFF7B6FF0328\n" 
+"04D10FF29400E7F754F80324FFF7D0FF022805D10FF290\n" 
+"00E7F74BF8022032BD032800D103240320287002A0E7F7\n" 
+"41F8204632BD000053414900E4848800599184007F9184\n" 
+"00899184007788890018B440F249120B7812FB03030124\n" 
+"1C700B7812FB03035C700B7812FB030308249C700B7812\n" 
+"FB03000122C2700878401C087011BC88E7000023235341\n" 
+"204E460023235341204E535446000000534D20524D2046\n" 
+"4C00000000534D20414420464C000000000FB480B57F48\n" 
+"01210170052200210846EFF752FF022801D102200DE005\n" 
+"2207210020EFF749FF022801D1022004E000F0E1F80CF0\n" 
+"5BFA012002BC5DF814FB38B50124052207212046EFF736\n" 
+"FF032800D103246C4D95F90000032801D0012807D10522\n" 
+"00210120EFF727FF032800D103240020287000F0BEF80C\n" 
+"F0E3FA204632BD80B5002000F03DF8022801D1022002BD\n" 
+"032801D1032002BD012002BD10B5594CEFF708FF2061E8\n" 
+"F7E7FEA060E6F733FFE06020695449C0F8081100F58470\n" 
+"53494160534981600FF21101C1600FF249110161012010\n" 
+"BD000001460020494A126992F8F120002A02D0012900D1\n" 
+"02E07047002003E0474890F90000704745490870704770\n" 
+"B582B0064601253E4C94F90000012823D1A088401CA080\n" 
+"00B24C280BDB0020A08002202070052200212846EFF7C3\n" 
+"FE032800D10325012E59D1E068007D012807D1B4F90400\n" 
+"1F2851DB6078401C60704DE0A078401CA07049E002281C\n" 
+"D1012E0AD1E068007D012803D16078401C607002E0A078\n" 
+"401CA07094F90100012836DB052200210846EFF796FE02\n" 
+"2801D1022076BD032020702AE0032828D100208DF80000\n" 
+"00A9A0680CF0C4F9C0B202280DD1052200212846EFF77E\n" 
+"FE032800D103250120FFF79AFF0420207010E003280ED1\n" 
+"052200212846EFF76EFE032800D1032500206070A07002\n" 
+"2020700CF07EF9284676BD034800218180417081707047\n" 
+"00000000B4818800B9938400F793840039948400668889\n" 
+"0010B50C4640F24911227811FB020201231370227811FB\n" 
+"02025370227811FB020205239370227811FB02000121C1\n" 
+"70FFF753FF2078401C207010BD00000FB480B502220121\n" 
+"0020EFF72BFE022801D102200EE0022207210020EFF722\n" 
+"FE022801D1022005E00CF0F2F94B4800210170012002BC\n" 
+"5DF814FB80B5022201210846EFF70FFE032801D1032002\n" 
+"BD022207210120EFF706FE032801D1032002BD3E480021\n" 
+"0170012002BD00B58BB000A8EFF757FEF1940380968400\n" 
+"03A890EC030A0CF0FFF93749087001200BB000BD10B534\n" 
+"4CEFF7E8FDA060E6F716FE6060A0683149816778303049\n" 
+"4160304981600FF21D01C1600FF269010161012010BD80\n" 
+"B528484068007D0CF0D5F9012002BD002024498A6892F8\n" 
+"6120002A04D091F90010002900D0012070471E48002101\n" 
+"700120704710B50024012804D007D303280BD002D303E0\n" 
+"012407E0022405E0032401460FF26000E6F74DFE204610\n" 
+"BD000070B504460D4640F24916287816FB004001210170\n" 
+"287816FB00404170287816FB004002218170074890F900\n" 
+"00FFF7D2FF297816FB0141C8702878401C2870BDE87040\n" 
+"C2E76C7888000D96840047968400779684004C4D435053\n" 
+"2031202564000038B50446E8F752FD90F98450002C02D1\n" 
+"4FF0FF3032BD092200212046EFF711F86D1E062D36D8DF\n" 
+"E805F0040C131A21282F00012060704FF0FF30E0700120\n" 
+"20722CE04FF0FF30207020710120207225E04FF0FF3060\n" 
+"700120E07020721EE04FF0FF30207001212171207217E0\n" 
+"01206070E0704FF0FF30207210E0012020704FF0FF3020\n" 
+"71207209E04FF0FF306070E070207203E0012020702071\n" 
+"2072002032BD10B5A2B00DA80FF2A8311CC91CC0CE4C20\n" 
+"7800282CD10DA8FFF7A2FF4422002110A8EEF7BEFF0420\n" 
+"10904FF4FA60119009220DA913A8EBF7C9F810A984B068\n" 
+"464422E0F753FD0FBC04F09EFA10F1010F08D14FF0FF32\n" 
+"89210FF26030E6F79AFD002006E00FF26430E6F794FD01\n" 
+"202070012022B010BD0FB470B584B09DF82100B04C2070\n" 
+"00A90FF2603268CA68C100F034F86069002807D1012060\n" 
+"6100A8FFF75FFF00A804F0AAFA2069D0F86406C1170522\n" 
+"0023DEF72CFD0526A6FB002306FB0133C4E9022311464F\n" 
+"F4805004F0A2FA4FF4805004F011FB012004B070BC5DF8\n" 
+"14FB80B500F029F84FF4805004F042FB0020F4F755FC01\n" 
+"2002BD80B5C00710D5222200210846EFF7A1FC22220121\n" 
+"0020EFF79CFC222202210020BDE80840EFF795BC222200\n" 
+"210846EFF790FC222201210020BDE80840EFF789BC80B5\n" 
+"222200210120EFF783FC222201210846EFF77EFC222202\n" 
+"210120BDE80840EFF777BC2DE9F04393B00DA81421E0F7\n" 
+"F0FB002406A81021E0F7EBFB20460146CDE9000102A810\n" 
+"21E0F7E3FBE8F741FCFEF70AFA05466C4E3069D0F86406\n" 
+"C11705222346DEF7B7FC0522A2FB008902FB0199D6E902\n" 
+"01494501D1404506D0C6E9028941464FF4805004F027FA\n" 
+"3078C10715D56F6911E005EB4401B1F9061000EE101AB8\n" 
+"EEC00AF2EE040A80EE200A0AA901EBF19403109A840084\n" 
+"0181ED000A641C032CEBDBC00704D539460AA804F059FB\n" 
+"03E00021084604F054FB3078C0072DD500A906A80DF0ED\n" 
+"F8002410E006A850F82400EFF725FF02460B4600204649\n" 
+"EFF74DFEFCF72FFF02A941F82400641C042CECDB102202\n" 
+"A90DA8EAF7BEFF68698DF844003E48006C00F10C04627D\n" 
+"0DA9E368C0681818EAF7B0FF0120A074307880072DD500\n" 
+"A906A80DF0A0F8002410E006A850F82400EFF7F4FE0246\n" 
+"0B4600202E49EFF71CFEFCF7FEFE02A941F82400641C04\n" 
+"2CECDB102202A90DA8EAF78DFF00208DF844002548C06B\n" 
+"00F10C04627D0DA9E368C0681818EAF77FFF0120A07401\n" 
+"2013B0BDE8F08380B5EFF7B4FB184908611B49C0F87816\n" 
+"00F278601A4941601A4981600FF21101C1600FF2790101\n" 
+"61012002BD00000E48006990F86106002801D100207047\n" 
+"05E080B5002000F006F8012002BD0E4890F9000070470C\n" 
+"49087070470349087001460FF2B800E6F729BC00008830\n" 
+"88006A88890080842E41EC0388009B9884000799840083\n" 
+"99840069888900222202210020EFF76FBB222202210120\n" 
+"EFF76ABB18B440F249120B7812FB030301241C700B7812\n" 
+"FB03035C700B7812FB030322249C700B7812FB03000022\n" 
+"C2700878401C087011BCB5E700000001000100000000FF\n" 
+"0000005B494E564E5D452025643A25640A00005B494E56\n" 
+"4E5D444D5020696E6974616C697A656420212121210000\n" 
+"000001000100000000FF000000525620666C6167202564\n" 
+"0000DFF80C0C90F8A91200EB810181ED7A0A90F8A91200\n" 
+"EB8101F0EE601AC1ED8A1A90F8A91200EB810181ED9A1A\n" 
+"00F2A9214A78102A01DA521C4A7090F8A912491C80F8A9\n" 
+"12C9B2102902DB002180F8A912704700002DE9F8432DED\n" 
+"028B0026DFF8B04B04F2A9256878022801DA30465EE037\n" 
+"4601E000267F1C6878874251DA94F8A902002802D10F20\n" 
+"0E2103E0401E411E00D5103104EB810804EB800999ED7A\n" 
+"0AD8ED7A0A30EE600A10EE100AEFF7E2FD21F00041EFF7\n" 
+"06FE08EE100A99ED8A0AD8ED8A0A30EE600A10EE100AEF\n" 
+"F7D2FD21F00041EFF7F6FD08EE900A99ED9A0AD8ED9A0A\n" 
+"30EE600A10EE100AEFF7C2FD21F00041EFF7E6FD00EE10\n" 
+"0ADFEDC00AB4EE608AF1EE10FA09DAF4EE608AF1EE10FA\n" 
+"04DAB4EE600AF1EE10FAAADB761CA9E7F6B2042E01DB01\n" 
+"2000E00020BDEC028BBDE8F2832DE9F84F2DED068BB0EE\n" 
+"408AF0EE608AB0EE419AF0EE619A0446DFF8BC5A05F5E4\n" 
+"7989ED050AB0EE68AA89ED06AAF0EE49AAC9ED07AA05F5\n" 
+"B2764FF00A0AB6F90E0010FB0AF0F19403A09D8400B6F9\n" 
+"1010471A05F5EE78214689B2404602F0FCFC05F5E47001\n" 
+"F069FF95F8C80110FB0AF099F8011000EB010A1FFA8AFA\n" 
+"05F52A7BBAF12A0F02D13FB2002F03D499F80200002813\n" 
+"D0DBF8080000280BD106F07EFC0120CBF8080099F80220\n" 
+"51460FF6AC20E6F7D8FA0120CBF80C0026E0DBF8080001\n" 
+"2808D106F075FC0020CBF808000FF69C20E6F7C7FADBF8\n" 
+"0C00BAF1280F0BDB002803D10FF69020E6F7BCFA0120CB\n" 
+"F80C0006F08BFC08E0012803D10FF68C20E6F7B0FA0020\n" 
+"CBF80C0099ED020AF0EE480AB4EE600AF1EE10FA21D199\n" 
+"ED030AB4EE4A0AF1EE10FA1AD199ED040AB4EE6A0AF1EE\n" 
+"10FA13D1DFF8EC793868401C3860152818D3D9F80800EF\n" 
+"F7FBFC02460B460FF64420E6F785FA002038600BE0B0EE\n" 
+"480A89ED020A89ED03AAC9ED04AADFF8B4090021016005\n" 
+"F5EE7090EC030AFFF7A6FE95F8A802022839D1204680B2\n" 
+"B0EE690A0CF0DAFE214689B2404605F097FE05F5B27420\n" 
+"4606F04EFBD5F8640101280FD104F00CFD204606F045FB\n" 
+"2C22314605F5C870EAF769FD0FF6D810E6F749FA22E000\n" 
+"F0E2FA00280ED0B08900280BD10FF6CC10E6F73DFA0120\n" 
+"85F8A80206F040FB204606F027FB00F05BF90CE001280A\n" 
+"D1FFF78EFE002806D00FF6A810E6F728FA022085F8A802\n" 
+"00F005F80020BDEC068BBDE8F28FDFF8B41801F5E47082\n" 
+"88002A13D1C288002A10D1DFF8EC2813785B1C1370DBB2\n" 
+"072B2ADB01238380D1F80811098CC180002010707047D1\n" 
+"F8082102F120035B8D002B0DD0042B03D0052B01D0082B\n" 
+"02DB0321818001E002218180118CC180704791F8C81104\n" 
+"2904D1042181804178C180704701218180118CC1807047\n" 
+"DFF8380890F8A8027047002806D0DFF82C18D1F8081158\n" 
+"22E0F77EB97047002803D0DFF868180968016070470100\n" 
+"803F38B500281ED1DFF8044804F5DE7500EE101AB8EE40\n" 
+"0A85ED010A04F5DE7006F0D7FA95ED010AF2EE0A0A20EE\n" 
+"200A10EE100AEFF71DFC02460B460FF6B000E6F7A7F932\n" 
+"E001281CD1DFF8C04700EE101AB8EE400A84ED6F0A04F5\n" 
+"DE7006F0B8FA94ED6F0AF2EE0A0A20EE200A10EE100AEF\n" 
+"F7FEFB02460B460FF67C00E6F788F913E0022811D1DFF8\n" 
+"844704F5DE75298104F5DE7006F09CFAB5F908000D2110\n" 
+"FB01F10FF66000E6F773F90FF66400E6F76FF942F24270\n" 
+"01460FF66400E6F768F940F2DF7001460FF66C00BDE834\n" 
+"40E6F75FB9F8B52DED028B84B005460E4617460FF66400\n" 
+"E6F754F942F2427001460FF63000E6F74DF940F2DF7001\n" 
+"460FF63400E6F746F9DFF80447F1940330A184004FF42F\n" 
+"7200212046EEF745FB04F15800C4F8080100EE105AB8EE\n" 
+"408A04F5DE7585ED018A00EE106AB8EE400A84ED6F0A2F\n" 
+"81F2EE0A8AB5F908000D2110FB01F0029020EE280A10EE\n" 
+"100AEFF78DFBCDE9000128EE280A10EE100AEFF785FB02\n" 
+"460B460FF2F070E6F70FF904F019FB04F5DE7006F029FA\n" 
+"04F1200042F21071C185018600218162022020842C2221\n" 
+"4604F15800EAF715FC012084F8A8020CF05AFD012084F8\n" 
+"AC020020286101F051FD04F5E47004B0BDEC028BBDE8F2\n" 
+"4001F04FBD10B596B006F0DAF9044600A8FFF701FF0098\n" 
+"001916B010BD70B52DED028BDFF8244604F5C272106904\n" 
+"F58471096E814205D1B4F87231558BAB4200F08B800E1A\n" 
+"02D5DFF84406861992ED020AD2ED0D0A70EE608AF5EE40\n" 
+"8AF1EE10FA03D59FEDA60A78EE808A94ED610AD2ED0B0A\n" 
+"30EE608AB5EE408AF1EE10FA03D59FED9E0A38EE008AB4\n" 
+"F87201C0B292ED010A0CF0FBFEB0EE401A04F2AB256878\n" 
+"012802D002282DD034E004F1B0019FED941AF0EE480AB0\n" 
+"EE680A304600F05AF894F8AB02301884F8AB02C0B20628\n" 
+"21DB04F1780021469FED8A1AD0ED1C0A90ED170A806B00\n" 
+"F046F894F8AB02401C84F8AB025822002104F1B000EEF7\n" 
+"6EFA0220687007E02146F0EE480AB0EE680A304600F030\n" 
+"F8B4F8720100280AD15822002104F1B000EEF759FA0020\n" 
+"84F8AB02012068702C2204F5B27104F5C870EAF762FBC4\n" 
+"F808415822214604F15800EAF75AFB04F15800C4F80801\n" 
+"04F5B9704088B4F87810884202D02084A4F87800BDEC02\n" 
+"8B70BD00002DE9F8432DED048B8AB0B0EE409AB0EE608A\n" 
+"F0EE418A0E4606F12004DFF8B47407F5B675E988A18531\n" 
+"46B0EE680A00F0E9F8D7F8B80200281AD194ED010A30EE\n" 
+"090A84ED010A00F033FA84ED010AE8886085A888208568\n" 
+"69606194ED060A30EE080A84ED060A00F017FA84ED060A\n" 
+"5DE007F5DE7007AA0AC80AC20368136007F5B27184B068\n" 
+"462C22DFF792FF0FBCB0EE680A00F059F9D4ED010A30EE\n" 
+"800A84ED010A00F005FA84ED010AE888F5EE408AF1EE10\n" 
+"FA0BDD032803D106206085208510E004280ED108206085\n" 
+"20850AE0032803D107206085208504E0042802D1092060\n" 
+"85208595ED050AF6EE000A20EE200A84ED050AA069EFF7\n" 
+"1FFA8046894618EE100AEFF719FA0022DFF8CC33EFF742\n" 
+"F942464B4600F090FAEFF736FA00EE100A84ED060A00F0\n" 
+"B8F984ED060AE869EFF703FADFF8A823DFF8A833EFF72B\n" 
+"F9EFF723FA00EE100A84ED070ADFED7E0AB4EE600AF1EE\n" 
+"10FA02DBDFF8CC03E061D7F8F19403C0A484006C016062\n" 
+"608D002801D10020606200202062E8686063688A208628\n" 
+"8930840AB0BDEC048BBDE8F183002474490000000080B5\n" 
+"06F08DF840F6B931884201D3012002BD002002BD38B50D\n" 
+"4605F11004A18F032912D1B5EE400AF1EE10FA06DD2969\n" 
+"4018286100F080F9286131BD61684018606000F079F960\n" 
+"6031BD042911D1B5EE400AF1EE10FA06DDA1684018A060\n" 
+"00F06BF9A06031BDE1684018E06000F064F9E06031BDF8\n" 
+"B52DED028B0546B0EE408A0C4620682818206000F056F9\n" 
+"206018EE100AEFF789F921F0004100221346FCF7F3F846\n" 
+"D2A74ED6F8B802002832D106F58877B86806280FD2B4F8\n" 
+"4A10042903D179686918796004E0D6F810116918C6F810\n" 
+"112818B86054E0E1684018E06000F02BF9E0602146B0EE\n" 
+"480AB868FFF793FFE0682818E06000F01FF9E0602146B0\n" 
+"EE480A2846FFF787FF00F03EF80120C6F8B80236E0E068\n" 
+"2818E06000F00DF9E0602146B0EE480A2846BDEC028BBD\n" 
+"E8F44071E7B4F84A00032802D0042807D00DE060682818\n" 
+"606000F0F7F860600CE0A0682818A06000F0F0F8A06005\n" 
+"E060682818606000F0E9F86060764E06F5887080680028\n" 
+"01D000F011F800F006F80020C6F8B802BDEC028BF1BD6E\n" 
+"480021C0F8101100F588704160816070476A484168D0F8\n" 
+"102151184160011D4A68D0F814018018486070470100C8\n" 
+"410FB438B52DED088BB0EE408ADFED638A9FED629ADDED\n" 
+"159A19EE900AEFF7E8F841EC1A0B9FED5EBBBDF83E0004\n" 
+"2853EC1A2B5D4824D15D49EFF708F853EC1B2B00F056F9\n" 
+"EFF7FCF80BEE100AB5EE408AF1EE10FA38D453EC1A2B57\n" 
+"485449EEF7F5FF04460D4618EE100AEFF7C1F822462B46\n" 
+"EEF7EBFFEFF7E3F809EE100A23E04C49EEF7E3FF53EC1B\n" 
+"2B00F031F9EFF7D7F80BEE100AB5EE408AF1EE10FA13D4\n" 
+"53EC1A2B44484549EEF7D0FF04460D4618EE100AEFF79C\n" 
+"F822462B46EEF7C6FFEFF7BEF809EE100AF5EE409AF1EE\n" 
+"10FA18D09DED0E0AB5EE400AF1EE10FA11D010EE100AEF\n" 
+"F784F80022354BEEF7AEFF02460B4600203349FCF778F9\n" 
+"EFF7A0F808EE900A3BEE090A10EE100AEFF770F82D4A34\n" 
+"4BEEF79AFF04460D461798EFF767F822462B46EEF791FF\n" 
+"04460D4618EE900AEFF75DF822462B46EEF787FFEFF77F\n" 
+"F800EE100ABDEC088B31BC5DF814FBDFED1E0AB4EE600A\n" 
+"F1EE10FA03DBDFED220A30EE200A7047DFED180AB4EE60\n" 
+"0AF1EE10FA03DBDFED1C0A30EE200A70471349884201D3\n" 
+"194908187047F46188000000E03FB81E85EB51B8AE3F00\n" 
+"0000000000000000000C40F1940350A884009A99999999\n" 
+"99C93FCCCCEC3F9999B93FCDCCCCCCCCCCFC3F00004E40\n" 
+"0000F03F7B14AE470124744981969800B06488005D8889\n" 
+"00C06388000000C841E17A743F002474C9806967FF05F0\n" 
+"3CBF05F041BF05F073BF012801D105F05ABF7047000050\n" 
+"443A204250204F4E2025642025640050443A204250204F\n" 
+"4646000050443A2056482053544550434E542055500000\n" 
+"0050443A2045584954205648005044204E414320256600\n" 
+"00005044202D3E204F46520000005044202D3E20570050\n" 
+"44202D3E20520050443A20312025660000000050443A20\n" 
+"322025660000000050443A203320256400000000504420\n" 
+"3A2032314155473134000000005B4D5F504420205D2056\n" 
+"65723A202564000000005B5052495F50445D205665723A\n" 
+"20256400000000504420496E69743A2032384155473134\n" 
+"0000000050443A20312025662032202566203320256400\n" 
+"0070B44FF0004591EA030C44BF6B40FBF7BFBF00BF841A\n" 
+"71EB030603D2001BB141121973414FF4001C1CEB410F34\n" 
+"BF7CEB430443E00C0DA4EB1356352E50DC45EAC323DB0A\n" 
+"45EAC121C912B6F120050DDD63FA05F6EB4086EA030512\n" 
+"4218BF45F00105C01851F100010CD213E062FA06F5F240\n" 
+"5540F3415A40B340F3405A408018594107D349085FEA30\n" 
+"005FEA350528BF45F0010501F58011420875F1004250F1\n" 
+"000041EB045170BC4FF4001C1CEB410F38BF7047002009\n" 
+"0D090570471CEB410F10D252EA43060BD0BCEB410F05D8\n" 
+"0C0DAB43661E342EB5DD02E0AB438018594170BC704770\n" 
+"BC704751EC100B00B500F003F841EC100B00BD40F2FF7C\n" 
+"0B0D4DD0634566D230B421EA035141F4801103F2FD3C5F\n" 
+"EA5C0C01D300184941890041EA907180004FF440140023\n" 
+"E202D50AB1F5100107D46D081DD2091B64190018494149\n" 
+"1BF7D56D080AD20919641B00184941491BEFD56D08F7D3\n" 
+"01E0520817D0C01861419B1AAC4100184941801AA941F4\n" 
+"D452080AD0C01AA1419B186C4100184941801AA941E9D4\n" 
+"5208F4D15B1C6C4161084FEA330001EB0C5130BC704750\n" 
+"EA0103FBD030B4B1FA81F311B9B0FA80F41B190B3BB3F1\n" 
+"20042FBF00FA04F19940C3F1200420FA04F438BF214398\n" 
+"40D3F101039DE76345E1D011F5801FDED850EA4101DBD0\n" 
+"D9430CF058BD38B5DFF8F44B40F2172200212046EDF71A\n" 
+"FE012084F88101022084F89201032084F8A301042084F8\n" 
+"B401DFF8D00BC4F82E01002084F8F10004F2151004F581\n" 
+"711322DFF795FBA320A4F8F2004FF21860C4F8F800DFF8\n" 
+"A84B0FF67905256000F0F19403E0AB840078FCDFF8A01B\n" 
+"086000F090FCDFF8981B086000F0BAFCDFF8941B086000\n" 
+"F0E7FCDFF88C1B086000F01AFDDFF8F41C0860A5600120\n" 
+"32BD7CB5050005D10FF27000BDE87640E5F7C8BBDFF84C\n" 
+"4B04F23716B168D4F8100100F04BFB05EB05110A1902F2\n" 
+"C611F3698B60336A4B60C860708BC2F8C6010020F06130\n" 
+"627083D4F81001B06004F5D27300269E605E60C4F8A461\n" 
+"DE60C4F837014868019088680090D2F8C631CA68691E0F\n" 
+"F21800E5F795FB73BD534C4D2320494458204552520000\n" 
+"0000534C4D23532053455420564D4255462025642F2564\n" 
+"2F25642F25642F2564000008B4F0B5DFF8B04AC4F82A11\n" 
+"04F58475AA601B9984F828110599C4F802119FEDAC0A0E\n" 
+"A9D1ED080A60EE800AFDEEE00A10EE901AA4F806110EA9\n" 
+"D1ED050A60EE800AFCEEE00AC4ED420ADDED0E0A20EE80\n" 
+"0ABCEEC00A85ED010AC98C29730C2194F8F02011FB0242\n" 
+"0368136094F8F02011FB02424368536094F8F02011FB02\n" 
+"418068886004F1F006287B0CF0FBF8B5EE400AF1EE10FA\n" 
+"08DD287B002805D0307B462804DA401C307301E0002030\n" 
+"73297BDFF80C7A97F9040010F1010F02D00A4690420AD0\n" 
+"062901D0082903D10FF29800E5F712FB95F90C00387128\n" 
+"7B062801D008280ED14FF21860B0607088642803D00FF2\n" 
+"8400E5F700FB64207080A868706017E04FF21860B06071\n" 
+"68A86800F080FA4EF6612188420CD37088A32803D00FF2\n" 
+"6400E5F7E9FAA3207080A86870600020307394F8F00040\n" 
+"1C84F8F000C0B2142804DB002084F8F00001207070B868\n" 
+"8047054604F2151004F581711322DFF768FA2846F0BC5D\n" 
+"F808FB534C4D20572652205550202564000000534C4D20\n" 
+"4357203100000000534C4D20435720312E360000DFF8AC\n" 
+"0C90F829017047000010B586B00446C9B20846401E0528\n" 
+"2ED8DFE800F0030A11181F2600A8DFF8201B1122DFF737\n" 
+"FA2CE000A8DFF87C1C1122DFF730FA25E000A8DFF8081B\n" 
+"1122DFF729FA1EE000A8DFF8641C1122DFF732FA17E000\n" 
+"A8DFF8581C1122DFF71BFA10E000A8DFF8501C1122DFF7\n" 
+"14FA09E00FF6A040E5F773FA00A8DFF82C1C1122DFF709\n" 
+"FA204600A91122DFF704FA06B010BD012906D015D30329\n" 
+"10D006D3042909D07047DFF8141C08617047DFF87018C1\n" 
+"F833017047DFF8001C88607047DFF8F81B48607047DFF8\n" 
+"DC1BC1F82E017047DFF8D41B81F83201704727E110B500\n" 
+"2403E0204600F022F9641C062CF9DB10BD10B5DFF8B04B\n" 
+"1822002104F25110EDF735FC1122002104F5EB70EDF72F\n" 
+"FC1122002104F2E710F1940370AF8400EDF729FC94F829\n" 
+"01052807D1D4F81001C4F83F01C4F80502C4F8650110BD\n" 
+"00000000C8422DE9F04100270A2802D00B286CD0B2E001\n" 
+"2930D03DD303291FD002D304290ED037E0DFF8485B05F2\n" 
+"921405F21B10816905F58470806800F081F907462FE0DF\n" 
+"F82C5B05F5DA7405F21B10016A05F58470806800F073F9\n" 
+"074621E0DFF8105B05F2A31405F21B10C16905F5847080\n" 
+"6800F065F9074613E0DFF8F45A05F2811405F21B10816A\n" 
+"05F58470806800F057F9074605E0DFF8F84A0FF65830E5\n" 
+"F7C3F9C4F80D70DFF8C85AD4F80100D5F802110818D5F8\n" 
+"1511401AC4F80100D4F80500D5F808110818D5F81B1140\n" 
+"1AC4F80500D4F8090005F584714968081805F21B114968\n" 
+"401AC4F8090046E0DFF8805A04290FD105F5DA7405F21B\n" 
+"16D6F82480414605F58470806800F01AF90746C6F82080\n" 
+"1BE0032913D1D5F8A421D5F8B0110FF6E820E5F780F905\n" 
+"F2A31405F21B10C16905F58470806800F002F9074605E0\n" 
+"05F2C5140FF6D420E5F76EF9C4F80D7005F21B16D4F801\n" 
+"00F18E10FA81F0C4F80100D4F80900B16B0818C4F80900\n" 
+"D4F80500F16B0818C4F80500BDE8F08110B501280CD036\n" 
+"D303280ED003D3052813D028D310BDDFF8FC090021C185\n" 
+"10BDDFF8F4090021016310BDDFF83C460020A4F84B01C4\n" 
+"F84D0110BDDFF82C461822002104F25110EDF737FB1122\n" 
+"002104F5EB70EDF731FB1122002104F2E710BDE81040ED\n" 
+"F729BB12220021DFF8AC09BDE81040EDF721BB10BD10B5\n" 
+"012806D036D303281CD00ED3042825D010BDDFF8644911\n" 
+"22002104F28110EDF70EFB012084F8810110BDDFF84C49\n" 
+"1122002104F5C970EDF702FB04F281100221417410BDDF\n" 
+"F830491122002104F2A310EDF7F5FA032084F8A30110BD\n" 
+"DFF818491122002104F5DA70EDF7E9FA04F2A310042141\n" 
+"7410BDF8B50446012C25D02BD3032C13D01AD3052C08D0\n" 
+"25D2DFF8600500F23311D0F8100188601DE0DFF8500500\n" 
+"F23311D0F81001C86015E0DFF8400500F23311D0F81001\n" 
+"48600DE0DFF83005D0F81011C0F8331106E0DFF8240500\n" 
+"F23311D0F810010861DFF81405D0F810613046EEF735FA\n" 
+"0022DFF8B838FBF70EFCFBF720FB0546EDB2DFF8AC0800\n" 
+"FB15663046EEF725FA0022DFF8A038FBF7FEFBFBF710FB\n" 
+"0746FFB24EF6602000FB1760EEF716FADFF88828DFF888\n" 
+"38EEF71EFAFBF700FBC0B200903B462A4621460FF6FC00\n" 
+"E5F775F8F1BD10B40022884201D3421A08E00B1ADFF860\n" 
+"48A34203D3DFF85C281018421A104610BC704770B50128\n" 
+"1BD01FD303280DD0F1940300B3840011D3052805D019D2\n" 
+"DFF83C08816804241DE0DFF83408C168052418E0DFF828\n" 
+"084168032413E0DFF85004D0F8F91102240DE0DFF81408\n" 
+"0169012408E00FF69800E5F73AF8DFF83004D0F8101107\n" 
+"24DFF82804D0F81001FFF7BBFF0546EEF7BCF90022DFF8\n" 
+"C837FBF795FBFBF7A7FAC0B2DFF8BC1701FB10552846EE\n" 
+"F7ADF90022DFF8B037FBF786FBFBF798FA0646F6B24EF6\n" 
+"602000FB1650EEF79EF9DFF89827DFF89837EEF7A6F9FB\n" 
+"F788FAC0B20346324621460FF63000BDE87040E4F7FCBF\n" 
+"DFF8BC1388607047DFF8AC03032180F82911D0F81011C0\n" 
+"F8FD11DFF8B00300687047DFF89403022180F82911D0F8\n" 
+"1011C0F8F911DFF88C0300687047DE48012180F82911D0\n" 
+"F81011C0F80912DE4800687047D948052180F82911D0F8\n" 
+"1011C0F80512C0F86511DA480068704780B5D248042180\n" 
+"F82911D0F81011C0F80112C0F86F110FF2B870E4F7B7FF\n" 
+"DFF8B404006802BD00000020DFF8A81691F8F110012900\n" 
+"D0704780B5FFF7BCFFFFF7A9FF0220FFF7C5FE012002BD\n" 
+"80B502210A20FFF789FD00F08FFA02280ED10120FFF73F\n" 
+"FE0220FFF72FFFFFF7B1FFFFF791FF0120FFF7ADFE0720\n" 
+"02BD00F0CCF801280ED10320FFF72CFE0220FFF71CFFFF\n" 
+"F784FFFFF77EFF0320FFF79AFE042002BD092002BDDFF8\n" 
+"7806704780B501210A20FFF759FD00F05FFA002801D011\n" 
+"2002BD0220FFF70DFE0120FFF7FDFEFFF772FFFFF75FFF\n" 
+"0220FFF77BFE022002BDDFF84006704710B500F0CAF804\n" 
+"4603210A20FFF739FD092C10D00A2C1DD10520FFF7EFFD\n" 
+"0320FFF7DFFEFFF76CFFFFF741FF0520FFF75DFE052010\n" 
+"BD0220FFF7E0FD0320FFF7D0FEFFF745FFFFF732FF0220\n" 
+"FFF74EFE022010BD0E2010BDDFF8E805704710B5002400\n" 
+"F00EF905281BD009280AD00B2822D10320FFF7C2FDFFF7\n" 
+"1DFFFFF717FF0F2419E00220FFF7B9FD0520FFF7A9FEFF\n" 
+"F71EFFFFF70BFF0220FFF727FE03240AE00420FFF7AAFD\n" 
+"0520FFF79AFEFFF734FFFFF7FCFE0624204610BDDFF888\n" 
+"05704738B5002400F094F9054604210A20FFF7D7FC032D\n" 
+"06D0042D13D0072D20D0082D20D020E00220FFF788FD04\n" 
+"20FFF778FEFFF7EDFEFFF7DAFE0220FFF7F6FD082411E0\n" 
+"0320FFF779FD0420FFF769FEFFF7D1FEFFF7CBFE0320FF\n" 
+"F7E7FD082402E00A2400E00B24204632BDDFF81C057047\n" 
+"10B5DFF8B844B4F87B11112908DB0FF2B450E4F7AFFE00\n" 
+"20A4F87B01012010BD04F58170807C00280CD094F83221\n" 
+"012A08D10FF29C50E4F79DFE0020A4F87B01012010BD00\n" 
+"2803D10020A4F8F1940390B684007B0109E0D4F81501D4\n" 
+"F80221824203D05118081AA4F87B01002010BD70B5DFF8\n" 
+"504404F2F200817A462903DB94F81421002A0AD1B4F84B\n" 
+"210A2A06DA94F814311D46062D01D0082D1AD194F81431\n" 
+"1D46062D01D0082D04D10FF23450E4F764FE07E0462905\n" 
+"DB002B03D00FF23050E4F75BFE0020A4F84B01C4F84D01\n" 
+"0A2070BDD4F84D1141F28835A94206D30020A4F84B01C4\n" 
+"F84D01092070BD002B08D10020A4F84B01D4F82A014018\n" 
+"C4F84D0118E00021C4F84D110169D4F81551A94203D194\n" 
+"F82761B3420CD0B4F8F230808A834204D28818401BA4F8\n" 
+"4B0102E00020A4F84B01002070BD000094C98800C02709\n" 
+"0010278800ACCB8800B0CB8800B4CB8800B8CB8800F8B5\n" 
+"0024D94D05F58476377B002F35D005F58170808805F21B\n" 
+"11097B002922D1012191FBF0F0EDF783FF2246DFF89C33\n" 
+"EDF796FFFBF78EF8D5F81511D5F802218A4202D3511A48\n" 
+"4307E0EDF77BFF2246DF4BEDF785FFFBF77DF8D5F86111\n" 
+"4018C5F861010AE0B5F8F210814206D2D5F86101D5F82A\n" 
+"110818C5F86101D5F81511D5F802218A4237D0062F01D0\n" 
+"082F03D105F26110B368436005F25310B5F8F23005F581\n" 
+"77BF88BB420BD20389D3185B1A03819BB20B2B06DB05F2\n" 
+"6113B7685F6001E023460381B5F85131D218511AA5F851\n" 
+"114168D5F808215118D5F81B21891A4160D5F853017168\n" 
+"081805F21B114968401AC5F8530105E0002F03D105F253\n" 
+"102146018105F261104168B068FFF716FDD5F8F8108842\n" 
+"1CD303210B20FFF770FBD5F8D701D5F8E8110818B5F851\n" 
+"1110FA81F1D5F86121307B002805D10FF26430E4F770FD\n" 
+"092404E00FF26C30E4F76AFD0B24D5F86101D5F82E1188\n" 
+"4204D304210B20FFF74DFB05242046F2BDBCCB880070B5\n" 
+"7E4C04F588700579D4F81501D4F80211814221D02A4606\n" 
+"2A01D0082A03D1D4F81021C4F86F21B4F8F220B4F80631\n" 
+"9A420DD2B4F869218918081AA4F8690180B20B2807DBD4\n" 
+"F81001C4F86F0102E00020A4F86901072605E0002D02D1\n" 
+"0020A4F869010826D4F86F11D4F81001FFF7ADFCD4F8F8\n" 
+"1088420CD3002D05D10FF2DC20E4F717FD032604E00FF2\n" 
+"E020E4F711FD0426304670BD15CB880037CB880010B400\n" 
+"20DFED5B0A9FED5A1ADFED591A9FED582A9FED570ADFED\n" 
+"562A024612E00C2313FB02110B6803EE103A70EE830A4B\n" 
+"6803EE103A31EE031A8B6803EE103A71EE831A521C4549\n" 
+"142AE9DBB3EE043AC0EE830A81EE031AC1EE831A024627\n" 
+"E00C2313FB02131C6803EE104A33EE603A1C6803EE904A\n" 
+"73EEE03A03EEF1940320BA8400232A5C6803EE104A33EE\n" 
+"413A5C6803EE904A73EEC13A03EE230A9C6803EE104A33\n" 
+"EE613A9C6803EE904A73EEE13A43EE232A521C142AD5DB\n" 
+"F3EE040AC2EEA00A9FED2E1AF3EE041AC2EE211AF4EE41\n" 
+"1AF1EE10FA26D5F3EE041A80EE210AB4EE410AF1EE10FA\n" 
+"1DD5F4EE410AF1EE10FA18D5C1F8470191F82901022806\n" 
+"D1D1F8FD00D1F82A211018C1F8FD00D1F8FD002D4A9042\n" 
+"04D30020C1F8FD0002201CE001201AE0D1F84721D1F82A\n" 
+"319A18C1F8472191F82931012B02D140F6B83301E04FF4\n" 
+"7A73934207D20246C1F8FD20C1F8472181F8012100E001\n" 
+"2010BC7047000094C9880026CB880048CB88006ACB8800\n" 
+"7BCB8800C7CA880000000000CDCCCC3D59CB8800E1CA88\n" 
+"00FDCA880040774B4180EE3600004CED40FCA9F1D24D62\n" 
+"503FA1780F05005C26058DCB880079B48400D9B4840013\n" 
+"B5840071B58400D5B584000000244000001C40C0270900\n" 
+"534C4D204D6574686F642043616C6C2045525220256400\n" 
+"00534C4D204D6574686F642043616C6C20455252203100\n" 
+"0000534C4D2353204E4D2025642F25640000534C4D204D\n" 
+"6574686F642043616C6C204552522033000000534C4D20\n" 
+"4D44202F25642F25643A25643A256400534C4D23532053\n" 
+"455420545320455200534C4D23532044552025642F2564\n" 
+"3A2564000000534C4D2053542048500A0000534C4D2042\n" 
+"52202564000000534C4D204252205354000000534C4D20\n" 
+"474F20564D2F3100534C4D20474F20564D2F3200534C4D\n" 
+"235320564D2053544F502025642F256400534C4D235320\n" 
+"564D20534C4F572025642F256400534C4D235320504D20\n" 
+"53544F50000000534C4D235320504D20534C4F57000000\n" 
+"40F244720021DFF8100BECF79CBD002803D0DFF8041BC9\n" 
+"6801607047FEB5DFF8D42D02F10C031C79DD79DE7AB542\n" 
+"18D11D7AAC4215D15D795E7AB54211D19D799E7AB5420D\n" 
+"D1157B0678AE4203D0042E07D0042D05D00D785F78BD42\n" 
+"0ED0042E0CD19D7902955B790193009492F833370A7801\n" 
+"780FF20800E4F75EFBF7BD000041435648202564202564\n" 
+"2025642025642025642025640A0010B5DFF8584DC82201\n" 
+"2104F2D940ECF74EFDC820608300202083E061C8220121\n" 
+"04F2A150ECF743FDC8206084002020846062C822012104\n" 
+"F26960ECF738FDC820608500202085E06210BDF8B40025\n" 
+"2C46C68837468DF802708D2E01D301260E70DB89032B04\n" 
+"D0042B02D0D2B2012A01D122460A700288652A2FD28288\n" 
+"C3884088984214D30978904208D301291BD001258D281D\n" 
+"D2652820D3F19403B0BD84002C461EE0012912D002258D\n" 
+"2A14D2652A17D3012415E09A4206D204258D2B0BD2652B\n" 
+"0ED301240CE00878012801D1042507E002258D2A01D302\n" 
+"2402E0652A00D301248DF800508DF801400098F2BC7047\n" 
+"DFF8941991F83020002A0AD191F83120002A06D102680A\n" 
+"6042684A608068886070479FED110ADFED110A90ED001A\n" 
+"21EE201AD1ED001A01EE801A81ED001A90ED011A21EE20\n" 
+"1AD1ED011A01EE801A81ED011A90ED021A61EE200A91ED\n" 
+"021A41EE000AC1ED020A7047CCCC4C3ECDCC4C3F2DE9F8\n" 
+"432DED0E8BB0EE40BAB0EE608AF0EE418A6BEE0BBA28EE\n" 
+"08CA68EEA8CA3BEE8C0A30EE2C0A10EE100AEDF7FCFC41\n" 
+"EC100BFEF7ECFDDFF8EC7897F88C0207EB800451EC100B\n" 
+"EDF716FDC4F8900297F88C02401C87F88C02C0B2802802\n" 
+"D1002087F88C0207F1180807F2984698F81800002840F0\n" 
+"CA8098F8190007EB800080ED0DBA98F8190007EB800080\n" 
+"ED3F8A98F8190007EB8000C0ED718AD7F8980400EE100A\n" 
+"30EE0B0A07F2984080ED000AD6ED010A30EE888A86ED01\n" 
+"8AD6ED020A70EEA88AC6ED028AD6ED030A30EEAB9A86ED\n" 
+"039AD6ED040A70EE8C9AC6ED049AD6ED050A30EEACBA86\n" 
+"ED05BA98F81900401C88F81900C0B2322840F085800120\n" 
+"88F81800002088F819009FEDB9AB10EE100AEDF789FC53\n" 
+"EC1A2BEDF7B3FBEDF7ABFC0BEE900A07F29840C0ED00BA\n" 
+"18EE100AEDF779FC53EC1A2BEDF7A3FBEDF79BFC08EE10\n" 
+"0A86ED018A18EE900AEDF76BFC53EC1A2BEDF795FBEDF7\n" 
+"8DFC08EE900AC6ED028A19EE100AEDF75DFC53EC1A2BED\n" 
+"F787FB04460D462BEEAB0A10EE100AEDF751FC02460B46\n" 
+"20462946FAF789FCEDF771FCF06019EE900AEDF744FC53\n" 
+"EC1A2BEDF76EFB04460D4628EE080A10EE100AEDF738FC\n" 
+"02460B4620462946FAF770FCEDF758FC30611BEE100AED\n" 
+"F72BFC53EC1A2BEDF755FB04460D4628EEA80A10EE100A\n" 
+"EDF71FFC02460B4620462946FAF757FCEDF73FFC7061C8\n" 
+"203883A8F80800A8F810000020ECE0D7F898040DEE100A\n" 
+"96ED019AD6ED029A98F8190007EB8000D0ED0DDA90ED3F\n" 
+"EAD0ED71EA9FED6FAB1DEE100AEDF7F6FB04460D463BEE\n" 
+"6D0A10EE100AEDF7EEFB53EC1A2BEDF718FB22462B46FE\n" 
+"F766FCEDF70CFC0BEE100A07F2984080ED00BA19EE100A\n" 
+"EDF7DAFB04460D4638EE4E0A10EE100AEDF7D2FB53EC1A\n" 
+"2BEDF7FCFA22462B46FEF74AFCEDF7F0FB08EE100A86ED\n" 
+"018A19EE900AEDF7C0FB04460D4638EEEE0A10EE100AED\n" 
+"F7B8FB53EC1A2BEDF7E2FA22462B46FEF730FCEDF7D6FB\n" 
+"08EE900AF1940340C18400C6ED028AF068EDF7A7FB8046\n" 
+"89462DEE0D0A0BEE4B0A10EE100AEDF79DFB04460D464D\n" 
+"EEEDBA1BEE900AEDF795FB53EC1A2BEDF7BFFA22462B46\n" 
+"FEF70DFC42464B46FEF709FCEDF7AFFB0BEE100A86ED03\n" 
+"BA3069EDF780FB8046894629EE090A08EE480A10EE100A\n" 
+"EDF776FB04460D460EEE4ECA1CEE100AEDF76EFB53EC1A\n" 
+"2BEDF798FA22462B46FEF7E6FB42464B46FEF7E2FBEDF7\n" 
+"88FB08EE100A86ED048A7069EDF759FB8046894629EEA9\n" 
+"0A08EEE80A10EE100AEDF74FFB04460D464EEEEECA1CEE\n" 
+"900AEDF747FB53EC1A2BEDF771FA22462B46FEF7BFFB42\n" 
+"464B46FEF7BBFBEDF761FB00EE100A86ED050A6BEE0B0A\n" 
+"48EE080A40EE000A10EE900AEDF72BFB41EC100BFEF71B\n" 
+"FC51EC100BEDF74BFBB0610120BDEC0E8BBDE8F2830000\n" 
+"7B14AE47E17A943F2DE9F041002425462646DFF8247597\n" 
+"F8310007EB800191ED0D0AD1ED3F0A91ED711AF0EE401A\n" 
+"B0EE602AF0EE412A07F2904898ED023AD8ED033A98ED04\n" 
+"4AF0EE404AB0EE605AF0EE415AB0EE406AF0EE606AB0EE\n" 
+"417A01212BE0B4EE414AF1EE10FA04D5F4EE442AF1EE10\n" 
+"FA09D4B4EE441AF1EE10FA15D5B4EE624AF1EE10FA10D5\n" 
+"641C9FEDA02AF4EE421AF1EE10FA08DB6D1C9FEDD32AF4\n" 
+"EE421AF1EE10FA00DB761CF0EE401AB0EE602AF0EE412A\n" 
+"491C322980F0A180401CC0B2322800D1002007EB800292\n" 
+"ED0D0AD2ED3F0A92ED711AF4EE404AF1EE10FA02D5F0EE\n" 
+"404A06E0B4EE460AF1EE10FA01D5B0EE406AB4EE605AF1\n" 
+"EE10FA02D5B0EE605A06E0F4EE660AF1EE10FA01D5F0EE\n" 
+"606AF4EE415AF1EE10FA02D5F0EE415A06E0B4EE471AF1\n" 
+"EE10FA01D5B0EE417A70EE617AF5EE407AF1EE10FA01D5\n" 
+"71EEC07AB4EE403AF1EE10FA04D5F4EE431AF1EE10FA09\n" 
+"D4B4EE430AF1EE10FA15D5B4EE613AF1EE10FA10D5641C\n" 
+"DFED671AF4EE617AF1EE10FA08DB6D1CDFED9A1AF4EE61\n" 
+"7AF1EE10FA00DB761C70EEC21AF5EE401AF1EE10FA01D5\n" 
+"72EE601AF4EE603AF1EE10FA04D5B4EE632AF1EE10FA09\n" 
+"D4F4EE630AF1EE10FA15D5F4EE423AF1EE10FA10D5641C\n" 
+"9FED502AF4EE421AF1EE10FA08DB6D1C9FED832AF4EE42\n" 
+"1AF1EE10FA00DB761C71EE621AF5EE401AF1EE10FA7FF5\n" 
+"33AF72EEC11A2FE734EEC60A88ED090A75EE660AC8ED0A\n" 
+"0A35EEC71A88ED0B1A20EE000A00EEA00A01EE010A10EE\n" 
+"100AEDF705FA41EC100BFEF7F5FA51EC100BEDF725FAC8\n" 
+"F83000A7F89044A8F80250A8F80460BDE8F081000010B5\n" 
+"0020B74CD4F8C01400EE101ADFEDB10AB4EE600AF1EE10\n" 
+"FA07D5F19403D0C48400B4F83617322906DA491CA4F836\n" 
+"1702E00146A4F83617B4F83617322909DB94F833070128\n" 
+"01D1FFF70FFC0120002184F83317207410BD000038B500\n" 
+"24A24D05F23370D5F8B01400EE101ADFED9C0AB4EE600A\n" 
+"F1EE10FA0ADAD5F8C01400EE101ADFED970AB4EE600AF1\n" 
+"EE10FA05DB4179142907D2491C417104E04179002901D0\n" 
+"491E41714079002806D0012495F83307002801D1FFF7D8\n" 
+"FB6C74204632BD00009A99993E10B5D6B0874CDFF8F409\n" 
+"0078002802D10020A0745DE094F83100002858D1002036\n" 
+"A904E0D2F8442241F82020401C202808DA434204EB8302\n" 
+"F4D4D2F8C42141F82020F3E72020ADF81000DFF8B40905\n" 
+"901020ADF800001420ADF80C00DFF8A4090290DFF8A409\n" 
+"0190002306AA00A80BF0D3F8202226A906A80BF0F0F826\n" 
+"A8D0ED010A012102220CE050F8223000EE103AB4EE600A\n" 
+"F1EE10FA02DBF0EE400A1146521C102AF0DBC9B20D290F\n" 
+"DB9FED5C0AF4EE400AF1EE10FA08DB0120A07494F83307\n" 
+"002804D1FFF76DFB01E00020A074A07C56B010BD000001\n" 
+"00003FDFF820140078042816D191F83307002812D1B1F8\n" 
+"3407B0F5AF7F03DA401CA1F834077047B0F5AF7F09DB01\n" 
+"2081F833070020A1F8340770470020A1F8340770470278\n" 
+"042A0ED1DFF8DC2392F83337002B08D1B2F83427B2F5AF\n" 
+"7F03D201220270002008707047DFF8BC23B2F83E370078\n" 
+"04281DD10878002803D0022814D00AD317E0180003D04C\n" 
+"2801DA5B1E11E04C280FDB4B230DE018464B2801DA5B1C\n" 
+"08E04C2806DB4B2304E0AF2B02D25B1C00E000239BB218\n" 
+"46322802DA0020087006E0962802DA0120087001E00220\n" 
+"0870A2F83E377047D34B007804281AD10878002817D193\n" 
+"F83307012813D1B3F83A0742F2283188420DDAB2F13C01\n" 
+"00D54942052903DAC01CA3F83A0706E0401CA3F83A0702\n" 
+"E00020A3F83A07B3F83A0742F22831884208DB002083F8\n" 
+"3307A3F83A070FF21C00E3F719BE70477F8CB93E010048\n" 
+"430100F0410100A040CC5088005B414356485D204C6F63\n" 
+"6B204F6666002DE9F24F96B0FFF725FBAF4C94ED021AD4\n" 
+"ED010A94ED000AFFF754FB002800F0508194F8310004EB\n" 
+"80002168416394F8310004EB80006168C0F8FC1094F831\n" 
+"0004EB8000A168C0F8C41194F83100401C84F83100C0B2\n" 
+"322802D1002084F83100FFF72CFDBDF85800FFF74EFE82\n" 
+"46FFF775FE0546FFF7A8FE06464FF00008C1460BA803F0\n" 
+"B5FE5746012F04D14FF001084FF00209B4E056EA050040\n" 
+"F09B8094F8D80400EB040B9BF8D9048DF8000000F03BF9\n" 
+"0146F1940360C884008BF8D91404F118029DF8000000F0\n" 
+"04F90BAB524604F2317104F11800FFF771FA02909BF8A1\n" 
+"058DF8000000F0BDF98BF8A10504F1200201469DF80000\n" 
+"00F0ECF80BAB524604F2327104F12000FFF759FA01909B\n" 
+"F869068DF8000000F061FB8BF8690604F1280201469DF8\n" 
+"000000F0D4F80BAB524604F2337104F12800FFF741FA00\n" 
+"9094F8D804401C84F8D804C0B2C82802D1404684F8D804\n" 
+"9DF80000002832D09DF8080004280CD19DF80410042908\n" 
+"D19DF80010042904D04FF004084FF0010921E09DF80010\n" 
+"042904D14FF004089DF8019018E0012809D19DF8042001\n" 
+"2A05D1012903D14FF00108C1460CE0012805D09DF80400\n" 
+"012801D0012902D14FF0010801E04FF0020894F8330700\n" 
+"2804D1002084F8310784F8320794F83307E07415E094F8\n" 
+"3307012803D1042084F83C070DE094F8D8040119643804\n" 
+"D591F8CD0684F83C0703E091F8050684F83C0700208DF8\n" 
+"290094F8330701280CD145EA0700304308D104208DF828\n" 
+"00B8F1040F0FD18DF829900CE0012D01D0012E04D194F8\n" 
+"3C078DF8280003E08DF828808DF829900AA8FFF72EFE0D\n" 
+"F129010AA8FFF749FEBDF858200DF129010AA8FFF78CFE\n" 
+"0DF129010AA8FFF750FEBDF8580000F0FFFD054609950B\n" 
+"A982B068462C22DDF771FC0CBC0DF129010AA800F035FC\n" 
+"09950BA982B068462C22DDF764FC0CBC0DF129010AA800\n" 
+"F012FD0DF129010AA8FFF71FF99DF8280020739DF82900\n" 
+"60732069606117B0BDE8F08FCC508800042913D8DFE801\n" 
+"F003070B120F001188491C11800AE05188491C518006E0\n" 
+"9188491C918002E0D188491CD180042813D8DFE800F003\n" 
+"070B120F001088401E108070475088401E508070479088\n" 
+"401E90807047D088401ED08070470000DFF83C0BB0F890\n" 
+"1400F29040828890ED050AD0ED060A90ED071A102A39DB\n" 
+"2F2901DB042070479FED3A0AB4EE401AF1EE10FA23DB21\n" 
+"2A01DB04207047202901DB012070479FED330AB4EE401A\n" 
+"F1EE10FA0EDB1D290ADB9FED300AF4EE400AF1EE10FA01\n" 
+"DB0120704702207047022070471B2901DB012070470220\n" 
+"70479FED270AB4EE401AF1EE10FA01DB04207047012070\n" 
+"47DFED231AF4EE610AF1EE10FA35DBDFED200AB4EE601A\n" 
+"F1EE10FA28DB1B290EDB9FED1D0AB4EE401AF1EE10FA05\n" 
+"DB222901DB012070470220704701207047172913DBDFED\n" 
+"150AB4EE601AF1EE10FA01DB02207047DFED120AB4EE60\n" 
+"0AF1EE10FA01DB022070470120704702207047092A01DB\n" 
+"02207047022070470120704724622A3ED3DF1B3FE981EF\n" 
+"3DF19403F0CB840090C2F53C37C5833D2E3AB93D170F1B\n" 
+"3F431E193F75B04E3EDFF8080AB0F8901400F290404288\n" 
+"838890ED050AD0ED060A90ED071AD0ED091A90ED0A2AD0\n" 
+"ED0B2A2029C0F208819FEDAD3AF4EE430AF1EE10FAC0F2\n" 
+"E8802F292DDB162A01DB042070479FEDA70AF4EE402AF1\n" 
+"EE10FA0EDB9FEDA40AF4EE400AF1EE10FA05DB142A01DB\n" 
+"0420704701207047012070479FED9E0AF4EE401AF1EE10\n" 
+"FA0ADB9FED9B0AF4EE400AF1EE10FA01DB042070470120\n" 
+"7047042070479FED963AF4EE431AF1EE10FA6FDBDFED93\n" 
+"2AB4EE622AF1EE10FA16DB0F2B05DB242901DB04207047\n" 
+"02207047DFED8D0AB4EE600AF1EE10FA01DB0120704708\n" 
+"2B01DB04207047012070479FED862AF4EE421AF1EE10FA\n" 
+"25DB9FED841AB4EE410AF1EE10FA0ADB9FED810AF4EE40\n" 
+"1AF1EE10FA01DB04207047012070479FED7D0AF4EE400A\n" 
+"F1EE10FA0ADB9FED7A0AF4EE401AF1EE10FA01DB012070\n" 
+"4702207047012070479FED750AF4EE400AF1EE10FA01DB\n" 
+"042070479FED710AB4EE401AF1EE10FA09DB2C2905DB07\n" 
+"2B01DB0420704701207047012070479FED6A0AF4EE401A\n" 
+"F1EE10FA01DB04207047012070479FED650AF4EE400AF1\n" 
+"EE10FA01DB042070479FED620AF4EE401AF1EE10FA01DB\n" 
+"012070479FED5E0AF4EE402AF1EE10FA01DB012070479F\n" 
+"ED5B0AF4EE400AF1EE10FA01DB042070479FED570AF4EE\n" 
+"401AF1EE10FA01DB012070479FED540AB4EE402AF1EE10\n" 
+"FA01DB042070479FED500AB4EE402AF1EE10FA01DB0120\n" 
+"7047042070479FED4C1AF4EE410AF1EE10FA0EDB2F2901\n" 
+"DB04207047DFED470AB4EE600AF1EE10FA01DB01207047\n" 
+"04207047012070479FED423AF4EE430AF1EE10FA24DB17\n" 
+"2920DBDFED3E0AB4EE601AF1EE10FA01DB02207047DFED\n" 
+"3B0AB4EE600AF1EE10FA01DB02207047192901DB012070\n" 
+"479FED350AF4EE402AF1EE10FA01DB0120704702207047\n" 
+"022070479FED300AF4EE400AF1EE10FA1CDB9FED2D0AF4\n" 
+"EE401AF1EE10FA13DB9FED2B0AB4EE402AF1EE10FA0ADB\n" 
+"9FED280AB4EE402AF1EE10FA01DB012070470420704701\n" 
+"20704704207047012070470000CA8AE13BB58C1F4012A5\n" 
+"3D3DA7B2503FD9D04D3D15053A3FDB56DD3FF33C383D71\n" 
+"79823F91DAD43EE5D54940AEDB203E42F01440910F3A3D\n" 
+"6687F83C60CB4B3F6631B13CF0C6163F50701E40CD0443\n" 
+"3C4089BF3E8770C43ED89DBE3E7864AC3B3A24353BB6A1\n" 
+"823D99BA1B3F172D503EEC531D40371A403CC5210B3FA4\n" 
+"3B983F446F9F3F4E888900D45C86003C5C8600BC598600\n" 
+"F1940380CF8400DFF89006B0F8901400F2904042888388\n" 
+"90ED050AD0ED060A90ED071AD0ED091A90ED0A2AD0ED0B\n" 
+"2A90ED0C3A232AC0F2A9802F2A28DB332A01DB04207047\n" 
+"9FEDA70AF4EE402AF1EE10FA0EDB082B0ADB9FEDA30AF4\n" 
+"EE401AF1EE10FA01DB0120704704207047012070479FED\n" 
+"9E0AF4EE401AF1EE10FA05DB0D2B01DB04207047012070\n" 
+"4704207047DFED970AF4EE601AF1EE10FA3BDBDFED950A\n" 
+"B4EE602AF1EE10FA0EDB0F2B01DB04207047DFED900AB4\n" 
+"EE600AF1EE10FA01DB0120704704207047DFED8C0AF4EE\n" 
+"601AF1EE10FA13DBDFED890AB4EE600AF1EE10FA0ADB9F\n" 
+"ED870AF4EE402AF1EE10FA01DB01207047042070470120\n" 
+"7047DFED810AB4EE600AF1EE10FA01DB04207047012070\n" 
+"479FED7D0AB4EE402AF1EE10FA2DDB9FED7A0AF4EE402A\n" 
+"F1EE10FA05DB092B01DB04207047012070479FED750AB4\n" 
+"EE402AF1EE10FA01DB042070479FED710AF4EE401AF1EE\n" 
+"10FA01DB012070472A2901DB042070479FED6C0AB4EE40\n" 
+"2AF1EE10FA01DB0420704701207047282A01DB04207047\n" 
+"01207047DFED642AF4EE620AF1EE10FA51DB9FED622AB4\n" 
+"EE423AF1EE10FA29DB172A25DBDFED5E0AB4EE601AF1EE\n" 
+"10FA13DBDFEDC20AB4EE600AF1EE10FA0ADB9FEDBF0AF4\n" 
+"EE401AF1EE10FA01DB012070470220704702207047DFED\n" 
+"BA0AB4EE600AF1EE10FA01DB0220704701207047022070\n" 
+"479FEDB40AB4EE403AF1EE10FA17DB19290ADB9FEDB10A\n" 
+"B4EE401AF1EE10FA01DB02207047012070479FEDAC0AF4\n" 
+"EE400AF1EE10FA01DB022070470120704704207047DFED\n" 
+"A72AF4EE620AF1EE10FA49DBDFEDA42AF4EE621AF1EE10\n" 
+"FA1CDB9FEDA20AF4EE400AF1EE10FA13DB9FED9F0AB4EE\n" 
+"403AF1EE10FA01DB012070479FED9C0AF4EE401AF1EE10\n" 
+"FA01DB012070470420704701207047DFED961AF4EE610A\n" 
+"F1EE10FA13DBDFED940AB4EE602AF1EE10FA01DB042070\n" 
+"47DFED900AB4EE600AF1EE10FA01DB0120704704207047\n" 
+"9FED8C0AB4EE401AF1EE10FA01DB042070470120704701\n" 
+"2070478BC71F4036054D40F9A78E3F55A85A3FDB56DD3F\n" 
+"3886403D7179823F9E48D83E79977440753E3C3D3BAEAE\n" 
+"3E350D1F4082742D3FA43C173F9BAEE73EB6A1823D878C\n" 
+"6F4099BA1B3F0CB470B5ADF5A36D0646DDF85405012840\n" 
+"F0BD80D64D95F83100002802D13078042805D005F5E860\n" 
+"4078012840F0AF8005F5E86002214170002010E095F88C\n" 
+"1241188A1101EB5262D211A1EBC21105EB8101D1F89012\n" 
+"C6AA42F82010401C8028ECDB8020ADF81000DFF88006F1\n" 
+"940310D3840005904020ADF800003820ADF80C00DFF874\n" 
+"060290DFF870060190002306AAC6A900A80AF02BFA8022\n" 
+"86A906A80AF048FA86A8D0ED010A90ED020A30EE800A90\n" 
+"ED031A30EE010A90ED041A30EE010A90ED051A30EE010A\n" 
+"9DED8C1A30EE010A9DED8D1A30EE010A9DED8E1A30EE01\n" 
+"0A9DED8F1A30EE011A05F2C44101220A7102220CE050F8\n" 
+"223000EE103AB4EE600AF1EE10FA02DBF0EE400A0A7152\n" 
+"1C0A2AF0DB80EE810A05F2C44080ED000A0C79042C01D0\n" 
+"052C17D1DFED920AB4EE600AF1EE10FA10DB10EE100AEC\n" 
+"F75EFA02460B4621460FF2DC50E2F7E7FF022085F84007\n" 
+"0020A8731DE010EE100AECF74DFA41EC100B3078042853\n" 
+"EC102B214609D10FF2C450E2F7D1FF042085F840070220\n" 
+"A87307E00FF2C850E2F7C7FF012085F84007A8730DF5A3\n" 
+"6D70BC5DF80CFB6F69453ECC9E2A408DBA663E8C504440\n" 
+"9948D13E81B6953D7313B53B63D5083FDCF93E3DCDED25\n" 
+"40D064833F21CB023CD274E63EDF57E53B7B6A753D0CB4\n" 
+"70B5ADF5A36D0646DDF85405022840F0BC80614D95F831\n" 
+"00002802D13078042805D005F5E8604078012840F0AE80\n" 
+"05F5E86002214170002010E095F88C1241188A1101EB52\n" 
+"62D211A1EBC21105EB8101D1F89012C6AA42F82010401C\n" 
+"8028ECDB8020ADF81000DFF8AC0405904020ADF8000038\n" 
+"20ADF80C00DFF8A0040290DFF89C040190002306AAC6A9\n" 
+"00A80AF041F9802286A906A80AF05EF986A8D0ED010A90\n" 
+"ED020A30EE800A90ED031A30EE010A90ED041A30EE010A\n" 
+"90ED051A30EE010A9DED8C1A30EE010A9DED8D1A30EE01\n" 
+"0A9DED8E1A30EE010A9DED8F1A30EE011A05F2C4410122\n" 
+"0A7102220CE050F8223000EE103AB4EE600AF1EE10FA02\n" 
+"DBF0EE400A0A71521C0A2AF0DB80EE810A05F2C44080ED\n" 
+"000A0C79E01E042817D2DFED1F0AB4EE600AF1EE10FA10\n" 
+"DB10EE100AECF775F902460B4621460FF24C40E2F7FEFE\n" 
+"022085F840070020A8731DE010EE100AECF764F941EC10\n" 
+"0B3078042853EC102B214609D10FF23440E2F7E8FE0420\n" 
+"85F840070220A87307E00FF23840E2F7DEFE012085F840\n" 
+"07A8730DF5A36D70BC5DF80CFB0000AF47613ECC508800\n" 
+"EC51383E2DE970432DED068B143800D54042062801DB00\n" 
+"20A3E10024D94D05F522700079002804D1D5F88C0409EE\n" 
+"900A03E005EB8000D0EDA39A95F8310005F28C469FEDD1\n" 
+"8B9FEDD29A002875D195ED3E0A80EE290A10EE100AECF7\n" 
+"11F941EC100B0AF0BFF9B0EE40AAF0EE60AA96ED100A20\n" 
+"EE090A10EE100AECF701F98046894653EC1A2B51ECF194\n" 
+"03A0D68400180BECF727F842464B46FDF775F9ECF71BF9\n" 
+"306495ED700A80EE290A10EE100AECF7EAF841EC100B0A\n" 
+"F098F9B0EE40AAF0EE60AA96ED110A20EE090A10EE100A\n" 
+"ECF7DAF88046894653EC1A2B51EC180BECF700F842464B\n" 
+"46FDF74EF9ECF7F4F8706495EDA20A80EE290A10EE100A\n" 
+"ECF7C3F841EC100B0AF071F9B0EE40AAF0EE60AA96ED12\n" 
+"0A20EE090A10EE100AECF7B3F88046894653EC1A2B51EC\n" 
+"180BEBF7D9FF42464B46FDF727F9ECF7CDF8B0647EE005\n" 
+"EB800090ED0C0A80EE290A10EE100AECF799F841EC100B\n" 
+"0AF047F9B0EE40AAF0EE60AA96ED100A20EE090A10EE10\n" 
+"0AECF789F88046894653EC1A2B51EC180BEBF7AFFF4246\n" 
+"4B46FDF7FDF8ECF7A3F8306495F8310005EB800090ED3E\n" 
+"0A80EE290A10EE100AECF76EF841EC100B0AF01CF9B0EE\n" 
+"40AAF0EE60AA96ED110A20EE090A10EE100AECF75EF880\n" 
+"46894653EC1A2B51EC180BEBF784FF42464B46FDF7D2F8\n" 
+"ECF778F8706495F8310005EB800090ED700A80EE290A10\n" 
+"EE100AECF743F841EC100B0AF0F1F8B0EE40AAF0EE60AA\n" 
+"96ED120A20EE090A10EE100AECF733F88046894653EC1A\n" 
+"2B51EC180BEBF759FF42464B46FDF7A7F8ECF74DF8B064\n" 
+"96ED100AB5EE400AF1EE10FA02D5F1EE400A01E0F0EE40\n" 
+"0A96ED121AF3EE041AF4EE610AF1EE10FA27D5D6ED110A\n" 
+"F5EE400AF1EE10FA20DD9FED4A2AF4EE420AF1EE10FA19\n" 
+"D5B5EE401AF1EE10FA14DDDFED420AB4EE601AF1EE10FA\n" 
+"0DD543484078002809D1D6ED070AB0EE0C2AF4EE420AF1\n" 
+"EE10FA00D50224B5EE401AF1EE10FA01D5B1EE411AB4EE\n" 
+"611AF1EE10FA31D5B5EE400AF1EE10FA02D5F1EE400A01\n" 
+"E0F0EE400A9FED2E1AF4EE410AF1EE10FA20DBB5EE400A\n" 
+"F1EE10FA01D5B1EE400ADFED280AB4EE600AF1EE10FA12\n" 
+"D5D6ED110AF5EE400AF1EE10FA0BDD9FED220AF4EE400A\n" 
+"F1EE10FA04D51F480078012800D101240020A873FCF7A5\n" 
+"FF95F831100F22114201D1022801D0012807D195F84107\n" 
+"002806D1012085F8410702E0002085F84107EC732046BD\n" 
+"EC068BBDE870830E49087070470C49487070470000D45D\n" 
+"8600645C86003C5A8600CC5088000000002017EB164066\n" 
+"66663F0000B4420100A0410000AA42000082424E888900\n" 
+"4143564820504320572025642025302E32660000414356\n" 
+"48205043204250562025642025302E3266000000004143\n" 
+"5648205043204250532025642025302E32660000000041\n" 
+"43564820485620572025642025302E3266000041435648\n" 
+"204856204250562025642025302E326600000000F19403\n" 
+"30DA840041435648204856204250532025642025302E32\n" 
+"66000000000FB400B5ADB001208DF80400AA208DF80200\n" 
+"3C208DF803000020ADF8B0000A208DF85A000DF15B0000\n" 
+"A95522DCF73CFC00208DF8580003208DF8590016A8EBF7\n" 
+"DBFCEFF776FD5248002181600170417001202DB05DF814\n" 
+"FB00B597B00020ADF858000DF101000A21417000218170\n" 
+"C17001208DF8000003208DF8010000A8EBF7BBFC012017\n" 
+"B000BD70B54248456C404CE068867A267000F06AF80128\n" 
+"1ED1002E05D0EFF742FDA1684018A06010E0EFF73CFDA0\n" 
+"6005F10C06727D04F10801F068EB68C018E6F770FF0120\n" 
+"B0740020A060EFF72FFD002000F047F81AE06078B04217\n" 
+"D0002E15D1A068002812D005F10C06727D04F10801F068\n" 
+"EB68C018E6F754FF0120B0740020A060EFF713FD002000\n" 
+"F02BF820786070012070BD10B51C4CEBF781FB6060E2F7\n" 
+"AFFBE06060681A49C0F8A81600F2A86019494160194981\n" 
+"600FF21101C1600FF265010161012010BD000000200F49\n" 
+"4A6892F89126002A03D00978002900D10CE070470E4908\n" 
+"7070470D480078704780B5002000F006F8012002BD0948\n" 
+"90F9000070470749087070470000EC818800EC03880049\n" 
+"DA8400A1DA8400D1DA84006E8889006D88890018B440F2\n" 
+"49120B7812FB030301241C700B7812FB03035C700B7812\n" 
+"FB030323249C700B7812FB03000022C2700878401C0870\n" 
+"11BCC8E700000FB400B5ADB001208DF80400AA208DF802\n" 
+"003C208DF803000020ADF8B0000A208DF85A000DF15B00\n" 
+"00A95522DCF74AFB00208DF8580003208DF8590016A8EB\n" 
+"F7E9FBEFF789FC01202DB05DF814FB00B597B00020ADF8\n" 
+"58000DF101000A21417000218170C17001208DF8000003\n" 
+"208DF8010000A8EBF7CEFB012017B000BD38B52848046B\n" 
+"00F03EF8012816D101208DF800000FF2E400E2F779FB04\n" 
+"F10C056A7D00A9E868E368C018E6F78CFE0120A8740020\n" 
+"00F024F8EFF74FFC012032BD80B5EBF7BEFA1849086018\n" 
+"49C0F8E81500F2E85017494160174981600FF21101C160\n" 
+"0FF25D010161012002BD00000E48006890F8D105002801\n" 
+"D1002070470BE00E49087070470C480078704780B50020\n" 
+"00F006F8012002BD094890F900007047074908707047EC\n" 
+"038800FC8188002DDC84007BDC8400ABDC840070888900\n" 
+"6F88890018B440F249120B7812FB030301241C700B7812\n" 
+"FB03035C700B7812FB03031F249C700B7812FB03000022\n" 
+"C2700878401C087011BCC9E7000053442D45000000000F\n" 
+"B480B50FF26041032008F081FD0298C1038820F19403C0\n" 
+"DD84000AF08DF80398C103882009F0BEFE05A808F017FD\n" 
+"092205A9DFF82404E6F708FE0AF00AFD00A80BF03AF89D\n" 
+"F800000AF02EFD002811D19DF800200421039808F007FD\n" 
+"0BF047F8042008F040FE08F02FFF08F028FF08F030FF00\n" 
+"2002BC5DF814FB10B5044608F0EDFC09222146DFF8D003\n" 
+"E6F7DEFD002010BDF8B506460C4640F6CA00610090FBF1\n" 
+"F5E12090FBF5F72A4621460FF2FC300BF035F8B6F5805F\n" 
+"2CD1C82C16D11E200AF0DEFD0F200AF0EAFD05200AF0F8\n" 
+"FD0F2008F0B4FD0F2008F0CDFD2D2008F0E6FDDE480021\n" 
+"08F03CFE10E068000AF0C7FD28460AF0D3FD28460AF0E1\n" 
+"FD384608F0F1FDD74880FB040108F02AFED5488560C460\n" 
+"0020F2BD10B5D24C6269002902D00243626101E0824362\n" 
+"610A4601460FF29C300AF0F3FF606944F20101084203D0\n" 
+"01200AF0F3FC05E02069002802D100200AF0ECFC207D80\n" 
+"0704D50120BDE810400AF010BD2069C00404D40020BDE8\n" 
+"10400AF008BD10BD38B5054600208DF80000B84C206900\n" 
+"2801D10AF0B9FC206945EA0001216162690FF250300AF0\n" 
+"BFFFE80408D501200AF0C2FC01200AF0EBFC01200AF00D\n" 
+"FDA80406D501200AF02FFD012102200AF026FF20690028\n" 
+"01D00AF095FC00AB0122122168200AF0ADFFD4E90001A1\n" 
+"4A002380185941C4E90001184632BD38B504469B4DE004\n" 
+"14D500200AF0E7FC686944F20101084202D100200AF08E\n" 
+"FC287D800702D400200AF0B4FC286920F480502861A004\n" 
+"14D500200AF0F7FC686944F20101084202D001200AF077\n" 
+"FC286920F400502861002102200AF0E2FE00280BD12869\n" 
+"002801D10AF051FC6A6929690FF298200AF05AFF002032\n" 
+"BD3EB4002100AA0B460C460D4638C21FE001EB4102754B\n" 
+"D418D256B0F9003012FB03F294F90130B0F9025013FB05\n" 
+"2294F90230B0F9044013FB042200AB43F82120B2F5004F\n" 
+"03DB47F6FF7243F82120491C0329DDDB002105E000AA52\n" 
+"F8212020F81120491C0329F7DB00203EBC70477EB40021\n" 
+"00AA0B460C460D4638C214E001EB41025A4BD418D25603\n" 
+"6894F901504668754303FB025294F90230846804FB0322\n" 
+"00AB43F82120491C0329E8DB002105E000AA52F8212040\n" 
+"F82120491C0329F7DB00207EBC704770B58EB004460D46\n" 
+"0020ADF816000146CDE90601ADF80C00ADF8140009A80A\n" 
+"4606C00B460EC0084604900890ADF80E000DF116000AF0\n" 
+"45FD3E4E0AF083FC009006AB05AA03A904A80BF07AFBD6\n" 
+"E90023F06836494843C11710185941C6E90001CDE90601\n" 
+"BDF80C00400411D509A80BF000FF09A8FFF7F1940350E1\n" 
+"840061FF00200290DDE90601CDE9000100231A46114609\n" 
+"A808F0D9FC002C0AD00295DDE90601CDE9000100232246\n" 
+"1946084608F0CCFCBDF80C00000411D50BA80BF0D1FE0B\n" 
+"A8FFF775FF00200290DDE90601CDE9000100231A460BA9\n" 
+"104608F0B6FCBDF80C00C00510D506F118000BF0AEFE00\n" 
+"200290DDE90601CDE9000106F1180300221146084608F0\n" 
+"A1FC0DF10E0108A80AF00EFEDDE90623BDF90E1008980A\n" 
+"F037F80498002800D08CD101200EB070BD7C27880000C2\n" 
+"EB0B40420F005827880000CA9A3B4F4E4C59204C494345\n" 
+"4E53454420544F2053414D53554E4720464F5220555345\n" 
+"205749544820444154412046524F4D2049434D32303630\n" 
+"3500000000696E765F7365745F6F6472203A2076616C75\n" 
+"65203D2025642C206F64723D256400000000696E765F73\n" 
+"65745F6578745F73656E736F72203A2025782025640000\n" 
+"5B494E564E5D20737461727420257820257800005B494E\n" 
+"564E5D2073746F70202578202578000000002848BF4042\n" 
+"704738B500200246DFF8A44403E004EB80018A63401C09\n" 
+"28F9DB1046E066A066642020606060DFF88804A060B5EE\n" 
+"000A84ED030A84ED040A84ED050A84ED060A84ED070ADF\n" 
+"F87004206205206062A062104603E004EB80018A63401C\n" 
+"0928F9DB10466067A067E06704F180057C2201462846EA\n" 
+"F749FA0C22002104F12C00EAF743FA256731BD2DE9F041\n" 
+"06460F4690461C46DFF8185485ED0B0AF0EE601AF1EE61\n" 
+"1AC5ED0C1AB1EE410A85ED0D0A0A2205F12C01286F00F0\n" 
+"04FA00F040F8022801D004280ED1A86F401CA867142198\n" 
+"FBF1F1884202DB0020E8670CE0E86F401CE86708E00828\n" 
+"01D0102804D1E86F401CE8670020A867142096FBF0F0A9\n" 
+"6F814201DB01206867142097FBF0F0E96F814201DB0220\n" 
+"6867686F012803D0022801D000206867696F080005D021\n" 
+"700021A967E967696701E000212170BDE8F0812DE9F843\n" 
+"2DED048B9FED9F8AD84C002020666066E06E461CE666A7\n" 
+"6ED74D0A2F36DAD4F870900A220021484600F0C3F98046\n" 
+"0A220121484600F0BDF904EB870106EB860292008A6301\n" 
+"2F1FDB98ED000AD0ED000A30EE600AD8ED010A90ED011A\n" 
+"70EEC10A98ED021AD0ED021A31EE611A05EB870020EE00\n" 
+"0A00EEA00A01EE010A80ED060A8A6B496B511AC163781C\n" 
+"A0660A2E01DA03202867A06E0A28C0F2DD80401EA0660A\n" 
+"221146206F0CF06DFC85ED040A0A221146206F0CF084FC\n" 
+"85ED050A0A221146206F0CF09BFC85ED060A002006E005\n" 
+"EB8001D1ED070A38EE208A401C0928F6DBF19403E0E484\n" 
+"00D5ED040AB2EE041AC0EE818AD5ED050A80EE819AF2EE\n" 
+"040AC0EE209AE06E0A2805DBC5ED018A85ED029AC5ED03\n" 
+"9A00260FE00A22C6F1090109B2206F00F049F995ED031A\n" 
+"D5ED020A95ED010A00F0ACF8761C0A2EEDDB606A216E88\n" 
+"423ADAA06B2978002908D1686601212970C5ED018A85ED\n" 
+"029AC5ED039AA16A626E91420CDA697800290BD1A86601\n" 
+"216970C5ED018A85ED029AC5ED039A01E0002169702168\n" 
+"AA6E821A914208D26A78002A05D00020A870E870012028\n" 
+"674CE06A6E801A814246D22878002843D00020A870E870\n" 
+"022028673FE0C5ED018A85ED029AC5ED039A0020287068\n" 
+"70A878002801D10120A8709FED640A28EE000AB5EE400A\n" 
+"F1EE10FA03DC9FED610A28EE000AD4ED020AB3EE041A60\n" 
+"EE810AF4EE400AF1EE10FA07D5E878002806D1A06BE866\n" 
+"0120E87001E00020E8706068A0F5FA70A16BEA6E891A88\n" 
+"4205D2E878002802D00420286701E00320286700200CE0\n" 
+"04EB8001CA6B8A63082805DA05EB80010A6ACA614A6C0A\n" 
+"64401C0928F0DB286F012806D00DD3032807D004D30428\n" 
+"06D007E0022006E0042004E0082002E0102000E00020BD\n" 
+"EC048BBDE8F28300000000D0ED001A31EEC00A3A4981ED\n" 
+"000AD0ED011A71EEE00AC1ED010AD0ED021A31EEC11A81\n" 
+"ED021AB5EE400AF1EE10FA03D5B1EE400A81ED000AF5EE\n" 
+"400AF1EE10FA03D5B1EE600A81ED010AB5EE401AF1EE10\n" 
+"FA03D5B1EE410A81ED020A91ED000A2048D0ED030AB4EE\n" 
+"600AF1EE10FA13D5D1ED010A90ED041AF4EE410AF1EE10\n" 
+"FA0AD5D1ED020A90ED051AF4EE410AF1EE10FA01D50122\n" 
+"00E00022D0ED060AB4EE600AF1EE10FA14D591ED010AD0\n" 
+"ED070AB4EE600AF1EE10FA0BD591ED020AD0ED080AB4EE\n" 
+"600AF1EE10FA02D5416E491C4166016E51180166704700\n" 
+"0000007A4400007AC4C8598800000040413333B33EC45A\n" 
+"8800385B88000388934201D30023038003885B1C03809B\n" 
+"B2934201D300220280028802EB420300EB8300001D91EC\n" 
+"030A80EC030A01207047B0F90030591A09B2002901D511\n" 
+"FA82F109B201EB410200EB8200001D70472DE9F04140F6\n" 
+"CC020021DFF8940AE9F7F2FFDFF8904A1C22002104F130\n" 
+"00E9F7EAFFDFF8845A0020A860E8602861DFF87C6A3064\n" 
+"70646861A861B064F064E064E861286268620120A86200\n" 
+"20306570654FF0FF30E862286300206863B0652065F065\n" 
+"60657066B066F0663067A065308670862C220146301DE9\n" 
+"F7BDFF42F21070B083F0830020308270820220B0820020\n" 
+"70602085DFF8187A0C2201463846E9F7F1940370E88400\n" 
+"AAFFDFF8100A7860DFF80C0A38604FF0FF303881002030\n" 
+"70A86328806880B086E065706760852066F0863087E066\n" 
+"B067E86306F184082C22311D4046E6F7A0F8C5F8408000\n" 
+"206864A8642067E8646067A067686528652866E865A865\n" 
+"0120E866A86668660020A86768672867282201462046E9\n" 
+"F770FF0020E067062070870020B087C6F88000F067E867\n" 
+"DFF8580D60660020A0660120E8800620F0870C20A08500\n" 
+"2030664022014607F10C00BDE8F041E9F751BF10B584B0\n" 
+"DFF854490C22214600A8E6F75DF8FFF74BFF0C2200A920\n" 
+"46E6F756F81FBD00002DE9F84F2DED0C8B84B000200290\n" 
+"82460446DFF8185995ED1E8AD5ED148AC5ED1E8ADFF810\n" 
+"69D6ED169AC5ED149ADFF8007997ED0D9AB8EE490ADFED\n" 
+"AC0A80EE80AA86ED16AAD7F81CB0F86AABEB0000FA30FA\n" 
+"21B0FBF1F1FA2202FB11081FFA88F8B8F14C0F02DAB86A\n" 
+"012805D12046F08630870220B88097E1D6F85490B9F104\n" 
+"0F30D3F4EE698AF1EE10FA2BD5F4EE4A9AF1EE10FA26D5\n" 
+"1AEE100AEAF758FF02460B46CDE9002318EE900AEAF750\n" 
+"FFDFF8542DDFF8583CEAF778FEDDE90023F7F79EFE0FD2\n" 
+"9FED8A0AB4EE40AAF1EE10FA08DBC6ED169AC5ED148A85\n" 
+"ED1E8A0320B880B0E1D6ED10AAC6ED11AA96ED12BA86ED\n" 
+"13BA404600EE100AB8EE400AD7ED040AC0EE800A97ED06\n" 
+"1A81EE001A20463064B064F86A21461FE0401C80B2FA28\n" 
+"00D12046DFF8002802EB8002D2ED261A71EEE01A96ED10\n" 
+"2A01EEA12A86ED102AD2F8802401EE902A71EEC11A96ED\n" 
+"122A01EEA12A86ED122A491C89B24145DCDBD6ED100AC0\n" 
+"EE80BAC6ED10BAD6ED120A80EE80CA86ED12CAD5ED1DCA\n" 
+"C5ED1CCA97ED110AD7ED120A30EE60DA85ED1DDA404600\n" 
+"F0F2FE012803D12046F086308702E1B9F1000F05D1F08E\n" 
+"052802DB04465046F086B9F1000F05D1308F052802DB04\n" 
+"195046308719FA84F0002830D19FEDBE8B3CEE0B0A10EE\n" 
+"100AEAF7B8FE53EC182BEAF7E2FD5246DFF8B03CF7F707\n" 
+"FE16D33BEEAA0A10EE100AEAF7A8FE53EC182BEAF7D2FD\n" 
+"5246DFF8943CF7F7F7FD06D3B3EE040AB4EE40DAF1EE10\n" 
+"FA07D5F08E401CF086C7F830B00620B880BBE0F08E0028\n" 
+"02D004195046F08619FA84F0002819D1B7EE000AB4EE40\n" 
+"AAF1EE10FA02D50720B880A7E09FED9E0AB4EE40AAF1EE\n" 
+"10FA05DB308F401C30870820B8809AE05046308703E030\n" 
+"8F041950463087B0EE6B1AF0EE4C0AB0EE4A0A4146A4B2\n" 
+"204600F020FF012808D1C6ED169A86ED12BAC5ED1DCAC6\n" 
+"ED10AA7DE09FED8A0AB4EE40AAF1EEF1940300EC840010\n" 
+"FA02DBDFF8E40BB0655046F086B9F1000F13D196ED160A\n" 
+"86ED170A85ED150AC7ED05BA85ED13CA87ED13DA00F0E0\n" 
+"FD52E000BF00007A4401004040B6EE008A484600F0D5FD\n" 
+"012818D196ED160AF0EE000A20EE200A86ED160A4FF001\n" 
+"0A6BEE880AC6ED100A2CEE081A86ED121AC6ED110A86ED\n" 
+"131A85ED140A641C96ED160AD5ED140A70EE200A60EE88\n" 
+"0AC6ED170A96ED101AD6ED111A31EE211A21EE081A87ED\n" 
+"051A96ED121AD6ED131A31EE211A21EE081A85ED131AB4\n" 
+"EE600AF1EE10FA02D4BAF1010F01D185ED150A3CEE8D0A\n" 
+"20EE080A87ED130A96ED170A204680B200F0A0F800F05A\n" 
+"F8C7F830B001200290F8630298012802D10120288001E0\n" 
+"B8882880A4B26C6085ED029AA5F80C80B08EE881306C28\n" 
+"61B06C6861B06DA8617869E861E86C2862F06D6862C7F8\n" 
+"2CB0002078633861B861B8621C22014605F13000E9F741\n" 
+"FD0020E867708A00281BD1D6F8800000280CD0306DB168\n" 
+"401A718FB0EB510F02DB0020B0820DE00120B0820AE0F0\n" 
+"8E318F11FA80F0032802DB0120B08201E00220B082DFF8\n" 
+"CC0868660020A866029804B0BDEC0C8BBDE8F28F38B500\n" 
+"25DFF8D8440120C4F8800000F0FBFE6060606D618F8842\n" 
+"15D3206DA060606E2062A06E6062206EE060E06EA062A0\n" 
+"6FE062208E2082608E60820120E0672846C4F880000125\n" 
+"284632BDDFF89004816801650021416501824182022181\n" 
+"82002101864186416A8166C16A81670021C0F880107047\n" 
+"0000000000000000E03F676616400100A0402DE9F14F2D\n" 
+"ED048B82B0DFF84C44656D05F10F0000F00F01E81D00F0\n" 
+"07000090002210469FEDBF8A8646DFF8308408EB810383\n" 
+"ED030ABDF81830002B15D003460FE04E1EF61A1036F710\n" 
+"06EB17773F11B6EB071603D408EB860686ED030A5B1C1B\n" 
+"B2BDF81860B342EBDB102D02D2294609B200E00F219FED\n" 
+"AB9ADFEDAA0ADFEDAA8AB0EE681A03461BE008EB8106D6\n" 
+"ED031AF5EE401AF1EE10FA10DD39EE219AF4EE610AF1EE\n" 
+"10FA01D5F0EE610AF4EE411AF1EE10FA01D5B0EE611A5B\n" 
+"1C491E09B20029E1D51BB2194603290BDB79EE600A70EE\n" 
+"C10A891E01EE101AB8EEC11A80EE819A07E0012905DB00\n" 
+"EE903AF8EEE00A89EE209AB5EE409AF1EE10FA01D0002B\n" 
+"01D1B0EE409A84ED189A9FEDCA0AB4EE409AF1EE10FA02\n" 
+"D59FEDC89A08E09FEDC70AB4EE409AF1EE10FA01DBB1EE\n" 
+"029AB0EE040AB4EE409AF1EE10FA08D494ED1D0AF0EE08\n" 
+"0AB4EE600AF1EE10FA02D50321218601E004212186266D\n" 
+"06F00707DFF8E89207EB090C218EF1940390EF84008CF8\n" 
+"8818BDF81830002B0AD0731E03F007034B4406F0070ACA\n" 
+"449AF888A883F888A808230BE0BAF1040F01D10EF1010E\n" 
+"7F1E3FB2002F00D508375B1E1BB2012B15DB3FB207EB09\n" 
+"0A9AF988A8BAF1030F01D1401C03E0BAF1040F00D1521C\n" 
+"062BE6DBBAF1030FDED1AEF1010EE0E7638E9C4F3B8592\n" 
+"B2934680B20BEB000707EBD77A4FEA6A0A82450BDBDA45\n" 
+"04DA4FF0040CA4F832C015E00FFA8EFEBEF1000F04D54F\n" 
+"F0030CA4F832C00BE0BEF1010F04DB4FF0040CA4F832C0\n" 
+"03E09CF988C8A4F832C0B4F832A0BAF1040F00D1104653\n" 
+"4509D00020A082608A00281CD1042D1AD30120A08217E0\n" 
+"052F10DB00EE100AB8EE400A00EE907AF8EEE00A80EE20\n" 
+"0AF6EE080AB4EE600AF1EE10FA02D50120A08201E00220\n" 
+"A08249B2B0EE490A404600F0D4FADFED6C0AB4EE600AF1\n" 
+"EE10FA01D5B0EE600A84ED190ABDF81800471C00EE907A\n" 
+"F8EEE09AD4ED1A0A49EE800AC4ED1A0A20EE090ADFED60\n" 
+"0A20EE200A009909EB810101F6680181ED000ABDF81810\n" 
+"002916D0002312E00099491EC91A08318A1001EB5272D2\n" 
+"10B1EBC20105D409EB810101F6680181ED000A5B1C1BB2\n" 
+"8342EADB082D02D2284600B200E007209FED011A002121\n" 
+"E0000000000000C84209EB8002D2F8682800EE902AF5EE\n" 
+"400AF1EE10FA10DD38EE208AB4EE601AF1EE10FA01D5B0\n" 
+"EE601AF4EE680AF1EE10FA01D5F0EE608A491C401E00B2\n" 
+"0028DFD509B2084603280BDB78EE410A70EEE80A801E01\n" 
+"EE100AB8EEC11A80EE818A07E0012805DB00EE901AF8EE\n" 
+"E00A88EE208AB5EE408AF1EE10FA01D0002901D1B0EE40\n" 
+"8AD4ED1B0A70EE800AB6EE001A60EE810AC4ED1C0A84ED\n" 
+"1B0A224880ED168A514649B2404600F0ADFA10EE100AEA\n" 
+"F74BFB8046894619EE100AEAF745FB0022DFF8EC39EAF7\n" 
+"6EFA02460B460020DFF8E419F7F737FC42464B46EAF763\n" 
+"FAEAF75BFB1049C866084690ED1B0AD4ED1E0A49EE800A\n" 
+"C4ED1E0AB81920657819606502B0BDEC048BBDE8F18F00\n" 
+"006766A63F6666A63F01009040CDCC4C3E00007042A866\n" 
+"8800EC018800BC0088003C018800746F88000000354300\n" 
+"00904270B52DED088B0646B0EE408A49B2032940F0C380\n" 
+"9FEDE70AB4EE408AF1EE10FA01DBB0EE408AD6ED018A9F\n" 
+"EDE30AF4EE408AF1EE10FA2ADB18EE100AEAF7E6FADFF8\n" 
+"3829DFF83839EAF70EFADFF83429DFF83439FBF75AFB04\n" 
+"460D4618EE900AEAF7D4FADFF82429DFF82439EAF7FCF9\n" 
+"DFF85024DFF81C39FBF748FB22462B46EAF7F2F9EAF7EA\n" 
+"FA08EE100A84E1DFEDCB0AF4EEF1940320F38400608AF1\n" 
+"EE10FA59DBF4EE408AF1EE10FA54D59FEDC60A38EE800A\n" 
+"DFEDC50A20EE20AA18EE900AEAF7A7FA41EC190B18EE10\n" 
+"0AEAF7A1FADFF8B028DFF8B038EAF7C9F9DFF8AC28DFF8\n" 
+"AC38FBF715FB41EC1B0B53EC192BDFF8A008DFF8A018EA\n" 
+"F7B9F9DFF8CC23DFF89838FBF705FB53EC1B2BEAF7AFF9\n" 
+"EAF7A7FA00EE100A20EE0A8A53EC192BDFF8780CDFF878\n" 
+"1CEAF7A1F9DFF8742CDFF8743CFBF7EDFA53EC1B2BEAF7\n" 
+"97F9EAF78FFA00EE100AF7EE000A70EECA0A00EE208A23\n" 
+"E118EE100AEAF75AFADFF82028DFF82038EAF782F9DFF8\n" 
+"1C28DFF81C38FBF7CEFA04460D4618EE900AEAF748FA22\n" 
+"462B46EAF772F9DFF8202CDFF8203CEAF76CF9EAF764FA\n" 
+"08EE100AFEE0D6ED018A9FED860AF4EE408AF1EE10FA41\n" 
+"DB18EE100AEAF72CFA41EC190B53EC192BDFF8F00BDFF8\n" 
+"F01BEAF750F953EC192BEAF74CF904460D4653EC192BDF\n" 
+"F8DC0BDFF8DC1BEAF742F902460B4620462946F7F74CFA\n" 
+"DFF8CC2BDFF8CC3BFBF788FA04460D4618EE900AEAF702\n" 
+"FADFF88027DFF88037EAF72AF9AB4ADFF87C37FBF777FA\n" 
+"22462B46EAF721F9EAF719FA08EE100AB3E0DFED620AF4\n" 
+"EE608AF1EE10FA70DBF4EE408AF1EE10FA6BD59FED5D0A\n" 
+"38EE800ADFED5C0A20EE20AA18EE100AEAF7D6F941EC19\n" 
+"0B53EC192BDFF8440BDFF8441BEAF7FAF853EC192BEAF7\n" 
+"F6F804460D4653EC192BDFF8300BDFF8301BEAF7ECF802\n" 
+"460B4620462946F7F7F6F9DFF8202BDFF8203BFBF732FA\n" 
+"41EC1B0B18EE900AEAF7ACF941EC190B53EC192BDFF8CC\n" 
+"06DFF8CC16EAF7D0F87E4ADFF8C836FBF71DFA53EC1B2B\n" 
+"EAF7C7F8EAF7BFF900EE100A20EE0A8A53EC192BDFF8A8\n" 
+"0ADFF8A81AEAF7B9F8DFF8A42ADFF8A43AFBF705FA53EC\n" 
+"1B2BEAF7AFF8EAF7A7F900EE100AF7EE000A70EECA0A00\n" 
+"EE208A3BE018EE100AEAF772F941EC190B53EC192BDFF8\n" 
+"7C0ADFF87C1AEAF796F853EC192BEAF792F804460D4653\n" 
+"EC192BDFF8680ADFF8681AEAF788F802460B4620462946\n" 
+"F7F792F9DFF8582ADFF8583AFBF7CEF904460D4618EE90\n" 
+"0AEAF748F922462B46EAF772F8DFF8202ADFF8203AEAF7\n" 
+"6CF8EAF764F908EE100AB6F90800022803D19FEDA20A28\n" 
+"EE008AB0EE480ABDEC088B70BD00BF9A99194000002A43\n" 
+"00001643000016C3CDCC4C3D00007A44CCCCFC3F38B52D\n" 
+"ED028BB0EE408A0C46002549B2FFF70EFEF0EE408A64B2\n" 
+"042C2FD19FED900AB4EE408AF1EE10FA18DBF1EE020AB4\n" 
+"EE608AF1EE10FA11D518EE100AEAF7FDF82C4ADFF8703C\n" 
+"FBF778F92A46DFF86C3CEAF7F19403B0F6840021F8F7F7\n" 
+"19F9C51D3EE0B4EE408AF1EE10FA01D5072537E0B1EE02\n" 
+"0AB4EE408AF1EE10FA30DB12252EE0B7EE080AB4EE408A\n" 
+"F1EE10FA18DB9FED750AB4EE408AF1EE10FA11D518EE10\n" 
+"0AEAF7CDF82A46DFF8183CFBF748F92A46DFF80C3CE9F7\n" 
+"F1FFF7F7E9F805460EE0B7EE080AB4EE408AF1EE10FA07\n" 
+"D49FED650AB4EE408AF1EE10FA00DB0625DFF8E40B00EB\n" 
+"850090ED000A28EE800ABDEC028B31BD0000CDCCCCCC70\n" 
+"B52DED028B06460C4610EE100AEAF799F841EC100B9FED\n" 
+"A78B64B2042C53EC102BDFF8AC0B0CD1DFF8A81BE9F7B8\n" 
+"FF53EC182BFBF706F9EAF7ACF800EE100A0BE0DFF8941B\n" 
+"E9F7ABFF53EC182BFBF7F9F8EAF79FF800EE100A10EE10\n" 
+"0AEAF771F8DFF8782BDFF8783BE9F799FF04460D463068\n" 
+"EAF766F822462B46E9F790FFEAF788F800EE100ABDEC02\n" 
+"8B70BD000000C06240000054400000A040F8B52DED028B\n" 
+"0027DFF83C6B96ED168AF06DEAF749F84FF06632DFF830\n" 
+"3BE9F771FF02460B4614461D4618EE100AEAF73BF82246\n" 
+"2B46F6F78FFF04D2B08E022801DB012719E09FED760AB4\n" 
+"EE408AF1EE10FA12D5DFF8F80A90ED120ADFED710AB4EE\n" 
+"600AF1EE10FA07DBDFED6F0AB4EE600AF1EE10FA00D501\n" 
+"27012F1FD196ED1D0AF0EE000AB4EE600AF1EE10FA0AD5\n" 
+"9FED660AB4EE408AF1EE10FA03DBB08E022800DB0027DF\n" 
+"F8A80A90ED190ADFEDC00AB4EE600AF1EE10FA00D50027\n" 
+"3846BDEC028BF2BD00003333733F676606409A99394070\n" 
+"B52DED048B04460026DFF8685A688E03281FDA95ED160A\n" 
+"DFED4F0AB4EE600AF1EE10FA16DB95ED100AF2EE040AB4\n" 
+"EE600AF1EE10FA0DD595ED120ADFEDA40AB4EE600AF1EE\n" 
+"10FA04D5DFF8080D04218180012695ED128A9FED9E9B95\n" 
+"ED130A38EE000A10EE100AE9F7B4FF53EC192BE9F7DEFE\n" 
+"0022DFF8883CF6F703FF21D3D5ED108A95ED110A38EE80\n" 
+"0A10EE100AE9F7A0FF53EC192BE9F7CAFE0022DFF8903C\n" 
+"F6F7EFFE0DD3B3EE040AB4EE408AF1EE10FA06D4B1EE04\n" 
+"0AF4EE408AF1EE10FA04D5DFF88C0C05218180012695ED\n" 
+"160ADFED900AB4EE600AF1EE10FA2DDBDFF8980990ED11\n" 
+"0AD0ED120A80EE200ADFED890AB4EE600AF1EE10FA1EDB\n" 
+"00EE104AB8EE400AD0ED0F0AC0EE800AB6EE001AF4EE41\n" 
+"0AF1EE10FA0FD5D0ED100A80EE800AF6EE000AB4EE600A\n" 
+"F1EE10FA04D5DFF8200C1521818001263046BDEC048B70\n" 
+"BD0000000000000C409A99993F010020420000C8420100\n" 
+"00402DE9F0410026DFF81079796D4018DFF8E88B022819\n" 
+"D397ED160ADFED690AB4EEF1940340FA8400600AF1EE10\n" 
+"FA10DB97ED130AD7ED120A80EE200ADFED630AB4EE600A\n" 
+"F1EE10FA03DB0921A8F80410012602281BD39FED5E0AD7\n" 
+"ED130A97ED121AC0EE810AF4EE400AF1EE10FA0EDBD7ED\n" 
+"110A97ED101AC0EE810AF4EE400AF1EE10FA03DB0A21A8\n" 
+"F80410012600281BD0D8F84C00E9F7F3FE4FF03332DFF8\n" 
+"583CE9F71BFE02460B4614461D46DFF87808406FE9F7E4\n" 
+"FE22462B46F6F738FE03D20B20A8F80400012697ED160A\n" 
+"DFED410AB4EE600AF1EE10FA08DA97ED170ADFED3D0AB4\n" 
+"EE600AF1EE10FA1BDB97ED120ADFED3A0AB4EE600AF1EE\n" 
+"10FA0BD497ED100ADFED360AB4EE600AF1EE10FA02D4B8\n" 
+"8E022806DB788E032803DB0C20A8F80400012698ED050A\n" 
+"DFED2C0AB4EE600AF1EE10FA08D497ED1D0AF1EE040AB4\n" 
+"EE600AF1EE10FA15D5D8F85000D8F854100818E9F7AAFD\n" 
+"0022DFF8303CE9F7BDFD0122DFF8283CF6F7FAFD03D80D\n" 
+"20A8F8040016463046BDE8F08100002042000000000000\n" 
+"E03FCDCC4C3F0020DFF890170A6D12F10A0F0FD29FED12\n" 
+"0AD1ED1A0AF4EE400AF1EE10FA06DAD1ED1E0AF4EE400A\n" 
+"F1EE10FA00DB012070470000010040403433333F010060\n" 
+"400100A0400100704101009040010080400000C8430000\n" 
+"16438096184B00004E400000F03F7958A835CD3BBE3F9E\n" 
+"5E29CB10C7E23F79E9263108AC5C3FCCCCE43F2DE9F24F\n" 
+"82B004460020009000F0B1FCDFF8E0590020E8636864A8\n" 
+"64A8806F6EDFF8686B96ED150AD4ED000A70EEC00A01EE\n" 
+"107AB8EEC11A60EE810AF5EE400AF1EE10FA17D5D5ED1C\n" 
+"0A30EE600A10EE100AE9F70FFE21F00041DFF8342BDFF8\n" 
+"A436F6F777FD02D8A86D401CA865706D286778426866AF\n" 
+"6E96ED160AD4ED010A70EEC00A01EE107AB8EEC11A60EE\n" 
+"810AF5EE400AF1EE10FA17D5D5ED1D0A30EE600A10EE10\n" 
+"0AE9F7E5FD21F00041DFF8E02ADFF85036F6F74DFD02D8\n" 
+"E86D401CE865B06D68677842A866EF6E96ED170AD4ED02\n" 
+"0A70EEC00A01EE107AB8EEC11A60EE810AF5EE400AF1EE\n" 
+"10FA17D5D5ED1E0A30EE600A10EE100AE9F7BBFD21F000\n" 
+"41DFF88C2ADFF8FC35F6F723FD02D8286E401C2866F06D\n" 
+"A8677842E866DFF8F4753878052805D10120A862002038\n" 
+"7028806880686BBDF8081010FA81F06863D5F81C80E86A\n" 
+"804501D10120A862D5F8209009EB49004FEA800A20684A\n" 
+"F806000AEB060B6068CBF80400A068CBF80800BDF80810\n" 
+"204600F05BF9B8619BED020ADBED010A5AF8060001EE10\n" 
+"0A21EE011A00EEA01A00EE001A11EE100AE9F76AFD41EC\n" 
+"100BFAF75AFE51EC100BF19403D0FD8400E9F78AFD00EE\n" 
+"100AD5F824A0BAF1000F10D1002004E006EB810181ED18\n" 
+"0A401C80B201460729F6DBF1EE0C0A60EE200AC5ED020A\n" 
+"06EB8900D0ED180A70EE600A95ED021A70EE810AC5ED02\n" 
+"0A80ED180A06EB880BCBED260A95ED040A30EE200A85ED\n" 
+"040A90ED1F0A30EEC00A0BF2804181ED000AC0ED1F0A95\n" 
+"ED060ADBF8800400EE900A30EE200A85ED060A06F15400\n" 
+"94EC030A80EC030AE86F012806D10120A8620020387028\n" 
+"80688072E0A86B401CA8633978012901D0032937D10228\n" 
+"2AD2798E042927DA786D002862D195ED030ADFED630AB4\n" 
+"EE600AF1EE10FA08D5DBF8800401EE100AB4EE601AF1EE\n" 
+"10FA0FDAF9EE0C0AB4EE600AF1EE10FA49DBDBF8800400\n" 
+"EE100AB4EE600AF1EE10FA40D50120A8623DE0272808D3\n" 
+"2988002903D010FA81F04B2801D30120A862DBF8800400\n" 
+"EE900A95ED030A00F01CFA3878012827D12888002824D0\n" 
+"6988002921D0032211FA80F03D2801DB0120A862788E04\n" 
+"2800DB0222B88E824201D20120A862286D6865A86DE96D\n" 
+"0818296E0818286500202866E865A865FEF7F7FC009000\n" 
+"206880B886286BA8EB000000F1FA04E888012808D1FA20\n" 
+"B4FBF0F0FA2101FB104096280CD107E0FA20B4FBF0F0FA\n" 
+"2101FB1040642803D100F042FB0120E863FA20B4FBF0F0\n" 
+"FA2101FB1046642E03D100F074FB0120E863788A002808\n" 
+"D0322E0BD04B2E0CD10020B8820120E86307E0388A0028\n" 
+"04D07D2E02D10120B882E863DBF88004E86008F10100E8\n" 
+"61FA2801D10020E86109F101002862072801D100202862\n" 
+"0AF101006862E86B002807D007F184042C22391D2046E4\n" 
+"F7ECFC2C640098BDE8FE8F613255302AA9633FA4703D0A\n" 
+"D7A3E03F0100E040B8ED221C1818783FCA54C1A8A44ED8\n" 
+"3FDF4F8D976E12FD3FDE718A8EE4720A4010B4DFF85837\n" 
+"90ED000AD3ED150A30EE600AD0ED010A93ED161A70EEC1\n" 
+"0A90ED021AD3ED171A31EE611AB5EE400AF1EE10FA02DD\n" 
+"F0EE401A01E0F1EE401AF5EE400AF1EE10FA02DDB0EE60\n" 
+"2A01E0B1EE602AB5EE401AF1EE10FA02DDF0EE412A01E0\n" 
+"F1EE412A71EE821A71EEA21AB5EE400AF1EE10FA02DDB0\n" 
+"EE402A01E0B1EE402A9A4AD2ED0F2A32EE822A82ED0F2A\n" 
+"F5EE400AF1EE10FA02DDB0EE602A01E0B1EE602AD2ED10\n" 
+"2A32EE822A82ED102AB5EE401AF1EE10FA02DDB0EE412A\n" 
+"01E0B1EE412AD2ED112A32EE822A82ED112A92ED122A32\n" 
+"EE212A82ED122A92ED0C2AD0ED002A32EE222A82ED0C2A\n" 
+"92ED0D2AD0ED012A32EE222A82ED0D2A92ED0E2AD0ED02\n" 
+"2A32EE222A82ED0E2AF1940360018500DFF8B404406A00\n" 
+"2812D1002006E003EB840404F69004C4ED001A401C80B2\n" 
+"04460F2CF4DBB2EE0E2A21EE822A82ED172A508D03EB80\n" 
+"03D3F8904802EE104A31EEC22AD2ED172A32EE222A82ED\n" 
+"172A03F69003C3ED001AF2EE0E1AC2EE211A5E4BC3ED1D\n" 
+"1ADFF8F03593ED012A22EE202AD3ED002A62EE802AF5EE\n" 
+"402AF1EE10FA0DD4B5EE402AF1EE10FA08D493ED023A23\n" 
+"EE013AB5EE403AF1EE10FA5AD593ED023A23EE013AF4EE\n" 
+"422AF1EE10FA0AD5F4EE432AF1EE10FA02D5F0EE623A0C\n" 
+"E0F0EE433A09E0B4EE432AF1EE10FA02D5F0EE423A01E0\n" 
+"F0EE433AF5EE403AF1EE10FAF4EE422A15DDF1EE10FA0A\n" 
+"D5F4EE432AF1EE10FA02D5B0EE622A21E0B0EE432A1EE0\n" 
+"B4EE432AF1EE10FA19D4B0EE432A16E0F1EE10FA0AD5F4\n" 
+"EE432AF1EE10FA02D5B0EE622A09E0B0EE432A06E0B4EE\n" 
+"432AF1EE10FA01D4B0EE432AB1EE422AD2ED1F2AF4EE42\n" 
+"2AF1EE10FA01D582ED1F2A83ED000AC3ED010A83ED021A\n" 
+"92ED190AF4EE401AF1EE10FA01D5C2ED191A92ED1A0AB4\n" 
+"EE610AF1EE10FA01D5C2ED1A1A9FEDC20AF4EE401AF1EE\n" 
+"10FA04D5136E13FA81F1116601E000211166401C508580\n" 
+"B20F2801D100205085106E10BC7047CCCC00C000001440\n" 
+"0000F8BF6C0288009A9999999999C93F9999B93F7B14AE\n" 
+"47E17A743F3C0188006666E63FEC01880070B52DED048B\n" 
+"B0EE408AF0EE608A9FEDAE9ADFF85464708E042801DBB0\n" 
+"EE009AB5EE408AF1EE10FA07DBF5EE408AF1EE10FA02D5\n" 
+"B08E401CB0863078002807D0022800F08B8047D3032800\n" 
+"F0B480FCE019EE100AE9F77EFA41EC100B53EC102B0020\n" 
+"DFF81414FAF7F5FA41EC190B18EE100AE9F76FFA02460B\n" 
+"4651EC190BF6F7D9F912D818EE900AE9F764FA02460B46\n" 
+"51EC190BF6F7B6F907D28E48816B1029C0F0C180002181\n" 
+"63BDE08A48C169DFF8BC0300EB8101D1F8800400EE100A\n" 
+"DFF8BC13D1ED010AB4EE600AF1EE10FA40F1BC8081ED01\n" 
+"0AB8E07E48C169DFF88C2302EB8101D1F8801400EE101A\n" 
+"DFF88C13D1ED000AF4EE400AF1EE10FA01D581ED000AB7\n" 
+"EE000AB4EE408AF1EE10FAC0F29C80F4EE408AF1EE10FA\n" 
+"40F19680816B01800021816319EE100AE9F713FA02460B\n" 
+"460020DFF84813F6F74AFA02460B4614461D4618EE900A\n" 
+"E9F704FA22462B46F6F758F923D30220307076E019EE10\n" 
+"0AE9F7F8F941EC100B0020DFF8141353EC102BF6F72DFA\n" 
+"41EC190B18EE100AE9F7E9F953EC192BF6F755F95ED818\n" 
+"EE900AE9F7E0F953EC192BF6F734F955D2032030704C48\n" 
+"C069B14901EB8000F19403F0048500D0F88004B2494860\n" 
+"49E04748C169AC4A02EB8101D1F8801400EE101AAC49D1\n" 
+"ED010AB4EE600AF1EE10FA01D581ED010A9FED930AB4EE\n" 
+"408AF1EE10FA2FD5F4EE408AF1EE10FA2ADB816B418000\n" 
+"21816318EE900AE9F7A8F902460B4614461D4619EE100A\n" 
+"E9F7A0F90022984BFAF71CFA22462B46F6F7F0F80FD201\n" 
+"203070944929480A6842644A688264C0698C4A02EB8000\n" 
+"D0F88004086001E0002030703078BDEC048B70BD854800\n" 
+"787047002804D03C49096C2C22D9F7B3BE70477F48416D\n" 
+"002904D1C18E008F10FA81F0704700207047000000003E\n" 
+"4080B513480021416200F062F800F022F8744805210170\n" 
+"022181822C22011D8430BDE80840E4F700BAEC51383E00\n" 
+"002440002806D0724942684A6002680A60008908817047\n" 
+"000000006E48006E70470000BC00880010B5634C608E21\n" 
+"8E002904D0002802D00020A08206E0084302D00120A082\n" 
+"01E00220A082002060652067A062E06020822086E08620\n" 
+"87E0652066402201465D48E8F7B3F8D4F88000012801D1\n" 
+"FEF7BEFBA08F002808D0E18F814201D2608700E0618700\n" 
+"20A087E067E06F012801D1E08F60870020E06710BDBC00\n" 
+"880010B5444C608E218E002904D0002802D00020A08206\n" 
+"E0084302D00120A08201E00220A0820020A062E0600822\n" 
+"01464348E8F77DF8002060866082E060E0862087D4F880\n" 
+"00012801D1FEF782FBE06F012801D1E08F608710BD80B5\n" 
+"39480121C167FFF7CEFFFFF78EFFBDE801402CE0344800\n" 
+"21C167704700003333D33F2548418F406D081A00D50020\n" 
+"704738B5044629482049012C04D10622CA870C22828503\n" 
+"E00722CA870F228285254DEA88A24209D04A8F082A03DA\n" 
+"C88F00F010F802E0808D00F00CF8EC8031BD1A48808D11\n" 
+"49498F814200D202E07047FEFF7FBF0D494A6D4B8F9A42\n" 
+"03D248870020C86770478887704780B5002801D1002002\n" 
+"BD542201461048E4F729F9012002BD00000000E03F0080\n" 
+"4B403C018800A86688009B999999C06F880000001C40CC\n" 
+"6F880000001CC0746F8800EC018800806F8800306F8800\n" 
+"BC0088006C02880038B5DFF82C4B0020A065E065206660\n" 
+"66A066A081DFF8A05B4FF42072014605F14000E7F7E0FF\n" 
+"4FF42072002105F53070E7F7D9FF9022002105F5B860E7\n" 
+"F7D3FF402200212846E7F7CEFF40220021DFF86C0BE7F7\n" 
+"C8FF40220021DFF8640BE7F7C2FF40220021DFF85C0BE7\n" 
+"F7BCFF4022002105F5A860E7F7B6FF4022002105F5B060\n" 
+"E7F7B0FF4022002104F11800E7F7AAFF40220021DFF8C0\n" 
+"0BE7F7A4FF4022F19403800885000021DFF8B80BE7F79E\n" 
+"FF05220021DFF8B00BE7F798FF05220021DFF8D40BE7F7\n" 
+"92FF052200212046E7F78DFFDFF8CC0B002101810846E0\n" 
+"666067A067E0672061A0602067C4F880000220A0730846\n" 
+"E07331BDDFF8A80BDFF8A81B0161DFF8501C4161816132\n" 
+"2141814FF4967181814B21C1814FF496710FF20800DFF7\n" 
+"5DBD00004C5420496E697453524120256400000080B50F\n" 
+"F21400DFF74FFDDFF8F4090021017301BD000000004C54\n" 
+"2053746F70007047DFF8481B4FF47A725043086101460F\n" 
+"F20400DFF738BD4C5420535044202564000000DFF8242B\n" 
+"4FF47A7148435061014691610FF20400DFF726BD4C5420\n" 
+"57504420256400000010B5DFF8004B6081E8F7AAFE0022\n" 
+"DFF83C3CE8F7B3FEF5F795FFE08161890FF20C00BDE810\n" 
+"40DFF70BBD00004C5420535220256400000000DFF8C81A\n" 
+"888101460FF20400DFF7FCBC4C54205341522053544120\n" 
+"25640000000EB410B587B0DFF8A44ABDF86E0000281CD1\n" 
+"DFF8C40CD0E90023CDE90223D4E90001CDE90001DDE902\n" 
+"2300F09BFD21694FF47A724243914206D201460FF22800\n" 
+"DFF7D2FC01200AE0002008E004A8DFF770FF204604A905\n" 
+"22D9F762FC002007B010BC5DF810FB00004C5420535420\n" 
+"436B20256400DFF8C8080121C165816500214166816670\n" 
+"47DFF8B8080121016681657047DFF8AC08806D7047DFF8\n" 
+"A408002181650FF20800DFF79FBC00004C542052455345\n" 
+"545F434D4452440000DFF880080021C1650FF20400DFF7\n" 
+"8EBC4C542052455345545F504F5352455100DFF8600800\n" 
+"2101660FF20400DFF77EBC4C542052455345545F504F49\n" 
+"41434B00DFF84008012141660021816601727047DFF830\n" 
+"080121816670472DE9F04106460F469046DFF8A848DFF8\n" 
+"A058204629464022D9F707FC85ED000B85ED021B85ED04\n" 
+"2B85F8296085F82A7085F82B80D4E90423002001460AF0\n" 
+"8FFE10D1D4E900230AF08AFE0BD1D4E902230AF085FE06\n" 
+"D1204629464022BDE8F041D9F7E3BBBDE8F08110B5DFF8\n" 
+"BC47606E01280AD1DFF84408DFF838184022D9F7D4FB00\n" 
+"206066012010BD002010BD10B5DFF89847606E01280AD1\n" 
+"DFF82008DFF810184022D9F7C1FB00206066012010BD00\n" 
+"20606610BD0020DFF870178A6E012A01D1886601207047\n" 
+"0FB400B59DB0DDE92E23F5F7ACFECDE90C01DDE92001DD\n" 
+"E93023F5F7A4FECDE90E010CA984B068464022D9F79AFB\n" 
+"0FBC00F037FC53EC102B0020DFF8541CE8F782FD41EC10\n" 
+"0B1DB05DF814FB00000FB470B52DED048B9EB0DFF80857\n" 
+"687A002801D1F19403100C8500002075E00A2801DB0A26\n" 
+"00E0AE7A9FED678B002422E0DFF8701701EB801000F530\n" 
+"710CA84022D9F76BFB26A984B068464022D9F765FB0FBC\n" 
+"FFF7B1FFB0EE409AF0EE609A51EC190B53EC182BF5F774\n" 
+"FD03D2B0EE498AF0EE698A641CE4B22046B042D8DBDFF8\n" 
+"04088089E8F72DFD02460B4651EC180BF5F75FFD30D226\n" 
+"A982B068464022D9F73CFB0CBC0EA800F0FCFDDFF8F446\n" 
+"94F969058DF8700004F2695090F901108DF8711090F902\n" 
+"008DF87200B4F86C05ADF87300DDE90E23DDE91C0100F0\n" 
+"30FC00F04DF8C4F87805402204F5A86105F11800E3F783\n" 
+"FE002008E053EC182B0FF21800DFF75FFB0120C5F88000\n" 
+"1EB0BDEC048B70BC5DF814FB4C54205341204F55542025\n" 
+"66000000001FB5DFF8784694F969058DF8000004F26950\n" 
+"90F901108DF8011090F902008DF80200B4F86C05ADF803\n" 
+"00DFF86009D0E90023CDE90223DDE9000100F0EDFB00F0\n" 
+"0AF8C4F87805402204F5A861DFF8D80CE3F740FE1FBD70\n" 
+"B5DFF8CC4ADFF89455E97B04FB01062A6D96420DD2901B\n" 
+"DFF8BC1C884208D331460FF21000DFF70EFBA619E87B40\n" 
+"1CE873304670BD4C5420646966666F6C64202564202564\n" 
+"0000000000000000006AF8400FB42DE9F8432DED088B86\n" 
+"B0DFF89C46DFF8D098D9E90001CDE90401D4E90001CDE9\n" 
+"0201DDE9042300F0A2FBDFF81C55A97ADFF8A06506EB81\n" 
+"129DED160B82EDB00B02F530739DED188B83ED028B9DED\n" 
+"1A9B83ED049B237882F8E93202F2E92367785F70A7789F\n" 
+"7000B2C2F8F802481CA872C0B20A2801D10020A872687A\n" 
+"471C6F72FFB2781EE8F73BFC41EC1A0B06F2405853EC1A\n" 
+"2BD8E90201E8F749FC53EC182BF9F797FD41EC180B53EC\n" 
+"1A2BD8E90401E8F73DFC53EC192BF9F78BFD41EC190B38\n" 
+"46E8F726FC41EC1B0B53EC1A2B06F5A86041680068E8F7\n" 
+"2AFCDDE91623F9F778FD53EC1B2BF5F7F2FD06F5A862C2\n" 
+"E9000151EC180B53EC1B2BF5F7E8FDC8E9020151EC190B\n" 
+"53EC1B2BF5F7E0FDC8E9040106F26950012F0AD1217886\n" 
+"F8691561784170A1788170B4F80310A6F86C1596F96915\n" 
+"8DF8001090F901108DF8011090F902008DF80200B6F86C\n" 
+"05ADF80300D9E90001CDE90201DDE90223DDE9000100F0\n" 
+"05FBFFF722FFC6F878054022414605F11800E3F759FD68\n" 
+"7A012806D10120A8730FF2C830DFF734FA05E00320A873\n" 
+"0FF2D010DFF72DFA06B0BDEC088BBDE8F1035DF814FB0F\n" 
+"B42DE9F0472DED0A8B86B0DFF82CA7DAE90001CDE90401\n" 
+"DFF8B804D0E90023CDE90223DDE90423DDE9020100F0CC\n" 
+"FA8046DC4CF19403A00F8500A07A461E36B2002E01D50A\n" 
+"3636B2607AE8F792FB41EC180BDFF8DC5305EB861653EC\n" 
+"182B05F5A86041680068E8F792FBD6E9B023F5F79EFC41\n" 
+"EC190B06F5307705F2405953EC182BD9E90201E8F782FB\n" 
+"D7E90223F5F78EFC41EC1A0B53EC182BD9E90401E8F776\n" 
+"FBD7E90423F5F782FC41EC1B0B9FEDE4CBD6E9B023DDE9\n" 
+"1801F9F7BAFC53EC1C2BE8F764FBC6E9B001D7E90223DD\n" 
+"E91A01F9F7AEFC53EC1C2BE8F758FBC7E90201D7E90423\n" 
+"DDE91C01F9F7A2FC53EC1C2BE8F74CFBC7E90401C7F838\n" 
+"8053EC1A2BD7E90201F9F794FC41EC1A0B51EC1B0BD7E9\n" 
+"0423F9F78CFC41EC1B0B51EC190BD6E9B023F9F784FC53\n" 
+"EC182BF5F7FEFC05F5A862C2E9000151EC1A0B53EC182B\n" 
+"F5F7F4FCC9E9020151EC1B0B53EC182BF5F7ECFCC9E904\n" 
+"0195F969058DF8000005F2695090F901108DF8011090F9\n" 
+"02008DF80200B5F86C05ADF80300DAE90001CDE90201DD\n" 
+"E90223DDE9000100F01EFAFFF73BFEC5F8780540224946\n" 
+"04F11800E3F772FC0320A0730FF21400DFF750F906B0BD\n" 
+"EC0A8BBDE8F0075DF814FB00004C542041522053540000\n" 
+"00000FB42DE9F8432DED0A8B86B09FED998BDDE91823DD\n" 
+"E92801F9F724FC53EC182BE8F7CEFA41EC190BDDE91A23\n" 
+"DDE92A01F9F718FC53EC182BE8F7C2FA41EC1A0BDDE91C\n" 
+"23DDE92C01F9F70CFC53EC182BE8F7B6FA41EC180BAC4C\n" 
+"DFF81895D9E90001CDE90401D4E90001CDE90201DDE904\n" 
+"2300F0C5F9594DA97ADFF8106B06EB811282EDB09B02F5\n" 
+"307383ED02AB83ED048B237882F8E93202F2E92367785F\n" 
+"70A7789F70B4F80330A2F8EC32C2F8F802481CA872C0B2\n" 
+"0A2801D10020A872687A471C6F72FFB2781EE8F762FA41\n" 
+"EC1B0B06F2405853EC1B2BD8E90201E8F770FA53EC1A2B\n" 
+"F9F7BEFB41EC1A0B53EC1B2BD8E90401E8F764FA53EC18\n" 
+"2BF9F7B2FB41EC180B3846E8F74DFA41EC1C0B53EC1B2B\n" 
+"06F5A86041680068E8F751FA53EC192BF9F79FFB53EC1C\n" 
+"2BF5F719FC06F5A862C2E9000151EC1A0B53EC1C2BF5F7\n" 
+"0FFCC8E9020151EC180B53EC1C2BF5F707FCC8E9040106\n" 
+"F26950012F0AD1217886F8691561784170A1788170B4F8\n" 
+"0310A6F86C1596F969158DF8001090F901108DF8011090\n" 
+"F902008DF80200B6F86C05ADF80300D9E90001CDE90201\n" 
+"DDE90223DDE9000100F02CF9FFF749FDC6F87805402241\n" 
+"4605F11800E3F780FB687A012805D10120A8730FF21800\n" 
+"DFF75BF806B0BDEC0A8BBDE8F1035DF814FBA03088004C\n" 
+"5420415220494E000000000FB418B4DFF89C09C16E01EB\n" 
+"C1021A4BF194033013850003EBC20202F5B8639DED020B\n" 
+"83ED000B9DED040B83ED020B04AC94ED020B83ED040B9D\n" 
+"F8313082F8E93502F2E9530DF1310464785C700DF13104\n" 
+"A4789C70BDF83430A2F8EC3502F2EC520DABDB6853613E\n" 
+"4B5C8914839B895383002901D10121C16611BC04B07047\n" 
+"3031880080378800C037880000388800000000000000E0\n" 
+"3F0FB410B5DFF80C09C16E01EBC102DFF8003903EBC202\n" 
+"02F5B8639DED020B83ED000B9DED040B83ED020B04AC94\n" 
+"ED020B83ED040B9DF8313082F8E93502F2E9530DF13104\n" 
+"64785C700DF13104A4789C70BDF83430A2F8EC3502F2EC\n" 
+"520DABDB6853611A4B5C8914839B895383022901D2491C\n" 
+"C166022181730FF21800DEF7C4FF10BC5DF814FB000040\n" 
+"3888008038880064C988004C54204152204F5500000000\n" 
+"0FB480B59DED041B9DED020BE9F798FE01BC5DF814FBDF\n" 
+"F85C08C06D704700006CC98800DFF84C08006E704774C9\n" 
+"8800E093040010B5DFF838484022002104F5A860E7F798\n" 
+"F94022002104F5B060E7F792F9DFF820484022002104F1\n" 
+"1800E7F78AF940220021DFF81008E7F784F900206072A0\n" 
+"722061DFF80408002101810846E0730FF20C00BDE81040\n" 
+"DEF76DBF00004C542052455345545F41535000000000DF\n" 
+"F8D007C06E704780B5DFF8C41701F5B06001F5A8614022\n" 
+"D8F702FFDFF8B4070021C16601BDC9B201EBC102DFF8A0\n" 
+"1701EBC20101F5B8614822D8F7F1BE000060E316003FB5\n" 
+"81B04FF47A704EF66022DFF88C379DF904109DF9054054\n" 
+"4303FB01419DF9064014FB0011BDF9074001FA84F19DF9\n" 
+"0C409DF90D506A4303FB04229DF90E3013FB0020BDF90F\n" 
+"2000FA82F0441A42F20F721319934205D200240FF23800\n" 
+"DEF711FF07E0DFF83827944203DADFF834271018441A20\n" 
+"46E8F78BF8DFF82C27DFF82C37E8F79DF805B0BDE83040\n" 
+"F5F77CB90000F83F41542D4C5420646966662054696D65\n" 
+"2052657365740000002DE9F64383B08146BDF90F404EF6\n" 
+"6025DFF8DC669DF90C009DF90D10694306FB00109DF90E\n" 
+"104FF47A7211FB020000FA84F10C98412808D15F18DFF8\n" 
+"C80687420BD3DFF8C406C71907E0994204D2DFF8A80640\n" 
+"18C71A00E0CF1A3846E8F74CF80022DFF8A836F5F725FA\n" 
+"F5F737F980465FFA88F806FB18763046E8F73DF80022DF\n" 
+"F88C36F5F716FAF5F728F9C0B28DF8008001468DF80110\n" 
+"05FB1060E8F72CF8DFF85826DFF85836E8F734F8F5F716\n" 
+"F98DF80200ADF80340484600A90522D8F727FE05B0BDE8\n" 
+"F0835CC9880010B40020DFF81016D1F88020012A04D101\n" 
+"200022F19403C0168500C1F880201AE0DFF8B41DD1F878\n" 
+"25D1F8B8359A4211D191F8692591F8A9359A420BD101F2\n" 
+"A95201F269514B785478A34203D189789278914200D001\n" 
+"2010BC704700B58DB0DFF8BC05407A00280BD0DFF8701D\n" 
+"84B068464022D8F7FAFD0FBCFFF7FFFD012004E00FF20C\n" 
+"00DEF745FE00200DB000BD4C54204E6F20535000000000\n" 
+"30B583B0DFF87C45217B61732073401E052874D8DFE800\n" 
+"F0031D2335445F00A8DFF7CFF8DFF81C5D284600A90522\n" 
+"D8F7BFFDA86968610020E0720FF2CC00DEF71BFE6969DF\n" 
+"F8000D03B0BDE83040DEF713BE0FF2C000BDE83E40DEF7\n" 
+"0DBE00A8DFF7AFF8DFF8DC5C284600A90522D8F79FFD60\n" 
+"6FE8610FF2A800BDE83E40DEF7FBBD00A8DFF79DF8DFF8\n" 
+"B80C00A90522D8F78EFD0FF29800BDE83E40DEF7ECBD00\n" 
+"202061DFF89C5C288140220146DFF8D804E6F7E8FF00A8\n" 
+"DFF783F8284600A90522D8F775FD606FE8610FF27400BD\n" 
+"E83E40DEF7D1BD00A8DFF773F8DFF8645C284600A90522\n" 
+"D8F763FD606FE861002020720FF25800BDE83E40DEF7BD\n" 
+"BD37BD00408F40805101004C542D434B5F535400000000\n" 
+"4C542D4745543153540000004C542D434B5F55535F4D4F\n" 
+"56000000004C542D434B5F474554324E44000000004C54\n" 
+"2D434B5F554C454156004C542D5041555345000000000C\n" 
+"B400B583B09DF939108DF800100DF1390191F901108DF8\n" 
+"01100DF1390191F902108DF802100021ADF8031000A905\n" 
+"22D8F712FD0EBC5DF80CFB00002DE9F84F2DED0A8B9CB0\n" 
+"82469FED568BDFF8DC83B8F81000B8F81290814502D25F\n" 
+"FA89F901E0C0B28146DFF8CC03B0F90800461E00D50A36\n" 
+"DFF8B0B30BEB861797ED109B97ED12AB97ED14BB01243C\n" 
+"E0301A00D50A300BEB801505F140010CA84022D8F7EBFC\n" 
+"07F1400184B068464022D8F7E4FC0FBCFFF730F9B0EE40\n" 
+"CAF0EE60CA51EC180B53EC1C2BF4F7F3FE03D2B0EE4C8A\n" 
+"F0EE6C8A53EC1B2BD5E91401F9F710F841EC1B0B53EC19\n" 
+"2BD5E91001F9F708F841EC190B51EC1A0BD5E91223F9F7\n" 
+"00F841EC1A0B641CE4B220464845BEDB4846E7F796FE41\n" 
+"EC1C0B51EC1B0B53EC1C2BF5F76CF8CAE9040151EC190B\n" 
+"53EC1C2BF5F764F8CAE9000151EC1A0B53EC1C2BF5F75C\n" 
+"F8CAE90201B8F81000B8F8121088421ED207F140010CA8\n" 
+"4022D8F78CFCDFF8901A84B068464022D8F785FC0FBCFF\n" 
+"F7D1F8B0EE40CAF0EE60CA51EC180B53EC1C2BF4F794FE\n" 
+"03D2B0EE4C8AF0EE6C8AB0EE480AF0EE680A1CB0BDEC0A\n" 
+"8BBDE8F18F0000000000000000B8308800714301000FB4\n" 
+"2DE9F19403501A8500F8432DED068BA2B030A982B06846\n" 
+"4022D8F756FC0CBC0EA8FFF716FFDFF8201A82B0684640\n" 
+"22D8F74BFC0CBC10A8FFF70BFFDDE91023DDE90E01FFF7\n" 
+"53FD1E28C0F20A818D4EB6F90840DFF8249209EB841040\n" 
+"3030A94022D8F732FC601C308100B20A2801D100203081\n" 
+"824D288A0A2801DA401C2882688A401C6882288A0A2801\n" 
+"DA002700E0377A7B4CD4E900230020014609F0AFFE2FD1\n" 
+"D4E9022309F0AAFE2AD1D4E9042309F0A5FE25D109EB87\n" 
+"16DFF8908996F9690088F8000006F2690090F9011088F8\n" 
+"011090F9020088F80200B6F86C00A8F80300DFF8600906\n" 
+"F140014022D8F7EDFB204606F140014022D8F7E7FB0020\n" 
+"A063AFE012A8FFF7C3FEB0EE408AF0EE608ADFF83C89B0\n" 
+"89E7F7BCFD53EC182BF4F7F0FD28D209EB871696F96900\n" 
+"88F8000006F2690090F9011088F8011090F9020088F802\n" 
+"00B6F86C00A8F80300DFF8F80806F140014022D8F7B8FB\n" 
+"204606F140014022D8F7B2FB0020A06368820FF61010DE\n" 
+"F7FFFB75E0D8E90001CDE90001DDE90E23FFF7B4FC0746\n" 
+"39460FF60010DEF7F0FB70694FF47A717943884261D26E\n" 
+"8A304604285DDBA16B00290DD19DED120B84ED000B9DED\n" 
+"140B84ED020B9DED160B84ED040BA7633AE0401EE7F758\n" 
+"FD41EC190B3046E7F75DFD41EC1A0B51EC190BD4E90023\n" 
+"E7F763FDDDE93023F8F7B1FE53EC1A2BF4F72BFFC4E900\n" 
+"0151EC190BD4E90223E7F753FDDDE93223F8F7A1FE53EC\n" 
+"1A2BF4F71BFFC4E9020151EC190BD4E90423E7F743FDDD\n" 
+"E93423F8F791FE53EC1A2BF4F70BFFC4E90401A7632146\n" 
+"84B068464022D8F740FB0FBCFFF797F8A06B009053EC18\n" 
+"2B698A0FF64000DEF788FB22B0BDEC068BBDE8F1035DF8\n" 
+"14FB7047DFF8DC07807B704730318800A0308800403888\n" 
+"0074C9880080EE3600F1D8FFFF005C2605FCA9F1D24D62\n" 
+"503F015C260500A4D9FA40774B41004CED40062821D8DF\n" 
+"E800F004080C1014181C000FF2F470DEF756BB0FF2F870\n" 
+"DEF752BB0FF60000DEF74EBB0FF60800DEF74ABB0FF61C\n" 
+"00DEF746BB0FF62800DEF742BB0FF63C00DEF73EBB7047\n" 
+"00000EB42DE9F8412DED028B9EB00646DFF84857686F08\n" 
+"18686700A8DEF7D2FDDFF83C87404600A90522D8F7C2FA\n" 
+"404690F90100294691F90110401A00D54042022801D03A\n" 
+"2806D1287BFFF7B4FFD8E90001C5E900013D9804280AD1\n" 
+"E86F401CE8677043DFF8FC168842A441E443E40F02E000\n" 
+"20E8670446686FA96F411A332900DBA867297B062900F2\n" 
+"5083DFE811F007000D009100E3008E0135022C03FFF752\n" 
+"FBF19403E01D85000120FFF7ADFC40E327A983B0684658\n" 
+"22D8F78EFA0EBC304680B2FEF7E9FD002843D0002C41D1\n" 
+"D8E90001CDE903014D200090DFF870060369DDE903010A\n" 
+"46014601A8FFF7DDFBDFF87C0601A90522D8F75FFADFF8\n" 
+"481682B068464022D8F768FA0CBC1CA8FFF728FDD8E900\n" 
+"01CDE90001DDE90023DDE91C01FFF76CFB0446B4F5967F\n" 
+"07DD21460FF22870DEF7A5FAFEF7E9FD06E00120686621\n" 
+"460FF22070DEF79BFA0220FFF75CFCEFE2686E012840F0\n" 
+"EC8200206866DFF8E465314684B068464022D8F735FA0F\n" 
+"BCFEF7A8FE2867012811D10020286706F5A86184B06846\n" 
+"4022D8F726FA0FBCFFF773FAFFF7DBFA0FF2DC60DEF771\n" 
+"FA002C40F0C782314684B068464022D8F714FA0FBCFFF7\n" 
+"AFFDBCE2FEF72DFE002836D00320FFF721FC687A002822\n" 
+"D0DFF8A065314684B068464022D8F7FEF90FBCFEF771FE\n" 
+"2867012814D100202867DFF8581584B068464022D8F7EF\n" 
+"F90FBCFFF73CFAFFF7A4FA0FF27C60DEF73AFA0120FFF7\n" 
+"FBFB002C40F08D82DFF8541584B068464022D8F7D9F90F\n" 
+"BCFFF774FD81E2FEF719FE002800F07D82287A401C2872\n" 
+"C0B2032803DB0620FFF7DFFB02E00120FFF7DBFB0FF240\n" 
+"60DEF713FA6AE2686E012858D100206866687A002822D0\n" 
+"DFF8D464314684B068464022D8F7AEF90FBCFEF721FE28\n" 
+"67012814D10020286706F5A86184B068464022D8F79FF9\n" 
+"0FBCFFF7ECF9FFF754FA0FF2FC50DEF7EAF90120FFF7AB\n" 
+"FBDFF8BC64002C08D1314684B068464022D8F789F90FBC\n" 
+"FFF724FDDFF874140CA84022D8F780F9314684B0684640\n" 
+"22D8F77AF90FBCFEF7C6FDB0EE408AF0EE608ADFF85804\n" 
+"4089E7F752FB53EC182BF4F786FB06D20FF2AC50DEF7B9\n" 
+"F90120FFF77AFBDFF83474D8E90001CDE90201D7E90001\n" 
+"CDE90001DDE90223FFF766FA696FFA69891AFA898A4207\n" 
+"D20FF28450DEF79EF90120FFF75FFBF2E179694FF47A72\n" 
+"5043814280F0EC81DFF8E81382B068464022D8F738F90C\n" 
+"BC1CA8FFF7F8FBD8E90001CDE90001DDE90023DDE91C01\n" 
+"FFF73CFA0446B4F5967F07DDFEF7BEFC21460FF24050DE\n" 
+"F773F906E00120686621460FF24050DEF76BF90420FFF7\n" 
+"2CFBBFE1FEF743FD002800F08380DFF8B473394684B068\n" 
+"464022D8F706F90FBCFEF779FD2867012820D100202867\n" 
+"DA4984B068464022D8F7F8F80FBCFFF745F9FFF7ADF90F\n" 
+"F20050DEF743F90120FFF704FB002C40F09681394684B0\n" 
+"68464022D8F7E3F80FBCFFF77EFC8BE1D54E39460CA840\n" 
+"22D8F7D9F8314684B068464022D8F7D3F80FBCFEF71FFD\n" 
+"F1940370218500B0EE408AF0EE608AC2484089E7F7ACFA\n" 
+"02460B4651EC180BF4F7DEFA1FD2687B0528394608D184\n" 
+"B068464022D8F7B8F80FBCFEF7E3FE0CE00CA84022D8F7\n" 
+"B0F8314684B068464022D8F7AAF80FBCFEF7B9FFFEF748\n" 
+"FC0520FFF7BAFA4DE153EC182B0FF26440DEF7EFF80120\n" 
+"FFF7B0FA002C40F04281394684B068464022D8F78FF80F\n" 
+"BCFFF72AFC37E1FEF7CFFC002800F03381297A0FF23C40\n" 
+"DEF7D5F8287A401C2872C0B2032803DB0620FFF790FA23\n" 
+"E1A349974841610FF22C40DEF7C4F80320FFF785FA18E1\n" 
+"0320A873686E01285CD1002068668D4E314684B0684640\n" 
+"22D8F75EF80FBCFEF7D1FC2867012820D10020286706F5\n" 
+"A86184B068464022D8F74FF80FBCFFF79CF8FFF704F90F\n" 
+"F2F030DEF79AF80120FFF75BFA002C36D1874984B06846\n" 
+"4022D8F73BF80FBCFFF7D6FB2CE031460CA84022D8F732\n" 
+"F87E4984B068464022D8F72CF80FBCFEF778FCB0EE408A\n" 
+"F0EE608A6F484089E7F705FA53EC182BF4F739FA11D20F\n" 
+"F25C30DEF76CF80120FFF72DFA002C08D1704984B06846\n" 
+"4022D8F70DF80FBCFFF7A8FB614FD8E90001CDE90201D7\n" 
+"E90001CDE90001DDE90223FFF70FF9696FFA69891AFA89\n" 
+"8A4207D20FF25830DEF747F80120FFF708FA9BE07A694F\n" 
+"F47A73584382423ED215293CD34E4E96F929008DF87000\n" 
+"06F2290090F901108DF8711090F902008DF87200D8E900\n" 
+"01CDE90001DDE90023DDE91C01FFF7E0F80446B4F5967F\n" 
+"07DDFEF762FB21460FF20430DEF717F806E00120686621\n" 
+"460FF20430DEF70FF80420FFF7D0F9E87A401CE872C0B2\n" 
+"03285EDBB869410079610FF20010DDF7FFFF56E0012C2F\n" 
+"D12E4E96F929008DF8700006F2290090F901108DF87110\n" 
+"90F902008DF87200D8E90001CDE90001DDE90023DDE91C\n" 
+"01FFF7A1F80446B4F5967F07DDFEF723FB21460FF28420\n" 
+"DDF7D8FF06E00120686621460FF28420DDF7D0FF0120FF\n" 
+"F791F924E0FEF77CFC21E0174FF989FA69801A81420BD2\n" 
+"0FF27420DDF7BFFF0FF28020DDF7BBFF0120FFF77CF90F\n" 
+"E0686E012807D10FF27420DDF7B0FF0120FFF771F904E0\n" 
+"687B042801D1FEF759FC287B1EB0BDEC028BBDE8F2015D\n" 
+"F810FB0000303188007036880074C98800B42485008038\n" 
+"8800803788006CC98800A03088005CC98800C1D4010064\n" 
+"C98800C037880000388800E09304004C542D5750204348\n" 
+"414E4745202564004C542052455345545F474150000000\n" 
+"004C54204741204D546D202564000000004C5420535020\n" 
+"534741522025642C2025662C2025640000004C542D53F1\n" 
+"940300258500535F494E495400004C542D434845434B5F\n" 
+"53544F500000004C542D53535F4745545F464952535400\n" 
+"4C542D53535F434845434B5F555345525F4D4F56454D45\n" 
+"4E540000004C542D53535F4745545F5345434F4E440000\n" 
+"00004C542D53535F434845434B5F555345525F4C454156\n" 
+"494E47000000004C542D53535F50415553455F53544159\n" 
+"494E475F53454E53494E47004C54205245512D46202564\n" 
+"004C542045584953542D317374202564004C5420536176\n" 
+"65205341554D000000004C5420537461794F75742D4650\n" 
+"0000004C54204E4F54204F4B203173740000004C542053\n" 
+"54204F75742D554D000000004C542D4D44206F76657220\n" 
+"25660000004C542D445354204F56202564000000004C54\n" 
+"205245512D326E642025640000004C542045584953542D\n" 
+"326E64202564004C542053544F55202D5350004C542D4D\n" 
+"44204F56202566004C542D5053204E4F54204F4B20326E\n" 
+"64202564004C542D5750204348414E47453A5053204E47\n" 
+"2025640000004C542053544F552D554C00004C542D4453\n" 
+"204F56202564004C54205245512D554C20256400000000\n" 
+"4C542045584953542D554C20256400004C542053532041\n" 
+"4741494E2042592053540000004C542D434B5F53544F50\n" 
+"00004C5420535320414741494E204259205053000000B0\n" 
+"F5803F5EDBB0F1807F35DBB0F1805F15DBB0F1804F0CDB\n" 
+"DFF8381C884202DB4BF20450704701160FF2F802895C09\n" 
+"0211E081150FF2EC02895CC9010BE00FF2E401B0F1806F\n" 
+"03DB0215515C890102E08214515C490190FBF1F2511849\n" 
+"1C491090FBF1F25118491C491001FB01F2904200DA491E\n" 
+"084670470FF2A801B0F5801F0ADBB0F5800F03DB021451\n" 
+"5C09010DE08213515CC90009E0B0F5802F03DB0213515C\n" 
+"890002E08212515C490090FBF1F25118491C491001FB01\n" 
+"F2904200DA491E08467047FF2823DD0FF25801B0F5805F\n" 
+"0BDBB0F5804F03DB0212515C491C10E08211515C490849\n" 
+"1C0BE0B0F5806F04DB0211515C8908491C03E08210515C\n" 
+"C908491C11FB01F2904200DA491E08467047002804D40F\n" 
+"F20C01405C000970474FF0FF3070470010161B2023272A\n" 
+"2D30323537393B3D4041434547494B4C4E505153545657\n" 
+"595A5B5D5E60616263656667686A6B6C6D6E7071727374\n" 
+"75767778797A7B7C7D7E80808182838485868788898A8B\n" 
+"8C8D8E8F9090919293949596969798999A9B9B9C9D9E9F\n" 
+"A0A0A1A2A3A3A4A5A6A7A7A8A9AAAAABACADADAEAFB0B0\n" 
+"B1B2B2B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFF194\n" 
+"0390288500C0C0C1C1C2C3C3C4C5C5C6C7C7C8C9C9CACB\n" 
+"CBCCCCCDCECECFD0D0D1D1D2D3D3D4D4D5D6D6D7D7D8D9\n" 
+"D9DADADBDBDCDDDDDEDEDFE0E0E1E1E2E2E3E3E4E5E5E6\n" 
+"E6E7E7E8E8E9EAEAEBEBECECEDEDEEEEEFF0F0F1F1F2F2\n" 
+"F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFBFBFCFCFDFDFE\n" 
+"FEFF2DE9F0419AB00546144620461422D7F7FFFC00210A\n" 
+"4611E0142055F8213000AF00FB067747F8223000AF00FB\n" 
+"027040F82630761C491C052EEEDB521C052A01DA1646F8\n" 
+"E70021142000E01946052980F28A8000AA00FB012252F8\n" 
+"21700D464B1C1E4606E0CEF1000CE04501DA3546774676\n" 
+"1C052E10DAB846B8F1000F01D5C8F100080DF1000C00FB\n" 
+"06CC5CF821E0BEF1000FE7D4F446E7E78D4218D000260C\n" 
+"E052F826700DF1000C00FB05CC5CF826E042F826E04CF8\n" 
+"2670761C052EF0DB54F8217054F8256044F8216044F825\n" 
+"701E4614E0002D11D052F82650AD0142F8265052F82150\n" 
+"AD110FD052F8265052F82170BF1195FBF7F542F8265076\n" 
+"1C052E52F82150E6DB002D02D14FF0FF3046E054F82160\n" 
+"96FBF5F544F821501D461EE057F826E052F826804FEAE8\n" 
+"084FEAEC0C0CFB08FCAEEBAC1C47F826C0761C00AF00FB\n" 
+"057757F821C0052EE9DB54F8256054F821700CFB176644\n" 
+"F825606D1C052DBFF674AF1E46EAE7042113E054F82100\n" 
+"01EB810200AB03EB820252F8262054F826305A43A0EB22\n" 
+"3044F82100761C052EECDB491E002901D44E1CF8E70020\n" 
+"1AB0BDE8F0812DE9F04186B000252E462C46234603AF9C\n" 
+"469E469846A7E8005100AFA7E800511F4604E0664501DB\n" 
+"66463B467F1C032F11DA002F04D10668354643461C46F5\n" 
+"E70FF28C0C17F90CC050F82CC0AC45E9DB65463C46EAE7\n" 
+"03AD012645F8236045F82460464601E0761C76B2032E04\n" 
+"DA55F82670002FF7D101960094029343460EE0AF1807EB\n" 
+"860706EB460C01EB8C0C5CF824C0C7F804C0761C032EF1\n" 
+"DB5B1C032B10DA00AC54F823400FF2240C14F90C5050F8\n" 
+"25601D01AE50012E01DA4646AE504646E9E7404606B0BD\n" 
+"E8F0810000000305002DE9F24F98B0014602A81822D7F7\n" 
+"C6FB002101E0491C49B2032913DA002004E0002342F820\n" 
+"30401C40B20328F2DA0C220EAB12FB01328142F2D14FF4\n" 
+"804342F82030F0E70020019024E00C220EA912FB001252\n" 
+"F8241052F8253006FB01F70BFB03FCA7EBEC07BF1142F8\n" 
+"24704FEAEB07734307FB0131891142F82510401C0328E3\n" 
+"DB02A808A91822D7F788FB0198401C40B2019001980628\n" 
+"80F2DD8001200024054602270399002900D54942F19403\n" 
+"202C8500049A002A00D55242914202DA38460546012702\n" 
+"A951F82000002800D540420699002900D54942884202DA\n" 
+"0124022500270FF2881004EB440101EB000805EB450101\n" 
+"EB000915F8090002A951F8200014F8081002AA52F82110\n" 
+"401A461015F8080002A951F8200000900A2190FBF1F096\n" 
+"FBF1F1404301FB0100FFF720FD00EB80015FEA410B11D0\n" 
+"300000D54042000390FBFBF000F580504FEA600A5046FF\n" 
+"F70EFD064606FB0BF0801002D14FF0FF3082E000990903\n" 
+"91FBF0FB15F8090002A951F8200014F8081002AA52F821\n" 
+"10884201DACBF1000B0BFB0BF08011009008A802A91822\n" 
+"D7F705FB17F80800014602AA52F821107143891117F809\n" 
+"2002AB53F822200BFB02F2A1EB622108AA42F8201017F8\n" 
+"091002AA52F820000BFB00F052F821207243921102EB60\n" 
+"2008AA42F8210015F8080002A951F8200006FB0BF18911\n" 
+"4843011214F8080002AA52F820000AFB00F0C1EB203015\n" 
+"F8092053F82220009B5A4300EB223014F8082008AB43F8\n" 
+"220015F8090002AA52F820000AFB00F001EB203014F808\n" 
+"1052F82110009A514300EB213015F8091008AA42F82100\n" 
+"15F8080008A9002241F82020104613E7189A0EA902A8FF\n" 
+"F767FE002019B0BDE8F08F000102010304020405000000\n" 
+"F0B4DFF82C2C02F5217191F9013092F98442012C1BDB5C\n" 
+"1E64B2002C01D5303464B204EB440502EB8504E56C8668\n" 
+"AD1BA66C4768F61B646C0768E41B764304FB046405FB05\n" 
+"44642C01DA00202FE003EB430402EB8403443370C870C3\n" 
+"4878401C487040B2302801DB0020487092F88402401C82\n" 
+"F8840240B2302802DB302082F8840292F98402C21000EB\n" 
+"12721211B0EB02100BD191F90100C11000EB11710911A0\n" 
+"EB0110401E8041C00F00E00020F0BC7047DFF87C0B90F9\n" 
+"8412CA1001EB12710911012903D1002180F88412704710\n" 
+"2180F8841270472DE9F047B0B005460E460027DFF84C8B\n" 
+"98F9844298F88502A0EB04094FFA89F9B9F1000F03D509\n" 
+"F130094FFA89F9BA4624E009EB490008EB8000A968C26C\n" 
+"891A6A68836CD21A2B68406C181A524300FB002001FB01\n" 
+"00FFF7E2FB00A941F82A00C71909F101094FFA89F9B9F1\n" 
+"300F01D14FF000090AF1010A4FFA8AFAA245D8DB97FBF4\n" 
+"F030600022134607E000A951F82310091A01FB01225B1C\n" 
+"5BB298F984128B42F3DB92FBF1F030B0BDE8F0872DE9FE\n" 
+"4100ACE0C9E0C40C39002635462C4627460AE053F827C0\n" 
+"52F827E051F82780AEEB080E0EFB0C667F1C032FF2DB71\n" 
+"1306EB9141891322460FE053F822604E4300AFF19403B0\n" 
+"2F850057F822704FEA663C06EB9C4607EBA63600AF47F8\n" 
+"2260521C032AEDDB21460CE050F8212000AE56F8216092\n" 
+"1B53F8216002FB065502FB0244491C0329F0DB002C02D1\n" 
+"40F2011008E0280000D54042851205FB05F090FBF4F000\n" 
+"B2BDE8FE812DE9F0419AB0144600220AAD164602E045F8\n" 
+"2260521C0F2AFADB324606E005AD45F8226000AD45F822\n" 
+"60521C052AF6DB32460AAE07E00FF64425555753F82270\n" 
+"46F82570521C062AF5DB0025209A1CE005EB45060FF630\n" 
+"27F6199E5730F9157002EB051C0CEB830CDCF814C00CFB\n" 
+"07F70DF1280C4CF82670002F02D0BF124CF826705B1C03\n" 
+"2BE3DB6D1C022D01DA0023F8E70025219B00AF04E053F8\n" 
+"256047F825606D1C032DF8DB00250C261BE002EB051C0C\n" 
+"EB830CDCF814C051F823E054F82380AEEB080E0EFB0C77\n" 
+"5B1C032BEEDBBB1230F915707B4300AF07EB8507FB606D\n" 
+"1C6DB2B61C022D15DA1368002B02D14FF0FF3025E030F9\n" 
+"1570A7F58067BF0497FBF3F337467FB20DF1280C4CF827\n" 
+"3000273B46DAE705AA00A90AA8FFF7E9FB002522980AE0\n" 
+"05A951F8251040F8251054F82520511840F825106D1C03\n" 
+"2DF2DB00201AB0BDE8F0812DE9FE4F002423461D461E46\n" 
+"68C00C3802E041F825605B1C5BB21D46062DF8DB234602\n" 
+"E042F825605B1C5BB21D46032DF8DBDFF88C3803F52175\n" 
+"6E7893F88472F61B76B2002E01D5303676B2A44616E050\n" 
+"F827E006EB460803EB880808EB8708D8F84480C64440F8\n" 
+"27E07F1C032FEFDB761C76B2302E00D126460CF1010C93\n" 
+"F984724FFA8CFCBC4501DA2746EEE7264606E050F827E0\n" 
+"9EFBFCFC40F827C0761C93F984C276B23746032FF2DB6D\n" 
+"78A5EB0C0676B2350001D530356DB2A64617E005EB4508\n" 
+"03EB880808EB8708D8F8448050F82790A8EB090808FB08\n" 
+"447F1C032FEEDB6D1C6DB2302D00D100250EF1010E4FFA\n" 
+"8EFEE64501DA0027F0E794FBFCF4002E01D5303676B200\n" 
+"250FE052F827E00DF1000858F8278009FB08F80EEB680E\n" 
+"42F827E07F1C032FF0DB6D1C93F984726DB2BD424DDA00\n" 
+"2710E006EB460C03EB8C0C0CEB870CDCF844C050F827E0\n" 
+"ACEB0E0C0DF1000E4EF827C07F1C032FECDB761C76B230\n" 
+"2E00D100264FF0000B5F461AE04FFA8BFB51F82BE00DF1\n" 
+"000858F827800DF1000959F82A9009FB08EE41F82BE00C\n" 
+"F1010C0BF1010B4FFA8CFCE246BAF1030FE5DB7F1C032F\n" 
+"01DABC46F4E74FF0000C674606E00DF1000E5EF827E00E\n" 
+"FB0ECC7F1C032FF6DB0027ACEB0409A9E70020BDE8FE8F\n" 
+"000010A8FE7F2DE9F043A1B0044600200390F194034033\n" 
+"85004FF0FF35064604A8314601600BAA1AA908A8FFF700\n" 
+"FF002800F1AB800EA91AA8FFF708FC40B2002800F1A380\n" 
+"0DF110080120A8F80200DFF8A07605A802900BA801900E\n" 
+"A800901AAB08AA391D04A8FFF73EFE002800F18D8003A9\n" 
+"05A8FFF78FFD03991A29C0F2858097F9841242F2107212\n" 
+"9B93FBF1F35343DDF80CC093FBFCF393FBFCF9169B93FB\n" 
+"F1F15143624691FBF2F191FBF2F12160C4F80490A06003\n" 
+"9A2261324622753A6C22733346022201E0521E52B2002A\n" 
+"1CD497F984C24FEAEC0E0CEB1E7C4FEA2C1CACF1010C0C\n" 
+"EB4C0C4FFA8CFCBCF1070F01DB4FF0060C42FA8CFC07EB\n" 
+"8C0CDCF810C08C45E0DA531C5BB2012B24DB1A46521E52\n" 
+"B201E0521E52B2002A0CD407EB820CDCF834C04FF0640E\n" 
+"91FBFEFEF4448445F0DB531C5BB2002A44D40720207538\n" 
+"6C834208DB3B6418462073381D05A91CC91CC0012067E0\n" 
+"4FF48060A8F8020005A802900BA801900EA800901AAB08\n" 
+"AA391D04A8FFF7B7FD002806D403A905A8FFF709FD0399\n" 
+"012901DA28464CE0A06003992161B9F57A7F45DD396C00\n" 
+"2901D1B44601E0A1F1010C4FFA8CFC07EB8C01496B01EB\n" 
+"D1714FF4C87299FBF2F202EB6101814202DA6FF002002D\n" 
+"E017AB08AA05A9381DFFF736FDB446324605E049428D42\n" 
+"01DA0D469446521C032A06DA0EA901EB8201496A0029F1\n" 
+"D4F1E7BCF1000F00D10626BCF1010F00D10526BCF1020F\n" 
+"00D103262675E72803DA381D05A91CC91CC0012000E030\n" 
+"4621B0BDE8F083DFF8C0140A68002A02D16FF002007047\n" 
+"002802D16FF07F007047002206E001EB82035B689B0020\n" 
+"F81230521C032AF6DB0020704710B4DFF888140A68002A\n" 
+"02D16FF0020013E0002802D16FF07F000EE0002209E030\n" 
+"F912305C1003EB94739B1001EB82046360521C032AF3DB\n" 
+"002010BC7047DFF84C040168002902D16FF00200704700\n" 
+"6C7047DFF838140A68002A02D16FF002007047042802D3\n" 
+"6FF07F007047086400207047F0B589B00C4615460026DF\n" 
+"F810743968002902D16FF0020081E0002803D0002C01D0\n" 
+"002D02D16FF07F0078E031463BE0DFF8EC2301EB410302\n" 
+"EB4303B3F91CC0B0F900E01CFB0EFC4FF00A0E9CFBFEFC\n" 
+"B3F91E30B0F902E013FB0EF34FF00A0E93FBFEF3634401\n" 
+"EB410C02EB4C02B2F92020B0F904C012FB0CF2F44692FB\n" 
+"FCF2D2184FF47A7392FBF3F200AB43F8212000AA52F821\n" 
+"20531002EB93729210E04B03EB81031A63491C032913DA\n" 
+"30F9112047F6FF739A4202D012F5004FB8D132463A64D7\n" 
+"4A02EB8102126B920000AB43F82120DDE7F19403D03685\n" 
+"00E048FFF789FB002803D003A8FFF72AFE064600200AE0\n" 
+"00A951F8201007EB80025268A1EB820124F81010401C03\n" 
+"28F2DBFFF762FF2860002E06D516F1030F01D1FFF7C3FB\n" 
+"002000E0304609B0F0BD10B5BD4C201D00210A460B460E\n" 
+"C00FF22C313022D6F7EDFD0020206484F8840284F88502\n" 
+"01202060002010BD80B520EE000A00EEA00A01EE010A10\n" 
+"EE100AE6F79CF841EC100BF7F78CF951EC100BE6F7BCF8\n" 
+"00EE100A01BD000070B52DED068B8CB005460E46144600\n" 
+"2D00F0A380002E00F0A080002C00F09D8095ED021AD5ED\n" 
+"010A95ED000AFFF7D1FFF0EE408A96ED021AD6ED010A96\n" 
+"ED000AFFF7C7FF9FED988AF4EE488AF1EE10FA00F18380\n" 
+"B4EE480AF1EE10FA7DD4002009AA16E005EB8003D3ED00\n" 
+"0AC0EEA80AF1EE600A01EB8001C1ED000A06EB8001D1ED\n" 
+"000AC0EE800A02EB8001C1ED000A401C03A90328E5DB92\n" 
+"ED010AD1ED028A92ED021A91ED019A69EE010A48EEC00A\n" 
+"CDED000ADDED090A68EEA00ADDED031A41EEC10A00ADC5\n" 
+"ED010A9DED031A21EE001A9DED090A09EE401A85ED021A\n" 
+"9DED000AFFF776FFB4EE480AF1EE10FA34D4002008E005\n" 
+"EB8001D1ED000AC0EE800AC1ED000A401C0328F4DB95ED\n" 
+"020AD5ED019A69EEA80A40EE490ACDED060ADDED030A60\n" 
+"EE200A9DED000A40EE680A06ADC5ED010A9DED000A20EE\n" 
+"091A9DED030A09EEC01A85ED021A9DED060AFFF741FFB4\n" 
+"EE480AF1EE10FA02D56FF07F007BE0002008E005EB8001\n" 
+"D1ED000AC0EE800AC1ED000A401C0328F4DB9FED4CAB9D\n" 
+"ED000AD5ED010A70EE200A9DED060A39EEC00A07F0ABFF\n" 
+"10EE100AE5F7C1FF53EC1A2BE5F7EBFE434A434BF3F7B7\n" 
+"F8E5F7DFFF2060B1EE490A07F0D0FFB1EE400A10EE100A\n" 
+"E5F7ACFF53EC1A2BE5F7D6FE384A394BF3F7A2F8E5F7CA\n" 
+"FF60609DED030AB1EE400A07F0B9FF10EE100AE5F797FF\n" 
+"53EC1A2BE5F7C1FE2E4A2E4BF3F78DF8E5F7B5FFA060B1\n" 
+"EE680AB5EE400AF1EE10FA12D59FED290AD4ED010A70EE\n" 
+"600AC4ED010AF4EE400AF1EE10FA05D59FED2B0A30EE80\n" 
+"0A84ED010A94ED000AB5EE400AF1EE10FA05D5DFED250A\n" 
+"30EE200A84ED000A00200CB0BDEC068B70BD10B5104C16\n" 
+"48206016482061164860611648A0601648E06016486060\n" 
+"1648A0611222002104F11C00E4F7E1FE42F21070A083A0\n" 
+"84A085024800210160084610BD64CF880028CF8800BD37\n" 
+"86350000000000806640182D4454FB210940000034C31F\n" 
+"378500C9358500DD358500573585008B358500FD358500\n" 
+"7937850058CF88000000B4432C010000F19403603A8500\n" 
+"F4010000E8030000C80000002C010000F4010000C80000\n" 
+"002C010000F40100001E000000140000000F0000000001\n" 
+"02050609000003070A04080B0000002303604360C26081\n" 
+"60194603E000EB41021382491C82689142F8DB70470246\n" 
+"08469168022900DA704730B4536814688C4208DA591C51\n" 
+"6002EB430108821168491C116035E08B4201DB00215160\n" 
+"51684B1C536002EB4101088200210B4606E002EB4304B4\n" 
+"F9104001FA84F15B1C9468A342F5DB91FBF4F100231C46\n" 
+"07E002EB4405B5F910504D1B05FB0533641C9568AC42F4\n" 
+"DB93FBF5F3D2689A4202DB084600B206E0401A9A1A5043\n" 
+"90FBF3F0081800B230BC7047016000218180704770B4B0\n" 
+"F90420134604680D461E1BB54202DBE318AB4202DA8180\n" 
+"084600E0104670BC7047F8B504460D46002C01D0002D02\n" 
+"D16FF07F00F2BD244ED6F8C000002802D16FF00200F2BD\n" 
+"002712E034F91710C7EBC70006EBC000FFF782FF25F817\n" 
+"00014606EBC700A830FFF7CAFF25F817007F1C032FEADB\n" 
+"0020F2BD38B50024124D11E00FF2540050F824201421C4\n" 
+"EBC40005EBC000FFF755FF032105EBC400A830FFF7AAFF\n" 
+"641C032CEBDB0120C5F8C000002032BD06480649016006\n" 
+"49416002480021C0F8C01008467047F4D18800ECD18800\n" 
+"D53B85007F3B850090000000900000009000000000214F\n" 
+"F0804200E092089042FCD3002A09D05318984203D3401A\n" 
+"801A01EB420149089208F3E708467047002802D400F07F\n" 
+"0002E0404240F08000C0B2704700F07F01802800DB4942\n" 
+"0846704730B404460D46A54200DA2C461546A54200DA2C\n" 
+"46A34200DA1C46204630BC704730B404460D46AC4200DA\n" 
+"2C461546AC4200DA2C469C4200DA1C46204630BC704718\n" 
+"4900224A608A600861C860704770B50546144CA0682169\n" 
+"626823689A4214DB91FBF3F6266190FBF3F0FFF7A3FFA0\n" 
+"60072804DB2846FFF7E3FF002070BDE660256100216160\n" 
+"A16070BD521C626069182161E168491B01FB0100A06000\n" 
+"2070BD00000000300088000EB4F0B50999059A4A430092\n" 
+"069A4A430192089A4A4303921A465143029100A91022D6\n" 
+"F7DBFA04B05DF810FB10B40C181C19101910BC70470A78\n" 
+"22EA0000087070470A7810430870704730B583B004460D\n" 
+"460020ADF806000120009001AB224672210720DCF799FB\n" 
+"002801D100203EBD01A92846FFF7E5FF8DF806409DF804\n" 
+"008DF8070002230DF1060272210720DCF742FB002801D1\n" 
+"00203EBD01203EBD30B583B004460D460020ADF8060001\n" 
+"20009001AB224672210720DCF76FFBF19403F03D850000\n" 
+"2801D100203EBD01A92846FFF7B6FF8DF806409DF80400\n" 
+"8DF8070002230DF1060272210720DCF718FB002801D100\n" 
+"203EBD01203EBD0000DFF8D40800210170C17008214170\n" 
+"817000F00BBDDFF8C0080078032801D101207047002070\n" 
+"47DFF8B0080078042801D1012070470020704710B5DFF8\n" 
+"9C48217800290FD10F219F20FFF7AFFF06219F20FFF781\n" 
+"FF012020700020E07020710120607210BD012950D1617A\n" 
+"002952D1217900291AD1E17802290AD062785208824206\n" 
+"D30120E07000F021F9002862D010BD01295FD0A1784908\n" 
+"81425BD20220E07000F038F9002855D010BD01291ED1E1\n" 
+"7802290AD062785208824206D30120E07000F092F90028\n" 
+"0CD010BD012909D0A1784908814205D20220E07000F0A9\n" 
+"F900286BD1E078012859D000202071022020700020E070\n" 
+"0F219F20FFF757FF09219F20FFF729FF0120607210BD02\n" 
+"2955D1617A002902D00020607210BD217900291ED1E178\n" 
+"02290AD062785208824206D30120E07000F012F900280C\n" 
+"D010BD012909D0A1784908814205D20220E07000F029F9\n" 
+"002832D10020E0700120207110BD012921D1E17802290A\n" 
+"D062785208824206D30120E07000F07FF900280CD010BD\n" 
+"012909D0A1784908814205D20220E07000F096F9002811\n" 
+"D1E078012802D10020E07010BD002020710F219F20FFF7\n" 
+"FEFE032020700020E0700120607210BD38B50020ADF800\n" 
+"00DFF814472078FFF744FE9D218DF8001000ADFFF734FE\n" 
+"6870022300AA72210720DCF71DFA00280ED06078FFF732\n" 
+"FE9E218DF80010FFF723FE6870022300AA72210720DCF7\n" 
+"0CFA31BD3FB581B0DFF8C4462078032856D101A80FC8FF\n" 
+"F721FE054601A80FC8FFF72CFE2179002920D1E1780229\n" 
+"0BD06278AA4208DB0120E07001A80FC800F05DF900280D\n" 
+"D03BE001290AD0A178814207DA0220E07001A80FC800F0\n" 
+"CCF900282ED10020E0700120207129E0012921D1E17802\n" 
+"290BD06278AA4208DB0120E07001A80FC800F02FFA0028\n" 
+"0DD018E001290AD0A178814207DA0220E07001A80FC800\n" 
+"F09DFA00280BD1E078012802D10020E07005E000202071\n" 
+"042020700020E07005B030BD10B582B00020ADF80000DF\n" 
+"F804462078FFF7BBFD10F17B0F01DA002016BD9D218DF8\n" 
+"0010001FFFF7A6FD8DF801002070022300AA72210720DC\n" 
+"F78DF9002801D1002016BD012016BD10B582B00020ADF8\n" 
+"0000DFF8BC452078FFF797FD7C2801DB002016BD9D218D\n" 
+"F80010001DFFF783FD8DF801002070022300AA72210720\n" 
+"DCF76AF9002801D1002016BD0120F194038041850016BD\n" 
+"10B582B00020ADF80000DFF874456078FFF774FD10F17B\n" 
+"0F01DA002016BD9E218DF80010001FFFF75FFD8DF80100\n" 
+"6070022300AA72210720DCF746F9002801D1002016BD01\n" 
+"2016BD10B582B00020ADF80000DFF82C456078FFF750FD\n" 
+"7C2801DB002016BD9E218DF80010001DFFF73CFD8DF801\n" 
+"006070022300AA72210720DCF723F9002801D1002016BD\n" 
+"012016BD10B582B00020ADF80000DFF8E8442078FFF72D\n" 
+"FD10F17F0F01D1002016BD9D218DF80010401EFFF718FD\n" 
+"8DF801002070022300AA72210720DCF7FFF8002801D100\n" 
+"2016BD012016BD10B582B00020ADF80000DFF8A0442078\n" 
+"FFF709FD7F2801D1002016BD9D218DF80010401CFFF7F5\n" 
+"FC8DF801002070022300AA72210720DCF7DCF8002801D1\n" 
+"002016BD012016BD10B582B00020ADF80000DFF8584460\n" 
+"78FFF7E6FC10F17F0F01D1002016BD9E218DF80010401E\n" 
+"FFF7D1FC8DF801006070022300AA72210720DCF7B8F800\n" 
+"2801D1002016BD012016BD10B582B00020ADF80000DFF8\n" 
+"10446078FFF7C2FC7F2801D1002016BD9E218DF8001040\n" 
+"1CFFF7AEFC8DF801006070022300AA72210720DCF795F8\n" 
+"002801D1002016BD012016BD3FB581B000252846ADF800\n" 
+"00DFF8C44360780199884217DB6079FFF79AFC10F17A0F\n" 
+"11DBA4218DF80010001FFFF787FC00A948706071022300\n" 
+"AA72210720DCF76EF8002853D0012560780299884217DB\n" 
+"A079FFF77EFC10F17A0F11DBA5218DF80010001FFFF76B\n" 
+"FC00A94870A071022300AA72210720DCF752F8002837D0\n" 
+"012560780399884217DBE079FFF762FC10F17A0F11DBA7\n" 
+"218DF80010001FFFF74FFC00A94870E071022300AA7221\n" 
+"0720DCF736F800281BD0012560780499884219DB207AFF\n" 
+"F746FC10F17A0F13DBA9218DF80010001FFFF733FC00A9\n" 
+"48702072022300AA72210720DCF71AF8002801D1002001\n" 
+"E00125284605B030BD3FB581B000252846ADF80000B34C\n" 
+"A0780199884216DA6079FFF71EFC7B2811DAA4218DF800\n" 
+"10001DFFF70CFC00A948706071022300AA72210720DBF7\n" 
+"F3FF002850D00125A0780299884216DAA079FFF703FC7B\n" 
+"2811DAA5218DF80010001DFFF7F1FB00A94870A0710223\n" 
+"00AA72210720DBF7D8FF002835D00125A0780399884216\n" 
+"DAE079FFF7E8FB7B2811DAA7218DF80010001DFFF7D6FB\n" 
+"00A94870E071022300AA72210720DBF7BDFF00281AD001\n" 
+"25A0780499884218DA207AFFF7CDFB7B2813DAA9218DF8\n" 
+"0010001DFFF7BBFB00A948702072022300AA72210720DB\n" 
+"F7A2FF002801D1002001E00125F1940310458500284605\n" 
+"B030BD3FB581B000252846ADF80000774C607801998842\n" 
+"17DB6079FFF7A6FB10F17F0F11D0A4218DF80010401EFF\n" 
+"F793FB00A948706071022300AA72210720DBF77AFF0028\n" 
+"53D0012560780299884217DBA079FFF78AFB10F17F0F11\n" 
+"D0A5218DF80010401EFFF777FB00A94870A071022300AA\n" 
+"72210720DBF75EFF002837D0012560780399884217DBE0\n" 
+"79FFF76EFB10F17F0F11D0A7218DF80010401EFFF75BFB\n" 
+"00A94870E071022300AA72210720DBF742FF00281BD001\n" 
+"2560780499884219DB207AFFF752FB10F17F0F13D0A921\n" 
+"8DF80010401EFFF73FFB00A948702072022300AA722107\n" 
+"20DBF726FF002801D1002001E00125284605B030BD3FB5\n" 
+"81B000252846ADF80000394CA0780199884216DA6079FF\n" 
+"F72AFB7F2811D0A4218DF80010401CFFF718FB00A94870\n" 
+"6071022300AA72210720DBF7FFFE002850D00125A07802\n" 
+"99884216DAA079FFF70FFB7F2811D0A5218DF80010401C\n" 
+"FFF7FDFA00A94870A071022300AA72210720DBF7E4FE00\n" 
+"2835D00125A0780399884216DAE079FFF7F4FA7F2811D0\n" 
+"A7218DF80010401CFFF7E2FA00A94870E071022300AA72\n" 
+"210720DBF7C9FE00281AD00125A0780499884218DA207A\n" 
+"FFF7D9FA7F2813D0A9218DF80010401CFFF7C7FA00A948\n" 
+"702072022300AA72210720DBF7AEFE002801D1002001E0\n" 
+"0125284605B030BD0000508889005A888900DFF8600700\n" 
+"21C161DFF85C1700220A7701224A7700221046086381F8\n" 
+"2000C87770470FB410B5DFF83C479DF81D00411E8941C9\n" 
+"0F6177201D03A91022D5F7E4FDDFF824079DF81E104177\n" 
+"002180F8201001779DF80810002907D1217F4A1C227706\n" 
+"290EDB012101770BE000202077607F00289DF8080002D1\n" 
+"00F031F901E000F09DF810BC5DF814FB0FB438B5DFF8D4\n" 
+"469DF82400411E8941C90FE177201D05A91022D5F7B1FD\n" 
+"DFF8C0569DF82600687705A80FC8FFF776FA6061686100\n" 
+"2085F820002877E07F002804D105A80FC800F0AEF909E0\n" 
+"A07F002805A80FC802D000F0DFF901E000F018FA31BC5D\n" 
+"F814FBF8B50446DFF8785605F11C06DFF86806C17F4A1E\n" 
+"9241D20F7275407F411E8941C90FB175DFF85476387F30\n" 
+"7597F820002877284639461C22D5F76FFDB87F707005F1\n" 
+"2000DFF83C161022D5F766FD204629463422BDE8F840D5\n" 
+"F75FBD10B582B00020ADF80000A0208DF8000000AC0020\n" 
+"6070DFF80C0600210174022300AA72210720DBF7E7FD00\n" 
+"2801D1002016BDA1208DF80000FF206070022300AA7221\n" 
+"0720DBF7D8FD002801D10020F19403A048850016BD8021\n" 
+"A320FFF76AFA3C21A220FFF766FADFF8B80500218177DF\n" 
+"F8B4050163012016BD10B50446DFF8A005807F00282046\n" 
+"02D0BDE810400BE000F03AF8DFF89005C07F002803D120\n" 
+"46BDE8104054E010BD38B5DFF87845E07F012828D1DFF8\n" 
+"6C55201D291D1022D5F702FD04202070A069C7280FD120\n" 
+"1D0FC8FFF7C7F9A17F814208DA012085F8200001460FF2\n" 
+"5C50DBF742FD07E0002085F8200001460FF26450DBF739\n" 
+"FD012084F820000020E07731BD10B5DFF81845E17F0129\n" 
+"09D100F0CBF8002802D00420E07710BD0020E06210BD00\n" 
+"2909D100F0B6F8002802D00220E07710BD0020E06210BD\n" 
+"E06A411CE1620B2801DB0020E06210BD10B5044600F055\n" 
+"F8204600F05DF8204600F065F8204600F06DF8DFF8B404\n" 
+"816A01EB8102D100642291FBF2F1C26B836B9A4204DA00\n" 
+"6B052290FBF2F003E0C06A142290FBF2F0BDE8104090E0\n" 
+"38B5044600F014F8204600F01AF8DFF87454A86A00EB80\n" 
+"01C800642190FBF1F104EB8400400000F07CF801206877\n" 
+"31BDDFF854144FF4FA624A62C8228A62FFF752B9DFF840\n" 
+"14C82212FB00F2CA62322212FB00F20A6300EB80025200\n" 
+"4A638863C8630864704710B50146DFF8184404F134020A\n" 
+"2000F025F8206410BD10B50146DFF8044404F130023220\n" 
+"00F01AF8E06310BD10B50146DFF8EC4304F12C02C82000\n" 
+"F00FF8A06310BD10B5FFF723F9642101FB00F4002C02D0\n" 
+"204600F013F8204610BD10B400EBD0735B101468091900\n" 
+"FB0131441C91FBF4F11160591891FBF0F010BC704710B5\n" 
+"0146C82900DAC821DFF8944304F124020A20FFF7E3FFA0\n" 
+"6210BDDFF88813496A814201DA0120704700207047DD49\n" 
+"896A884201DA012070470020704740F2DD52904201DB40\n" 
+"F2DC500A2901DA0A2102E0652900DB64210818401D0A21\n" 
+"90FBF1F0C0B2D04948628862704780B500F004F8CB4801\n" 
+"21C17701BD0FB587B0C820019007A883B069460CC80CC1\n" 
+"0CC80CC10EBC02A8FFF7E9F8C64802A91022D5F7D2FB0A\n" 
+"20019007A883B069460CC80CC10CC80CC10EBC02A8FFF7\n" 
+"D7F8BE4802A91022D5F7C0FBBC4807A91022D5F7BBFBBB\n" 
+"4807A91022D5F7B6FB0BB000BD00BF1FB5B04CE07F0028\n" 
+"02D001280ED01FBD0020A061201D00A91022D5F7A4FB02\n" 
+"202070012084F82000E0771FBD201D00A91022D5F798FB\n" 
+"01202070A069401CA061C72807D10121AB20FFF7EEF800\n" 
+"21AB20FFF7C0F8A069C82809DB0020A0610121AB20FFF7\n" 
+"E1F80021AB20FFF7B3F8012084F820001FBD1FB5934CE0\n" 
+"7F002803D0012084F82000F19403304C850003E000A80F\n" 
+"C800F037F800A80FC800F00AF8607F002805D0206B2928\n" 
+"02DBBDE81F40C9E01FBD1FB5854CE07F012804D002280D\n" 
+"D0042817D01FBD201D00A91022D5F74EFB01202070A069\n" 
+"401CA0611FBD0020A061201D00A91022D5F741FB022020\n" 
+"700120E0771FBD042020700020E077012084F820001FBD\n" 
+"FFB585B07048016B491C016305A883B069460CC80CC10C\n" 
+"C80CC10EBC01A800F025F805A883B069460CC80CC10CC8\n" 
+"0CC10EBC01A800F03BF8694C94E80F00FFF73BF8054662\n" 
+"4E654F97E80F00FFF734F88542304604DA21461022D5F7\n" 
+"05FB03E039461022D5F700FB09B0F0BD0EB430B588B004\n" 
+"46574802900BA882B069460CC80CC10CC80CC10CBCC821\n" 
+"03A800F030F8524D284603A91022D5F7E6FA2046294610\n" 
+"22D5F7E1FA08B030BC5DF810FB0EB430B588B004464848\n" 
+"02900BA882B069460CC80CC10CC80CC10CBC0A2103A800\n" 
+"F00FF8434D284603A91022D5F7C5FA204629461022D5F7\n" 
+"C0FA08B030BC5DF810FB0CB47FB504460D460C9E324608\n" 
+"992846FFF77EFE0090321D09992846FFF778FE019006F1\n" 
+"0C020B992846FFF771FE039006F108020A992846FFF76A\n" 
+"FE0290204600A91022D5F798FA04B070BC5DF80CFB70B5\n" 
+"82B00020ADF80000214C94E80F00FEF758FF401D1C4DFF\n" 
+"2802DDFF20A87700E0A877A0208DF8000000AE686A7070\n" 
+"70782074022300AA72210720DBF711FB002801D1002076\n" 
+"BDA1208DF80000A87F7070022300AA72210720DBF702FB\n" 
+"002801D1002076BD8021A320FEF7BEFF3C21A220FEF7BA\n" 
+"FF03480121817700202863084676BDB45C8800805C8800\n" 
+"4C5D8800385D8800F85C8800185D8800085D8800285D88\n" 
+"00233E445F6C6F6E675F67657374757265203A20256400\n" 
+"0000233E525F6C6F6E675F67657374757265203A202564\n" 
+"0000000120DAF711BF00000749086808B1002070470648\n" 
+"C008C00008600549C908C900091A0160704700BF4C8589\n" 
+"0057AA890050EA8900044B9B689861DA6041F004001874\n" 
+"D2F7AEBE00BF1C27880070B506460024D2F777FC104D68\n" 
+"78401C6870306840B96878401E6870C0B208B9D2F764FC\n" 
+"204670BD3068C068017C490705D5C1682A6A891A0129B8\n" 
+"BF0124D2F7C2FD30680028EFD1E5E700BF1C27880010B5\n" 
+"0446094806F0E9FC0068010018BF8047074806F0E2FC00\n" 
+"68F0F7D9FD2046BDE81040F0F7D4BD00000000C02D8800\n" 
+"C82D880038B50446DFF8E4520020286505206865002028\n" 
+"646864A864E8649FEDB20B85ED040B85ED060B85ED080B\n" 
+"85ED0A0B85ED0C0B85EDF19403C04F85000E0B6866A866\n" 
+"05F16C00A8654FF4B6720021E3F7F8FB0C2200212846E3\n" 
+"F7F3FB94ED020AB1EE401A94ED010AF1EE400A94ED000A\n" 
+"05F1440105F1400006F076FD012032BD2DE9F04D2DED06\n" 
+"8B0E46DFF868720168396090ED010AB1EE400A87ED010A\n" 
+"90ED020AB1EE400A87ED020A1E223946B86D05F07DFE79\n" 
+"6D4A1EB86D3B6D934227DA1E22591C09B205F09BFE10EE\n" 
+"100AE4F721FCC7E90A011E22386D411C09B2B86D05F0AC\n" 
+"FE10EE100AE4F714FCC7E90C011E22386D411C09B2B86D\n" 
+"05F0BDFE10EE100AE4F707FCC7E90E01386D401C72E023\n" 
+"D11E2209B205F073FE10EE100AE4F7F9FBC7E90A011E22\n" 
+"796D09B2B86D05F085FE10EE100AE4F7EDFBC7E90C011E\n" 
+"22796D09B2B86D05F097FE10EE100AE4F7E1FBC7E90E01\n" 
+"786D4DE01E2209B205F03FFEF8651E220021B86D05F039\n" 
+"FE8046C7F86080FC6D2068E4F7CCFB02460B46D7E90A01\n" 
+"F1F704FC82468B46D8F80000E4F7C0FB52465B46F5F73C\n" 
+"FCC7E90A016068E4F7B7FB02460B46D7E90C01F1F7EFFB\n" 
+"82468B46D8F80400E4F7ABFB52465B46F5F727FCC7E90C\n" 
+"01A068E4F7A2FB02460B46D7E90E01F1F7DAFB04460D46\n" 
+"D8F80800E4F796FB22462B46F5F712FCC7E90E01786DE4\n" 
+"F7A3FA41EC180BD7E90A0153EC182BF1F783FC41EC190B\n" 
+"87ED049BD7E90C0153EC182BF1F779FC41EC1A0B87ED08\n" 
+"ABD7E90E0153EC182BF1F76FFC41EC100B87ED060BE4F7\n" 
+"93FB01EE100AB0EE418A51EC1A0BE4F78BFB00EE900AB0\n" 
+"EE481AB0EE608AF0EE418A51EC190BE4F77FFB00EE100A\n" 
+"B0EE681AF0EE480A07F14C0107F1480006F075FC386D40\n" 
+"1C38659FED190B87ED040B87ED080B87ED060B396CB86C\n" 
+"00F017F804467C66796CF86C00F011F8B86604F1280151\n" 
+"2902D22830512802D30120307001E000203070BDEC068B\n" 
+"BDE8F08D421AB52A04DB081A00F5B470424205E012F1B4\n" 
+"0F02DA00F5B470421A1046704700000000000000000000\n" 
+"082E880038B5DFF8004694F82000012801D1002032BD20\n" 
+"4606F061FE204605F0C3FE0020E08306F05DFEDFF8E455\n" 
+"E564002060651422014604F13000E3F787FA20220021DF\n" 
+"F8D805E3F781FA20220021DFF8B005E3F77BFA0020A065\n" 
+"024605E0D42101FB00510A718A71401C0128F7DB012060\n" 
+"6400F011F8DFF89005012180F83D10084606F0AAFD0020\n" 
+"A064207706F0CDFD012084F8200032BD70B401460023DF\n" 
+"F8642511E0D42504EB8304A46805FB040401262671D66D\n" 
+"05FB0300807904EB8000006A3043D0655B1CDFF8400500\n" 
+"EB4114DFF83C052579F1940350538500AB42E4DB294651\n" 
+"77237F1376002903D0DFF834355971D06470BC7047DFF8\n" 
+"10154A6D01EB82031863501C4865052803D3401E486500\n" 
+"207047012070470020DFF8F01402468A654A6D002A0BD0\n" 
+"0B6B8B65521E4A6504E001EB8002536B1363401C0428F8\n" 
+"DB704738B50024DFF8C454287F06F07CFD02E000F03CF8\n" 
+"641C287E8442F9D331BD70B50C460025DFF8A464F17F4A\n" 
+"1CF277332901DB2946F177B17F032915DB016871624168\n" 
+"B1628068F062284606F059FD307F401C3077317EC0B288\n" 
+"4203D328463077FFF7CEFFFFF7B7FFB07F411CB1776528\n" 
+"01DB3220B077B06D002805D0207001250A2801D10A2020\n" 
+"70284670BD2DE9F84300200146DFF83C440BE0D42202FB\n" 
+"01421379002B04D0937902EB8302126A1043491C0129F1\n" 
+"DB06F03FFDDFF80C5406F061FD28650020A865064640E0\n" 
+"D42202FB06F707EB040898F80400002836D0304600F04B\n" 
+"F8D5F8509098F8060008EB8000006AD9F8001008421FD0\n" 
+"98F8060008EB8000406B002806D098F8060008EB800040\n" 
+"6BFFF750FF98F80600401C88F8060098F80510C0B28842\n" 
+"07D3DFF8B403395940F82610002088F80600D9F8400000\n" 
+"2804D0D9F800100843C9F80000761C012EBCDB286D0068\n" 
+"06F017FDA86C411CA964B0F57A7F01D90020A864D648DD\n" 
+"492022BDE8F843D4F7F1BE000070B52DED068BD2490C6D\n" 
+"00222264D422D14B02FB00308279C2EBC20300EB830500\n" 
+"EB8206306A022846D1A86C012843D1286D022808D1606B\n" 
+"032803DAE86D401CE86501E00020E865286D042808D160\n" 
+"6B052803DAE86D401CE86501E00020E865286D082808D1\n" 
+"606B082803DBE86D401CE86501E00020E865286D102808\n" 
+"D1606B102803DBE86D401CE86501E00020E865E86C1422\n" 
+"90FBF2F0EA6D824206DA2068326A90432060306A206405\n" 
+"E00020E8652068326A10432060306A012840F0C48095F8\n" 
+"4800C00740F1BF80E86C420720D591ED0B0AF9EE000AB4\n" 
+"EE600AF1EE10FA0AD540F22310A1699131814204D3E169\n" 
+"9131814280F09E800020E865E86D052880F29C80206831\n" 
+"6A88432060306A20649AE0820710D591ED0B0AB5EE400A\n" 
+"F1EE10FAE9DDA0695A30B528E5D2E0695A30B528C0F07F\n" 
+"80DFE7C006DFD591ED0A9AD1ED09AAD1ED0B9A2AEEAA0A\n" 
+"09EE090A09EEA90A10EE100AE4F706F941EC100BF5F7F6\n" 
+"F951EC100BE4F726F90AEE100A9FED7A8B8AEE8A0A10EE\n" 
+"100AE4F7F4F841EC100B02F0A2F953EC102B51EC180BE4\n" 
+"F718F8E4F710F90AEE900A89EE0A0A10EE100AE4F7E0F8\n" 
+"41EC100B02F08EF9F19403E056850053EC102B51EC180B\n" 
+"E4F704F8E4F7FCF809EE100A89EE8A0A10EE100AE4F7CC\n" 
+"F841EC100B02F07AF953EC102B51EC180BE3F7F0FFE4F7\n" 
+"E8F808EE100A1AEE900AE4F7BAF821F0004100225A4BF1\n" 
+"F70CF8BFF47AAF19EE100AE4F7AEF821F000410022544B\n" 
+"F1F700F8BFF46EAF18EE100AE4F7A2F821F00041012250\n" 
+"4BF1F70CF83FF662AFE86D401CE8655FE70020E8652068\n" 
+"316A08432060BDEC068B70BD000010B43F49CA68002A04\n" 
+"D14FF48062CA600A614A6191ED040AB8EE400AD1ED0A0A\n" 
+"20EE200ADFED3E0A80EE200AD1ED010AF8EE600A30EE20\n" 
+"0ABDEEC00A10EE102A91ED050AB8EE400AD1ED0B0A20EE\n" 
+"200ADFED330A80EE200AD1ED020AF8EE600A30EE200ABD\n" 
+"EEC00A10EE103AB0F9024000EB440491ED030AB8EE400A\n" 
+"D1ED090A20EE200ADFED260A80EE200AD1ED000AF8EE60\n" 
+"0A30EE200ABDEEC00A10EE101AA180B0F9021000EB4101\n" 
+"CA80B0F9021000EB41010B814188491C418009B21E2901\n" 
+"DB1D214180012010BC704710B5002006E0D4210C4A01FB\n" 
+"002100220A71401C0128F6DB064C00206064607706F01C\n" 
+"FB0020E06584F8200010BD0000ACC888002CC88800A024\n" 
+"8800CC23880046DF617EDCA54C40000024408CC8880000\n" 
+"005440C3F51C4110B5594C002020606060A06020620520\n" 
+"60620020A061E061A062E06220636063A063E0636064A0\n" 
+"6404F14C0020644FF4B6720021E2F775FF0C22002104F1\n" 
+"0C00BDE81040E2F76DBF38B50C46464DA96C491CA96400\n" 
+"F018F8002803D0686C401C686401E000206864A86C0F28\n" 
+"0ADA686C0B2803DB01202070022032BD00202070012032\n" 
+"BD032032BD70B505460026364C94ED000AB5EE400AF1EE\n" 
+"10FA15D1D4ED010AF5EE400AF1EE10FA0ED1D4ED020AF5\n" 
+"EE400AF1EE10FA07D12868206068686060A868A0603046\n" 
+"70BDD5ED000A30EEC00AD5ED010A94ED011A70EEC10A95\n" 
+"ED021AD4ED021A31EE611AB5EE400AF1EE10FA01DAB1EE\n" 
+"400AF5EE001AB4EE610AF1EE10FA1BD5F5EE400AF1EE10\n" 
+"FA01DAF1EE600AB5EE000AF4EE400AF1EE10FA0DD5B5EE\n" 
+"401AF1EE10FA01DAB1EE411AB4EE401AF1EE10FA01D501\n" 
+"2603E00FF22C00DAF7E7FC2868206068686060A868A060\n" 
+"304670BD044800210160416081604164816470470000D8\n" 
+"5E88002323204756206661696C000010B500F032FB00F0\n" 
+"98FB00240DE020469FED151ADFED140A9FED130A00F0B4\n" 
+"FE2146052000F0BDFE641C1E2CEFDBDFF8540D00210170\n" 
+"016341638163C163016441648164052141710A21017100\n" 
+"2141708170C162F19403705A85000A2181710021C17010\n" 
+"BDDFF8241DC87070470000000000002DE9F0472DED048B\n" 
+"B0EE408AF0EE608AB0EE419ADFF8244DE078012801D100\n" 
+"2500E0052526781E2E09DA304600F076FE3146284600F0\n" 
+"7FFE701C207027E0002616E0DFF8FC1C01EB8602304692\n" 
+"ED3D1AD2ED1F0A01EB860191ED010A00F05EFE3146DFF8\n" 
+"E00C3018407800F064FE761C1D2EE6DB1D20B0EE491AF0\n" 
+"EE680AB0EE480A00F04BFE1D21284600F054FEDFF8B89C\n" 
+"032D08DA606B401C606348450BD3DFF8A80C606307E020\n" 
+"6B401C2063484502D3DFF8980C206300F0B2FDB0EE408A\n" 
+"00F076FDF0EE408A00F010FBD4F830809FEDA09B4046E3\n" 
+"F7BBFD53EC192BE3F7C5FDF0F7BDFE0646E76B3846E3F7\n" 
+"B0FD53EC192BE3F7BAFDF0F7B2FE824620790A2802D014\n" 
+"2846D05CE09FED940AB4EE408AF1EE10FA0CD5F4EE408A\n" 
+"F1EE10FA07D5032D05DA14202071780800F0F0FB48E078\n" 
+"1CE063484502D3DFF8100CE063042D3FDB00F064FAE06A\n" 
+"01283AD1B6F57A7F37D994ED090AB5EE400AF1EE10FA01\n" 
+"DCB1EE400ADFED7E0AB4EE600AF1EE10FA0DDA94ED0A0A\n" 
+"B5EE400AF1EE10FA01DCB1EE400AB4EE600AF1EE10FA19\n" 
+"DB0020E06216E09FED710AB4EE408AF1EE10FA04DAF4EE\n" 
+"408AF1EE10FA02DB0A20207107E0A06B401CA063484502\n" 
+"D3DFF88C0BA06300206070607902280AD0C0F05B810428\n" 
+"1BD074D3062800F00381C0F0E68051E1032D0FDA606B01\n" 
+"2802D12079A07149E10A2840F047810420607100F0F5FB\n" 
+"002020633FE1002060633CE1E06A012832D1207900F049\n" 
+"F901282DD140F2E930864201D2002E22D1824502D2BAF1\n" 
+"000F1DD194ED090AB5EE400AF1EE10FA01DCB1EE400ADF\n" 
+"ED460AB4EE600AF1EE10FA10D594ED0A0AB5EE400AF1EE\n" 
+"10FA01DCB1EE400AB4EE600AF1EE10FA02D5A078607001\n" 
+"E00020E062E06A002814D1B6F5C87F01D8002E08D1A078\n" 
+"002808D0BAF1FB0F05D2BAF1000F02D0A078607003E020\n" 
+"7900F046F96070032060716078A070002020636063A063\n" 
+"E06300F01DFBE2E0042D17DBB8F1010F02D100F0FFF9DA\n" 
+"E0B8F1060FC0F0D7800021404600F0D3FAA078032802D1\n" 
+"0020E06262E000F0D9FCE0625EE00020206320790A2853\n" 
+"D1E06B0A28C0F0C080002100F0BDFAA07800F0C8FCE062\n" 
+"94ED130AB5EE400AF1EE10FA02DDF0EE400A01E0F1EE40\n" 
+"0A9FEDB71AF4EE410AF1EE10FAC0F2A580D4ED140AF5EE\n" 
+"400AF1EE10FA0BDDF0EE601A0AE000BF00000000000034\n" 
+"409A99193F00002042F1EE601AF4EE411AF1EE10FAC0F2\n" 
+"8A80F5EE400AF19403005E8500F1EE10FA01DCF1EE600A\n" 
+"B5EE400AF1EE10FA01DCB1EE400AF4EE400AF1EE10FA76\n" 
+"D50520607100F096F90020A0636FE00020E0636CE0B8F1\n" 
+"060F04D3022060710020606364E0A06B012805D1E06B00\n" 
+"F0A3FA2079A0715BE0052859D3606B052856D306206071\n" 
+"0020206351E0207914284ED1E06A01282DD140F2E93086\n" 
+"4201D2002E22D1824502D2BAF1000F1DD194ED090AB5EE\n" 
+"400AF1EE10FA01DCB1EE400ADFEDB20AB4EE600AF1EE10\n" 
+"FA10D594ED0A0AB5EE400AF1EE10FA01DCB1EE400AB4EE\n" 
+"600AF1EE10FA02D5A078607001E00020E062E06A002811\n" 
+"D140F29110864201D2002E04D1824505D2BAF1000F02D0\n" 
+"A078607003E0A07900F060F86070032060716078A07000\n" 
+"2020636063E063A0636078012801D1012008E0022801D1\n" 
+"022004E0032801D1032000E00020BDEC048BBDE8F08780\n" 
+"B52DED048B00210A2808D1DFF85C0890ED100A90ED118A\n" 
+"D0ED128A11E0142808D1DFF8480890ED150A90ED168AD0\n" 
+"ED178A06E09FED810A9FED808ADFED7F8A032103291CDA\n" 
+"9FEDD59A00F035FCB4EE490AF1EE10FA11D5B0EE480A00\n" 
+"F02CFCB4EE490AF1EE10FA08D5B0EE680A00F023FCB4EE\n" 
+"490AF1EE10FA01D4012000E00020BDEC048B02BD00210A\n" 
+"280AD1DFF8DC07D0ED100A90ED111AD0ED121A9FED670A\n" 
+"13E014280AD1DFF8C007D0ED150A90ED161AD0ED171A9F\n" 
+"EDC50A06E0DFED5F0A9FED5E1ADFED5D1A032103293EDA\n" 
+"B4EE600AF1EE10FA0BD59FEDBE2AB4EE421AF1EE10FA04\n" 
+"D5F4EE421AF1EE10FA2AD4B4EE600AF1EE10FA0BD59FED\n" 
+"B62AB4EE421AF1EE10FA04DBF4EE421AF1EE10FA0BDAB4\n" 
+"EE600AF1EE10FA08D59FEDCF1AF4EE411AF1EE10FA01DB\n" 
+"01210EE0B4EE600AF1EE10FA08D59FEDC90AF4EE401AF1\n" 
+"EE10FA01D5022100E0032108467047DFF8180700218160\n" 
+"C160016170470100C03F10B52DED068BDFF8004794ED05\n" 
+"0AB5EE400AF1EE10FA13D194ED060AB5EE400AF1EE10FA\n" 
+"0CD194ED070AB5EE400AF1EE10FA05D1A0686061E068A0\n" 
+"612069E06194ED028A94ED050A38EE400A00F0F6F8F0EE\n" 
+"408A94ED039A94ED060A39EE400A00F0ECF8F0EE409A94\n" 
+"ED04AA94ED070A3AEE400A00F0E2F8F0EE40AA94ED080A\n" 
+"30EE280A00F0DAF884ED080A94ED090A30EE290A00F0D2\n" 
+"F884ED090A94ED0A0A30EE2A0A00F0CAF884ED0A0A84ED\n" 
+"058A84ED069A84ED07AABDEC068B10BDDFF84806002101\n" 
+"624162816241618161C161704700000000204200000000\n" 
+"F8B52DED048B84B01D2100A800F000FB9DED000AB5EE40\n" 
+"0AF1EE10FAF194039061850001DCB1EE400ADFEDAF0AB4\n" 
+"EE600AF1EE10FA01D50020009000AE96ED010AB5EE400A\n" 
+"F1EE10FA01DCB1EE400AB4EE600AF1EE10FA01D5002070\n" 
+"6096ED020AB5EE400AF1EE10FA01DCB1EE400AB4EE600A\n" 
+"F1EE10FA01D50020B0609FED9B8B9FED9C9BDFF8D075B8\n" 
+"68E3F74EFB04460D460098E3F749FB53EC192BE3F773FA\n" 
+"0022DFF8D435F0F73EFC53EC182BE3F76AFA22462B46F4\n" 
+"F7B8FBE3F75EFB00EE100A87ED020A00F04EF887ED020A\n" 
+"F868E3F72BFB04460D467068E3F726FB53EC192BE3F750\n" 
+"FA0022DFF89035F0F71BFC53EC182BE3F747FA22462B46\n" 
+"F4F795FBE3F73BFB00EE100A87ED030A00F02BF887ED03\n" 
+"0A3869E3F708FB04460D46B068E3F703FB53EC192BE3F7\n" 
+"2DFA0022DFF84835F0F7F8FB53EC182BE3F724FA22462B\n" 
+"46F4F772FBE3F718FB00EE100A87ED040A00F008F887ED\n" 
+"040A04B0BDEC048BF1BD9A99993EDFED640AB4EE600AF1\n" 
+"EE10FA04DBDFED620A30EE200A7047DFED600AB4EE600A\n" 
+"F1EE10FA03D5DFEDCD0A30EE200A70479A9999BECCCCCC\n" 
+"BDCDCCCC3D10B49FEDC80ADFEDC70A1F2801D31E2000E0\n" 
+"C0B20022DFF8A0440EE0C2F11D03DBB204EB830393ED1E\n" 
+"1A30EE010A93ED3C1A70EE810A521CD2B2824209DA0029\n" 
+"02D1C2F11D03EBE70129E7D1C2F11803E6E701EE100AB8\n" 
+"EE411ADFF8580480EE010A80ED130A80EE810A80ED140A\n" 
+"10BC7047DFF84004002141658165C1657047CDCCCC3ECC\n" 
+"CCCCBE30B49FEDA60ADFEDA50A9FEDA41A1F2801D31D20\n" 
+"01E0401EC0B200210DE030EE210A02EB8302D2ED1E1A70\n" 
+"EEA10AD2ED3C1A31EE211A491C89B2DFF8CC4381422ADA\n" 
+"22781E2A03DA521A531EDBB202E0C1F11D03DBB2DFF8D8\n" 
+"2352F8235001EE905A02EB830555F8045C02EE105A71EE\n" 
+"C22A9FEDC73AF4EE432AF1EE10FACEDBF5EE401AF1EE10\n" 
+"FAC9DDB5EE402AF1EE10FAC4D50B29C2DB01EE901AF8EE\n" 
+"611A80EE210A84ED150A80EEA10A84ED160A81EE210A84\n" 
+"ED170A30BC70470BD7233DF8C1631ADCA54C4000000000\n" 
+"00003440010034430000B4C3000034C3F0B4DFEDC92AB0\n" 
+"EE620AB0EE622ADFED6C0A9FED6B1ADFED6A1ACD480178\n" 
+"1E2900DB1E21026B914204D201EBD1725210D2B201E052\n" 
+"08D2B200230DE0B1EE633AB4EE443AF1EE10FA05DB71EE\n" 
+"A31AB7EE003A32EE032A5B1CDBB2934280F29F80CC1A64\n" 
+"1EE4B225466E1EF6B2B94D55F8267003EE107A05EB8407\n" 
+"D7ED003A05EB860797ED004A73EEC43AF5EE403AF1EE10\n" 
+"FA05EB8407D7ED003A02DD33EEC33A01E033EE633A05EB\n" 
+"8606D6EDF19403206585001E3A97ED1E4AD6ED1E4A34EE\n" 
+"644AB5EE404AF1EE10FA97ED1E4A02DD74EE633A01E073\n" 
+"EEC43A06F1780C9CED1E4A07F17806D6ED1E4A9CED1E5A\n" 
+"74EEC54AF5EE404AF1EE10FAD6ED1E4A02DD34EEC44A01\n" 
+"E034EE644ADFED984AB4EE643AF1EE10FA09DBF4EE643A\n" 
+"F1EE10FA04DBB4EE644AF1EE10FA3CDA55F8244003EE10\n" 
+"4AB5EE403AF1EE10FA02DDF0EE433A01E0F1EE433A9FED\n" 
+"894AF4EE443AF1EE10FA05DB70EE830AB7EE003A30EE03\n" 
+"0A97ED1E3AB5EE403AF1EE10FA02DDF0EE433A01E0F1EE\n" 
+"433AF4EE443AF1EE10FA05DB31EE031AB7EE003A72EE83\n" 
+"2AD6ED1E3AF5EE403AF1EE10FA7FF752AFB0EE633A50E7\n" 
+"80EE800A80ED100A81EE220A80ED110A81EE820A80ED12\n" 
+"0AF0BC704700000000B4430000000010B52DED028B9FED\n" 
+"688A002426E0C4F11D00C0B25E4901EB800202F1780393\n" 
+"ED1E0AD2ED1E0A51F8200001EE100A21EE011A00EEA01A\n" 
+"00EE001A11EE100AE3F70FF941EC100BF4F7FFF951EC10\n" 
+"0BE3F72FF900EE100A38EE008A641C062CD6DBB1EE080A\n" 
+"88EE000ABDEC028B10BD000010B52DED028B9FED4C8ADF\n" 
+"ED4B8A002428E0C4F11D00C0B2414901EB800202F17803\n" 
+"93ED1E0AD2ED1E0A51F8200001EE100A21EE011A00EEA0\n" 
+"1A00EE001A11EE100AE3F7D5F841EC100BF4F7C5F951EC\n" 
+"100BE3F7F5F800EE100A38EE008A40EE008A641C062CD4\n" 
+"DBB1EE080AC8EE000A88EE800A00EEE00ABDEC028B10BD\n" 
+"00009A99993E0121022812D19FED2C0A2348D0ED130AF4\n" 
+"EE400AF1EE10FA1CDBD0ED140AF4EE400AF1EE10FA15DB\n" 
+"002113E0012811D1194890ED130AFEEE000AB4EE600AF1\n" 
+"EE10FA07D590ED140AB4EE600AF1EE10FA00D500210846\n" 
+"7047104A52F82130036002EB81018A6F4260D1F8F01081\n" 
+"607047BD3786355CC38800C0B2084901EB800282ED000A\n" 
+"01EB8000C0ED1E0A80ED3C1A7047034A885470475CC388\n" 
+"00BCC3880024C5880041420F0040420F000100A040CDCC\n" 
+"4C3D000000000100003F00408F40B5EE400AF1EE10FA03\n" 
+"D5FFEE000A20EE200A7047704780B506F0E1F880B201F0\n" 
+"C9FF01BD10B504001000C9B2C0B201F073FFFA2C06D0B4\n" 
+"F5FA7F07D0B4F57A7F08D00BE0002001F09DFF0AE00120\n" 
+"01F099FF06E0022001F095FF02E0032001F091FF10BD80\n" 
+"B54FF4804102280AD0042808D0082806D0102804D05FF0\n" 
+"804090FBF1F105E05FF0005292FBF1F101FB00F1882001\n" 
+"F02EFB002002BD80B5B0F5FA6F0DD0B0F57A7F0AD0B0F5\n" 
+"FA7F07D0FA2805D05FF07A71882001F051F906E04FF400\n" 
+"4101FBF19403B068850000F1882001F049F9002002BD10\n" 
+"B508000024DFF8901306F0F9F9002802D02024200086E0\n" 
+"06F015FA0400DFF87C030021016006F03AFF00280BD006\n" 
+"F036FF9923DFF86823DFF86813FFF782FF06F02DFF6FE0\n" 
+"07F0E0FC00280BD007F0DCFC9A23DFF84823DFF84813FF\n" 
+"F772FF07F0D3FC5FE007F035FF00280BD007F031FF9B23\n" 
+"DFF82823DFF82813FFF762FF07F028FF4FE008F0F0FC00\n" 
+"280BD008F0ECFCA023DFF80823DFF80813FFF752FF08F0\n" 
+"E3FC3FE008F0E5FF00280BD008F0E1FFA123DFF8E822DF\n" 
+"F8E812FFF742FF08F0D8FF2FE00AF069F800280BD00AF0\n" 
+"65F8A223DFF8C822DFF8C812FFF732FF0AF05CF81FE00A\n" 
+"F00CFB00280BD00AF008FBA723DFF8A822DFF8A812FFF7\n" 
+"22FF0AF0FFFA0FE00220FFF744FF4FF4FA60FFF75BFF5F\n" 
+"F00071882001F087FA06F0C5F90400200010BD00B52DED\n" 
+"028B81B008EE100A01F0B9FEF8EEC80A20EE800ADFED41\n" 
+"0A20EE200ABDEEC00A10EE100A01F0A2F8002001B0BDEC\n" 
+"028B00BD000000B52DED028B81B008EE100A01F09DFEF8\n" 
+"EEC80A20EE800ADFED330A20EE200ABDEEC00A10EE100A\n" 
+"01F097F8002001B0BDEC028B00BD000000B52DED028B81\n" 
+"B008EE100A01F081FEF8EEC80A20EE800ADFED250A20EE\n" 
+"200ABDEEC00A10EE100A01F0CBF9002001B0BDEC028B00\n" 
+"BD000000B52DED028B81B008EE100A01F065FEF8EEC80A\n" 
+"20EE800ADFED170A20EE200ABDEEC00A10EE100A01F04E\n" 
+"F801F055FEF8EEC80A20EE800ADFED0F0A20EE200ABDEE\n" 
+"C00A10EE100A01F04FF801F045FEF8EEC80A20EE800ADF\n" 
+"ED070A20EE200ABDEEC00A10EE100A01F08FF9002001B0\n" 
+"BDEC028B00BD00000024744980B54FF47A720023D1F710\n" 
+"FC01F06CF9002002BD2DE9FE4F8B4616009A460E9F5FF0\n" 
+"00085FF00009DDE90C45002807D022002B0001F0EEFA00\n" 
+"2801D15FF00109BBF1000F09D022002B000021584601F0\n" 
+"96FA002801D15FF00109002E21D096ED000ABEEEED0A8D\n" 
+"ED000A96ED010ABEEEED0A8DED010A96ED020ABEEEED0A\n" 
+"8DED020A22002B0057F0200100A801F0E7FA002802D15F\n" 
+"F0010903E05FF020085FF00009BAF1000F0FD022002B00\n" 
+"4FF4A041504601F066FB002802D15FF0010903E05FF020\n" 
+"085FF00009B9F1000F02D001F045FC80464046BDE8FE8F\n" 
+"30B585B004000A0000A9200007F024FC05001022210001\n" 
+"A8DDF7F9FE029830F00100029003980390102201A92000\n" 
+"DDF7EEFE280005B030BD30B585B004000A0000A9200007\n" 
+"F0B9FB05001022210001A8DDF7DDFE029830F001000290\n" 
+"0398F19403406C85000390102201A92000DDF7D2FE2800\n" 
+"05B030BD0000606186005CE78800146186002C61860080\n" 
+"B501F09FFB002002BD80B501F086FB002002BD80B501F0\n" 
+"8DFB002002BD000010B5DFF860494FF4FA7200212046E1\n" 
+"F798FDDFF88409C4F8D80110BD2DE9F8432DED028BB0EE\n" 
+"408ADFF83849B4F8D2114118A4F8D21104F2D2156A8880\n" 
+"1868802879192803DA401C287184ED768A9FED9A0AB4EE\n" 
+"408AF1EE10FAC0F2E880D4ED760AF4EE400AF1EE10FAC0\n" 
+"F2E08028791928C0F2DC8089B2C329C0F2D88004F58C76\n" 
+"307C04EB800080ED148A84ED768A04F5EC77707C002804\n" 
+"D187ED018A87ED028A3BE097ED010ADFED840A20EE200A\n" 
+"10EE100AE2F7AEFD8046894618EE100AE2F7A8FD0022DF\n" 
+"F8A038E2F7D1FC42464B46F3F71FFEE2F7C5FD08EE100A\n" 
+"87ED018A97ED020ADFEDBC0A20EE200A10EE100AE2F78F\n" 
+"FD8046894618EE100AE2F789FD4FF00042DFF89438E2F7\n" 
+"B1FC42464B46F3F7FFFDE2F7A5FDB8606888B0F57A7F1A\n" 
+"DD94F87C0104EB8000B968C0F82C1194F87C01401C84F8\n" 
+"7C01C0B2142802D1002084F87C0104F5BE704178142901\n" 
+"DA491C417000206880327C1046717C14291DD1431C142B\n" 
+"00D1002304EB830394ED460AD3ED140A30EE600A84ED46\n" 
+"0A93ED140AD6ED010A40EE400AC6ED010A96ED020AD3ED\n" 
+"320A30EE600A86ED020A04EB800094ED460AD0ED140A30\n" 
+"EE200A84ED460A90ED140AD6ED010A40EE000AC6ED010A\n" 
+"04F1500000F060FA307C04EB800080ED320AD6ED020A30\n" 
+"EE800A86ED020A307CB96844F82010307C04EB4000B4F8\n" 
+"D211A0F8A010707C142801DA401C7074707C00EE100AB8\n" 
+"EE400AD6ED020A80EE800A86ED030A307C401C3074C0B2\n" 
+"142801D1002030740020A4F8D201BDEC028BBDE8F18380\n" 
+"B5DFF8280790F87C114A1E00D51432891F00D5143100EB\n" 
+"820292ED4B0A00EB8100D0ED4B0A30EE600A10EE100AE2\n" 
+"F7D6FC21F00041E2F7FAFC00EE100A01BD80B5DFF8E806\n" 
+"90F87C114A1E00D51432891F00D5143100EB820292ED32\n" 
+"0A00EB8100D0ED320A30EE600A10EE100AE2F7B6FC21F0\n" 
+"0041E2F7DAFC00EE100A01BD00000100FA436666663F2D\n" 
+"E9F8432DED068B044600259FED438A042C04D1DFED428A\n" 
+"9FED429A03E0DFED428A9FED429ADFF87C6606F5927778\n" 
+"7914286AD196F87D01072866DBFFF79BFFF0EE409AFFF7\n" 
+"B7FFB0EE40AAF4EE698AF1EE10FA2ED5D6F82401E2F77B\n" 
+"FC21F0004102460B469046994619EE100AE2F771FC4246\n" 
+"4B46EFF7C5FB1BD2D6F82401E2F768FC21F00041DFF820\n" 
+"26F19403D06F8500DFF82036EFF7B8FB0ED29FED260AB4\n" 
+"EE40AAF1EE10FA07D5224679793879401E00F0EEF90546\n" 
+"04E02846C6F8E401C6F8E801022D23D13879411E00D514\n" 
+"317A79801A00D5143006EB810191ED000A06EB8000D0ED\n" 
+"000A30EE600AFFEE000A20EE200A10EE100AE2F72FFCDF\n" 
+"F8BC25DFF8CC35EFF727FDE2F74FFC08EE100AB0EE480A\n" 
+"BDEC068BBDE8F1830000CDCC4C3F00000000CDCC4C3EA6\n" 
+"9B443BCDCC4C3D6F12033B0BD7A33C2DE9F0472DED088B\n" 
+"82B0B0EE409A8246894600242546DFEDCC8A9FEDCB8ADF\n" 
+"EDCA9A5FFA8AFABAF1040F04D19FED98AADFED98AA03E0\n" 
+"9FEDC5AADFEDC5AADFF8306506F5927898F80500142840\n" 
+"F0198196F87D010728C0F21481B5EE409AF1EE10FA40F3\n" 
+"0E81FFF7ECFEB0EE40BAFFF708FFF0EE40BA06F5E877B4\n" 
+"EE4BAAF1EE10FA3CD5D6F82401E2F7CAFB21F000410246\n" 
+"0B46CDE900231AEE900AE2F7C0FBDDE90023EFF714FB29\n" 
+"D2D6F82401E2F7B7FB21F00041DFF8C024DFF8C034EFF7\n" 
+"07FB1CD29FEDA30AF4EE40BAF1EE10FA15D597ED050AB5\n" 
+"EE400AF1EE10FA01D1224602E0B869A9EB0002534698F8\n" 
+"051098F80400401E00F0ADF9044602E020467861B86100\n" 
+"2C00F0B58097ED050AB5EE400AF1EE10FA04D1C7F81890\n" 
+"4FF07E507861284606E006EB4101B1F8A0104D19ADB240\n" 
+"1C80B201461429F4DB2846E2F78FFADFF84024DFF84034\n" 
+"E2F797FAE2F78FFB09EE900A19EE100AE2F761FBDFF82C\n" 
+"24DFF82C34E2F789FAE2F781FB00EE100A29EE809A98F8\n" 
+"0400411E00D5143198F80520801A00D5143006EB810191\n" 
+"ED000A06EB8000D0ED000A30EE600AFFEE000A20EE200A\n" 
+"10EE100AE2F739FBDFF8D023DFF8E033EFF731FCE2F759\n" 
+"FB09EE900AF4EE499AF1EE10FA02DBDFED5E9A11E029EE\n" 
+"090A09EEE90A10EE100AE2F71FFB41EC100BF3F70FFC51\n" 
+"EC100BE2F73FFB08EE900A96F8D00106EB800089EEA80A\n" 
+"80ED600A96F8D001401C86F8D001C0B2142802D1002086\n" 
+"F8D0017878142801DA401C7870002006E006EB800191ED\n" 
+"600A38EE008A401C79780A4680B29042F3D3B2EE040A28\n" 
+"EE000A00EE901AF8EE600A80EE200A10EE100AE2F7E1FA\n" 
+"DFF83823DFF83833E2F709FAE2F701FB09EE900A03E028\n" 
+"4686F8D0017870B0EE690A01E09FED310A02B0BDEC088B\n" 
+"BDE8F087CDCC4C3EA69B443B38B52DED048B9FED2A8A9F\n" 
+"ED290ADFED280ADFED278A00231AE0142C00DB143C01EE\n" 
+"103AB8EEC11A31EE088A50F8244001EE904A30EE210A41\n" 
+"EE210A13FB03F401EE104AB8EEC11A71EE288A5B1CDBB2\n" 
+"F19403607385000C46A34205DA141B1C19641CDDD51434\n" 
+"DEE701EE101AB8EE419A69EE200A48EE400A10EE900AE2\n" 
+"F787FA04460D4629EE280A08EE480A10EE100AE2F77DFA\n" 
+"9E4AA04BF3F7F9FA02460B4620462946EFF771FBE2F799\n" 
+"FA00EE100ABDEC048B31BD00000000CDCC4C3D6F12033B\n" 
+"0BD7A33C2DE9F8432DED088B044689464FF00008002C01\n" 
+"D5143402E0142C00DB143C45462E46042A04D19FED788A\n" 
+"DFED788A03E09FED778ADFED778A2F460CE0B4EE498AF1\n" 
+"EE10FA06D5B4EE689AF1EE10FA01D5761CB6B27F1C4846\n" 
+"FFB23946421E91423EDA201A0818401C01D5143002E014\n" 
+"2800DB1438411C142900DB1439664A02EB810191ED000A\n" 
+"02EB8000D0ED000A30EE609A19EE100AE2F717FA41EC1A\n" 
+"0B9FED6EBB18EE100AE2F70FFA53EC1B2BE2F739F90246\n" 
+"0B4651EC1A0BEFF75DF9BDD218EE900AE2F700FA53EC1B\n" 
+"2BE2F72AF953EC1A2BEFF750F9B0D26D1CADB2B9E70B2E\n" 
+"02DB4FF0010803E00B2D01DB4FF002084046BDEC088BBD\n" 
+"E8F2832DE9F0472DED088B04468A4691464FF00008002C\n" 
+"01D5143402E0142C00DB143C45462E46042B04D19FED38\n" 
+"8ADFED388A03E09FED388ADFED388A2F460CE0B4EE498A\n" 
+"F1EE10FA06D5B4EE689AF1EE10FA01D5761CB6B27F1C50\n" 
+"46FFB23946421E91423EDA201A0818401C01D5143002E0\n" 
+"142800DB1438411C142900DB1439274A02EB810191ED00\n" 
+"0A02EB8000D0ED000A30EE609A19EE100AE2F798F941EC\n" 
+"1A0B9FED2EBB18EE100AE2F790F953EC1B2BE2F7BAF802\n" 
+"460B4651EC1A0BEFF7DEF8BDD218EE900AE2F781F953EC\n" 
+"1B2BE2F7ABF853EC1A2BEFF7D1F8B0D26D1CADB2B9E7B9\n" 
+"F1070F01D20C2000E00A20B04202D24FF0010803E0A842\n" 
+"01D24FF002084046BDEC088BBDE8F08700006F12033B8F\n" 
+"C2F53C6F12833A8FC2753CB46488009A99B93F7B14AE47\n" 
+"E17A843FB81E85EBFCA9F1D24D62503F0492B06F271191\n" 
+"3F51B8BE3F9A9999999999B93F8DEDB5A000407E449999\n" 
+"C93FF7C6B03E000000000000F0BF1FB509F0FFFC212101\n" 
+"601FBD91ED000A03884069F0EE000A20EE200AD1ED010A\n" 
+"B0EE001A60EE810A30EE201AF6EE001A21EE211A82ED00\n" 
+"1A30EE600A121DF6EE000A5B1E20EE200A82ED000A01EB\n" 
+"C30C0830121D11F10801DCED001A91ED002A90ED003A00\n" 
+"1D31EEC20A9CED011AD1ED012AD0ED003A72EE211A71EE\n" 
+"220A43EE001A43EEA01AB6EE002A61EE821A32EEC11AC2\n" 
+"ED001A03EE801A121D03EE601AB6EE000A21EE000A82ED\n" 
+"000A001D121D0831ACF1080C5B1ECED17047038891EDF1\n" 
+"9403F0768500000AD1ED010A406930EE201AF6EE001A21\n" 
+"EE211A82ED001A30EE600A121DF6EE000A5B1E20EE200A\n" 
+"82ED000A01EBC30C0830121D083183B3DCED001A91ED00\n" 
+"0A90ED002A001D30EE613A9CED011AD1ED010AD0ED002A\n" 
+"30EE210A70EE813A02EE430A02EEE30AF6EE001A20EE21\n" 
+"0A82ED000A30EEC10A02EE830A121D02EE630AF6EE000A\n" 
+"20EE200A82ED000A001D121D0831ACF1080C5B1ECED170\n" 
+"47F0B5044681B0208A40080D4616461F4620805FB12046\n" 
+"FFF7A3FF3A463146204601B0BDE8F040012309F01EBF01\n" 
+"230022204609F019FF32462946204601B0BDE8F04035E7\n" 
+"F0B5144681B007460E46A5085DD0381D97ED000AD0ED00\n" 
+"0A20EE000A00EEA00A071DB5EE400AF1EE10FA04DD09F0\n" 
+"C2FF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"ABFF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"94FF86ED000A01E000203060381D97ED000AD0ED000A20\n" 
+"EE000A00EEA00A361D071DB5EE400AF1EE10FA04DD09F0\n" 
+"7DFF86ED000A01E000203060361D6D1EA1D114F0030F1A\n" 
+"D004F00304381D97ED000AD0ED000A20EE000A00EEA00A\n" 
+"071DB5EE400AF1EE10FA04DD09F05FFF86ED000A01E000\n" 
+"203060361D641EE6D101B0F0BD0000D0B52DED048B82B0\n" 
+"41EC180B8DED008BDDE90023C3F30A5140F2FF72914213\n" 
+"D0002904BF190350EA113011D051EC180B00220023EEF7\n" 
+"1AFF3DBF81F0004141EC180B0824002407E0190350EA11\n" 
+"30EDD002B051EC180B60E051EC180B274A284BEEF704FF\n" 
+"1CD29FED239B51EC190B53EC182BEEF7E1FF06460F4653\n" 
+"EC182B51EC190BF3F71BF832463B46E1F7C5FEF3F791F8\n" 
+"41EC100B51EC180B53EC102B1EE00122184BEEF7E2FE2E\n" 
+"D29FED129B51EC190B53EC182BEEF7BFFF06460F4653EC\n" 
+"182B51EC190BF2F7F9FF32463B46E1F7A3FEF3F76FF884\n" 
+"F0020453EC182BEFF76BF802B02246BDEC048BBDE8D040\n" 
+"09F0E9BE00BF000000000000F03FCE3B7F669EA0E63F00\n" 
+"00F03F09F026FB2121016002B04FF0FF306FF00041BDEC\n" 
+"048BD0BD80B551EC100BFFF76BFF41EC100B01BD10B5DF\n" 
+"F860494822014604F55770DCF7E9FFD4F89803606304F5\n" 
+"6670416804F1340211658068C4F8D400032902D101200A\n" 
+"F071F9D4F8D400032802D101200AF06EF9002010BD80B5\n" 
+"4822DFF81C19DCF7C9FF002002BD80B50C220146DFF810\n" 
+"09DCF7C0FF002002BD80B50C22DFF80019DCF7B8FFF194\n" 
+"03807A8500002002BD80B50C220146DFF80009DCF7AFFF\n" 
+"002002BD80B50C22DFF8F018DCF7A7FF002002BD10B5DF\n" 
+"F8C4484FF4B072002104F51A70E0F786FE4FF41A720021\n" 
+"2046E0F780FE8820C4F8400100F0F0FD4DF295034822DF\n" 
+"F8B818DFF8B8080AF0A4F904464CF251330C22DFF8B818\n" 
+"DFF8C4080AF09AF904434CF252330C22DFF8B818DFF8B8\n" 
+"080AF090F9204310BDDFF86808406F70470023002A01D1\n" 
+"4FF48032426201F00302032A00D1012301F01802182A00\n" 
+"D1012301F0C002C02A00D10123002B00D0882101607047\n" 
+"0A460146DFF82808E0E7DFF8181888624FF47A7290FBF2\n" 
+"F2CA628A6C002A04D1DFF8F42892FBF0F088647047DFF8\n" 
+"F817886778314FF47A7290FBF2F24A600A6A002A04D1DF\n" 
+"F8D02892FBF0F008627047002809D4002905D4814201DB\n" 
+"002070470120704700207047002901D401207047884201\n" 
+"DB0020704701207047F0B40A460021002805D002282DD0\n" 
+"16D3032840D054E0DFF89807D0E95645C2E9004590F8C0\n" 
+"23D20648D5D0E95823D0E95645AB4201D1A24240D00121\n" 
+"3EE0DFF87007D0E90E45C2E9004590F8C023920734D500\n" 
+"F13802D2E90245D0E90E239D4201D194422AD0012128E0\n" 
+"DFF8440700F13803D3E91445C2E9004590F8C003C0071C\n" 
+"D5D3E91645D3E91467BD4201D1B44214D0012112E0DFF8\n" 
+"1807D0E93645C2E9004590F8C023520708D5D0E93823D0\n" 
+"E93645AB4201D1A24200D00121084602E00846C2E90001\n" 
+"F0BC7047FEB50C460021DFF8E02692F8C033DB0617D5D2\n" 
+"F8543103F41063B3F5106F10D1D2E95667C4E9006702F5\n" 
+"AC70D0E90245D2E95667BD4201D1B44200D001210846FE\n" 
+"BDD2F8D010C9053ED502F5AC710969411A0091D2F8C810\n" 
+"411A00AD6960D2F8543103F4A066B6F5A06F09D10098FF\n" 
+"F74CFF0746214607EB4700FFF75CFFFEBD02F12807BE6D\n" 
+"F6051ED53E6D861BAE6003F48853B3F5885F13D10098FF\n" 
+"F735FF0746314655F82700FFF72FFF012800D10227012F\n" 
+"00DB7F1C21463846FFF73BFFFEBDBB68DB0501D40020FE\n" 
+"BD926A801A0090FFF71AFF0746314655F82700FFF714FF\n" 
+"012800D102272146781CFFF723FFFEBD38B50C46DFF8F0\n" 
+"25D2F8543103F4A061B1F5A06F04D121460020BDE83440\n" 
+"11E702F12805A96DC90501D4002032BD296D411A03F488\n" 
+"53B3F5885F09D1D2F86821801AFFF7E9FE21464000BDE8\n" 
+"3440F9E6AB68DB0501D4002032BD926A801AFFF7DBFE21\n" 
+"464000401CBDE83440EAE6DFF87C15C1F8C800C8314FF4\n" 
+"7A7290FBF2F24A600A6A002A04D1DFF8542692FBF19403\n" 
+"107E8500F0F008627047DFF86015C1F868014FF47A7290\n" 
+"FBF2F0C1F86C017047DFF84805D0F8D000001200F00100\n" 
+"7047DFF83805006B001200F001007047DFF82C05D0F880\n" 
+"00001200F00100704730B400200146DFF8142502F13003\n" 
+"1C6DE40501D5D3E91601146BE40508D5D3E90245A94204\n" 
+"DC01DBA04201D22046294602F1D003D2F8D040E40508D5\n" 
+"D3E90245A94204DC01DBA04201D2204629461C6DE40508\n" 
+"D5D3E91645A94204DC01DBA04201D220462946D2F85431\n" 
+"DB0508D5D2E95645A94204DC01DBA04201D22046294630\n" 
+"BC70470A460146DFF8780716E60A460146DFF8700711E6\n" 
+"70B584B004460D46B4F90400C003009000AEB4F90600C0\n" 
+"037060B4F90800C003B06004F10C0300AA606A41002068\n" 
+"80B204F09BFD00982968A0EB6100009070686968A0EB61\n" 
+"007060B068A968A0EB6100B06004F1180300AA606A4100\n" 
+"206880B204F083FD206B40F0200020637FBDDFF81414C1\n" 
+"F8D400C1F8A0037047DFF80814C1F88400C1F89C037047\n" 
+"10B5002812D0D30704D50368DFF8E443C4F8B033930703\n" 
+"D54368DFF8F4436360520703D58068DFF8E82390600846\n" 
+"FFF7E0FF002210210846BDE8104009F07CBFDFF8101848\n" 
+"63C1F898037047F8B504460D46DFF80068002C11D006F5\n" 
+"69770C222146384609F082FF002808D00C2221463846DC\n" 
+"F7FFFC39463046FFF77CFF756306F56074A561D6F80801\n" 
+"002802D0C6F8800303E04FF4D810C6F880030022042108\n" 
+"4609F049FF01206060F1BDDFF8A417D1F88403012801D1\n" 
+"012000E000200022C1F88423704710B50C46002804D00C\n" 
+"22DFF82C13DCF7CEFC002C04D0DFF87407D0F880032060\n" 
+"10BD10B50C46002804D00C22DFF81C13DCF7BDFC002C04\n" 
+"D0DFF85407D0F88803206010BD2DE9F04114461D46DFF8\n" 
+"406706F150078A060FD40168B9804168F9808068388138\n" 
+"6B40F08000386306F56C713846FFF71DFF23E001F00308\n" 
+"090411D506F168030246786A4100306D80B204F0C4FC38\n" 
+"6B40F020003863C7F83480C6F89C830DE00168B9614168\n" 
+"F96180683862386B40F020003863C7F83480C6F89C8338\n" 
+"6B40F4A0703863D7E90E01C7E91001C7E90E450020BDE8\n" 
+"F08170B514461D46DFF8AC6606220146301DDCF760FC30\n" 
+"6B40F080003063D6E90E01C6E91001C6E90E4506F56971\n" 
+"3046FFF7D2FE306B40F4A0703063D6E90E01C6E91001C6\n" 
+"E90E45002070BD2DE9FE430646894614461D46DFF8FC81\n" 
+"08F1A007DFF86406814510D13068B8807068F880B06838\n" 
+"813068F86070683861B0687861386B40F08000F19403A0\n" 
+"818500386350E05FEAC9301ED53068B8807068F880B068\n" 
+"38813068C003009000A87168C9034160B168C903816008\n" 
+"F1AC0300AA786A4100D8F8A00080B204F03FFC386B40F0\n" 
+"800038632EE05FEA896016D4304600F038FA00A800F023\n" 
+"FA0098B88000A84168F9808068388108F557713846FFF7\n" 
+"70FE386B40F08000386314E00C22314608F1AC00DCF7E4\n" 
+"FB3068B8617068F861B0683862386B40F02000386309F0\n" 
+"03007863C8F8A003D7E90E01C7E91001C7E90E45386B40\n" 
+"F4A07038630020BDE8FE8330B4DFF86C4504F1F4056861\n" 
+"A4F8F410E86A40F4E070E862D4E94A01C4E94C01C4E94A\n" 
+"23002030BC70472DE9F04192B080460E4614461D460422\n" 
+"414600A8DCF7A7FBDFF82C75700421D500A9404604F0A5\n" 
+"FC102200A904A8DCF79AFBF00408A905D5D7F8400180B2\n" 
+"04F092FB03E0386880B204F08DFB00AA04A908A804F0F7\n" 
+"FB102200A907F5A270DCF782FB05E01022414607F5A270\n" 
+"DCF77BFBD7E956013205C7E95801C7E95645D7F8540107\n" 
+"D406F4CC4141F4E0710843C7F8540106E006F4D44141F4\n" 
+"E0710843C7F85401700504D522462B4600A809F02BFB30\n" 
+"0504D522462B4600A809F03CFBD7F8540100050AD504A8\n" 
+"0FF294411022D1F7DAFF22462B4604A809F053FB002012\n" 
+"B0BDE8F0810000204088007C43880020408800C4438800\n" 
+"0020DFF84C14C1F880007047D0438800537A85000D7A85\n" 
+"000020DFF83414C1F854017047757A85000020DFF82414\n" 
+"086370470000637A8500977A8500857A85002DE9F04300\n" 
+"231C4600E0641CDFF80054D5F86862B4420DDA0C2707FB\n" 
+"0455D5F86C620746BE4203D0D5F870528D42ECD1162032\n" 
+"E0142E2EDA1C46002E01D11BE0641CB44207DA04EB4407\n" 
+"05EB8707D7F870728F42F4DBB4420ED00BE00C2707FB06\n" 
+"5707F51B7C07F51877B7E80043ACE80043761EB442F1DB\n" 
+"0C2707FB0454C4F86C0204F51B7041608260D5F8680240\n" 
+"1CC5F8680200E00C231846BDE8F083000040420F0070B5\n" 
+"DFF868430020C4F8C00394F83000400602D50220C4F8C0\n" 
+"0394F88000400605D5D4F8C00340F00100C4F8C00394F8\n" 
+"D000400605D5D4F8C00340F00400C4F8C00394F8200140\n" 
+"0605D5D4F8C00340F00800C4F8C00394F85401400605D5\n" 
+"D4F8C00340F01000C4F8C00394F8A001400605D5D4F8C0\n" 
+"0340F02000C4F8C00300252E4613E006EB460004EB8001\n" 
+"D4F8C003D1F87422104208D02046D1F86C128847002802\n" 
+"D0002D00D10546761CD4F868028642E7DB00F002F82846\n" 
+"70BD10B4DFF8AC02016B4A0602D541F01001F194033085\n" 
+"8500016300F130010A6D530602D542F010020A65D0F8D0\n" 
+"20530603D542F01002C0F8D02000F1D002136D5C0602D5\n" 
+"43F010031365D0F854315C0603D543F01003C0F8543103\n" 
+"6B23F0400303630B6D23F040030B65D0F8D01021F04001\n" 
+"C0F8D010116D21F040011165D0F8541121F04001C0F854\n" 
+"1100F5AA70C16C21F04001C16410BC704738B50C461546\n" 
+"002804D00C22DFF82412DCF715FA002D05D0DFF80402D0\n" 
+"E92223C5E90023002C04D0DFF8F401D0F88400207031BD\n" 
+"70B50C461546784E0C2206F1B801DCF7FCF9002D03D0D6\n" 
+"E93601C5E90001002C09D0D6F8BC03002802D000202070\n" 
+"70BDD6F8D400207070BD6C48406B70476A48D0F8BC1300\n" 
+"2901D000207047D0F8D40070476548D0F8840070470021\n" 
+"07E0624A02EB8102D2F8CC2140F82120491C0329F5DB70\n" 
+"47000070408800C040880018B4002106E050F8212003EB\n" 
+"8103C3F8C021491C554B0329F5DBD3F82012012907D103\n" 
+"F5E672014603F5EC7018BC04F090BA002106E050F82120\n" 
+"03EB8104C4F8CC21491C0329F6DB11BC704710B5002002\n" 
+"46464C04E004EB8001C1F8FC21401C0928F8DB24220021\n" 
+"04F5EC70E0F779F800200AE004EB00114FF07E52C1F8FC\n" 
+"214FF08042C1F8D821401C0328F2DBBDE81040FFE70020\n" 
+"3549C1F8200270470000491C00EE101AB8EEC00A3049DF\n" 
+"ED300A020612D401EE100AB8EE411ADFED2D1A81EE211A\n" 
+"F7EE001A31EE211A61EE200A80EE200A81EDF10A704780\n" 
+"3801EE100AB8EEC11ADFED231A81EE211AF7EE001A31EE\n" 
+"C11A61EE200A80EE200A81EDF10A70471A4890EDF10A70\n" 
+"470000012101FA00F0FA21484300EE100AB8EEC00ADFED\n" 
+"160A20EE200A1148D0EDF10A20EE200ABDEEC00A10EE10\n" 
+"0A70470000002100F00302032A00D1012100F01802182A\n" 
+"00D1012100F0C002C02A00D10121002900D088200249C1\n" 
+"F84001704700002040880000A08C4400C09E4435FA0E4B\n" 
+"2000010088408800000000400000000000000000000000\n" 
+"0010B5DFF88842606840F400206060204609F048FD2046\n" 
+"09F007FF204600F05EF9DFF86C12884208D10020A4F894\n" 
+"070FF2682000F04BFB002002E00121A4F89417002803D0\n" 
+"0FF26C2000F040FB0020BDE8104000F06CB938B5044600\n" 
+"A800F01EFA302000F027FA00F074FF05001CD19DF80000\n" 
+"00F0FAF9382000F0D9F8382000F0E5F8382000F0F3F800\n" 
+"F0B1FF054600214FF4414000F064FC00F0A0F82146DFF8\n" 
+"EC0109F0B3FC284632BD00F077BF10B582B000A8002101\n" 
+"60084600F0B1F99DF800200321682000F0F19403C08885\n" 
+"0050FA044600AB04221021682000F007FB204616BD10B5\n" 
+"DFF8AC41D4F83017002813D121F40040C4F8300700214F\n" 
+"F4004000F0DBFC00214FF4804000F097FD0020C4F82401\n" 
+"FEF7B3F90BE041F40040C4F8300701214FF4004000F0C7\n" 
+"FC0120C4F824012046BDE8104009F010BB10B5DFF85441\n" 
+"D4F8301700280FD121F48040C4F8300700214FF4804000\n" 
+"F0AFFC0020C4F86401BDE81040FEF785B941F48040C4F8\n" 
+"30070120C4F8640101464FF48040BDE8104000F09ABC10\n" 
+"B5DFF80841D4F8301700280ED121F48070C4F830070021\n" 
+"4FF4807000F08AFC0020C4F82403FEF76CF90BE041F480\n" 
+"70C4F8300701214FF4807000F07BFC0120C4F824032046\n" 
+"BDE8104009F0C4BA012802DB012000F0CDBD002000F0CA\n" 
+"BD80B54FF0807000F0F2FD2B4800F0FAFD002000F04FFE\n" 
+"022000F0FFFD0A2000F007FE012000F00FFE072000F017\n" 
+"FE0A2000F01FFE022000F027FE082000F02FFE0020BDE8\n" 
+"024000F035BE1948D0F83007704710B504461648C0F838\n" 
+"47C0F8044109F08AFA2046C0B2BDE8104000F03BBD10B5\n" 
+"04460E48C0F83C47C0F88443C0F8444109F079FA2046C0\n" 
+"B2BDE8104000F047BD10B504460648C0F84C47C0F80443\n" 
+"09F06AFA2046C0B2BDE8104000F055BDD0ED8800EFCDAB\n" 
+"00AE47610043616E204E4F542066696E6420434F4D5041\n" 
+"5353202E2E0D0A0000004572726F7220496E697469616C\n" 
+"697A696E6720746865204D5055202E2E0D0A0002467621\n" 
+"682046E180B5002000F016F8002001F0E6F9032001F0E3\n" 
+"F900280CD1002000F093F80020FFF7EAFF1F2000F0F1F8\n" 
+"1E2000F0EEF8002002BD10B50446002000F083F8002C01\n" 
+"D0022200E000220F216820BDE810401DE110B504460020\n" 
+"00F074F801221221682000F014F9002C0ED0002000F06A\n" 
+"F801221121682000F00AF91F226621682000F005F94024\n" 
+"0DE0002000F05BF800226621682000F0FBF80022112168\n" 
+"2000F0F6F8002404F0BF020321682000F0EFF81F2000F0\n" 
+"ABF81E2000F0A8F8224603216820BDE81040E2E010B582\n" 
+"B0040001D000202080002000F035F80DF1010301221B21\n" 
+"682000F0ADF800282AD100AB01221921682000F0A5F800\n" 
+"2822D19DF80100002802D0012001F09CF9002C02D09DF8\n" 
+"0000208000AB01221821682000F091F8002C05D021889D\n" 
+"F8002041EA02212180DFF8B41203D022880B881A432280\n" 
+"00220A8016BD10B582B00446DFF8A00201788C4201D100\n" 
+"2016BD047000AB01227F21682000F06EF8002810D19DF8\n" 
+"000000F0CE0040EA04108DF800009DF8F19403508C8500\n" 
+"00207F21682000F084F8002800D1002016BD10B582B004\n" 
+"460020FFF7D5FF00AB01220521682000F04EF8002809D1\n" 
+"9DF8000020438DF8000002460521682000F068F816BD10\n" 
+"B504460020FFF7BDFF2346012205216820BDE8104034E0\n" 
+"10B582B004460020FFF7B0FF00AB01220521682000F029\n" 
+"F800280AD19DF80000A0438DF800009DF8002005216820\n" 
+"00F042F816BD10B582B004460020FFF796FF00AB012268\n" 
+"21084600F00FF800280BD19DF8000000F0E00020438DF8\n" 
+"000002466821084600F027F816BD2DE9F84304460D4616\n" 
+"461F464FF0000801E018FA89F83146884515D2A1EB0800\n" 
+"B0F5807F02D94FF4807901E0A6EB080908EB07034A4692\n" 
+"B208EB0501C9B2204600F0E2F80028E4D0BDE8F28380B5\n" 
+"8DF8002000AB012200F0B7F802BD2DE9F84304460D4616\n" 
+"461F464FF0000801E018FA89F83146884513D2A1EB0800\n" 
+"B0F5807F02D94FF4807901E0A6EB080908EB07034A4692\n" 
+"B22946204600F0B6F80028E6D0BDE8F28338B504460D46\n" 
+"00208DF80000FFF727FF00AB01221021682000F0A4F800\n" 
+"2810D1002D9DF8000003D020438DF8000002E0A0438DF8\n" 
+"000000AB01221021682000F071F832BD000038B504460D\n" 
+"46002C01D0002D01D1162032BD00AB02223921682000F0\n" 
+"60F800281CD19DF800009DF8011041EA0020288000B200\n" 
+"EE100AB8EEC00ADFED1D0A30EE200ADFED1C0A80EE200A\n" 
+"DFED1B0A30EE200ABEEEC80A84ED000A002032BD10B582\n" 
+"B0044600208DF80000002C01D1202016BD0120FFF7D0FE\n" 
+"00AB01222821682000F04DF8002803D19DF80000207000\n" 
+"2016BD000080B500A900220A6003F042FD00AA4FF49871\n" 
+"042000F0B2F802BD000000C067440080B44300000C424C\n" 
+"888900D82788000EB403B0704710B50446D7F7FEF92146\n" 
+"89B2BDE81040D7F7E8BB38B51446002B19D0734D01F07F\n" 
+"0028701946681CDBF77DFD631CDBB22A461B210020D7F7\n" 
+"2CFB002808D13D220FF2BC110FF2A810D7F751FA002032\n" 
+"BD002032BD80B5002B12D0D2B2009241F080021B210020\n" 
+"D7F74CFB002808D14E220FF28C110FF27810D7F739FA00\n" 
+"2002BD002002BD70B582B004460D4616460FF2E8100088\n" 
+"ADF80000022300AA1B210020D7F7F7FA002808D159220F\n" 
+"F250110FF23C10D7F71CFA002076BD0FF2C0100088ADF8\n" 
+"0000280A8DF80100022300AA1B210020D7F7DEFA002808\n" 
+"D15D220FF220110FF20C10D7F703FA002076BD0FF29410\n" 
+"0088ADF800008DF80150022300AA1B210020D7F7C6FA00\n" 
+"2808D160220FF2F0010FF2DC00D7F7F19403E08F8500EB\n" 
+"F9002076BDE4B200943346FD221B210020D7F7EBFA0028\n" 
+"08D163220FF2C8010FF2B400D7F7D8F9002076BD002076\n" 
+"BD70B582B004460E4615460FF234100088ADF80000300A\n" 
+"8DF80100022300AA1B210020D7F793FA002808D170220F\n" 
+"F288010FF27400D7F7B8F9002076BD0FF204100088ADF8\n" 
+"00008DF80160022300AA1B210020D7F77BFA002808D173\n" 
+"220FF258010FF24400D7F7A0F9002076BD0D4E7D203070\n" 
+"22462946701CDBF7B2FC631CDBB232461B210020D7F761\n" 
+"FA002808D176220FF224010FF21000D7F786F9002076BD\n" 
+"002076BD906088005B494E564E5D25733A25640A000000\n" 
+"00443A5C4D43555C53454E534F525F6B616C6D6961615F\n" 
+"5452454C54455F4252434D5F4E6F746550435C4D43555C\n" 
+"50726F6A6563745C5353505F53656E736F724875625C53\n" 
+"485F53656E736F724D616E616765725C7372635C52565C\n" 
+"496E76656E5F49434D32303631305C7372635C696E765F\n" 
+"6F656D5F6170692E63007F0000007E0000007C0000007E\n" 
+"0000007C000000F8B504460F46DFF840552A464C210220\n" 
+"FFF7F1FE0646002F49D1200403D5287800F07F00287060\n" 
+"0403D5287800F0BF002870A00403D5287800F0DF002870\n" 
+"E00403D5287800F0EF002870200503D5287800F0F70028\n" 
+"70A00503D5287800F0FD002870E00503D5287800F0FE00\n" 
+"2870200603D5687800F07F006870600603D5687800F0BF\n" 
+"006870E00603D5687800F0EF006870200703D5687800F0\n" 
+"F700687014F0070F4DD0687800F0F800687048E0200403\n" 
+"D5287840F080002870600403D5287840F040002870A004\n" 
+"03D5287840F020002870E00403D5287840F01000287020\n" 
+"0503D5287840F008002870A00503D5287840F002002870\n" 
+"E00503D5287840F001002870200603D5687840F0800068\n" 
+"70600603D5687840F040006870E00603D5687840F01000\n" 
+"6870200703D5687840F00800687014F0070F03D0687840\n" 
+"F0070068702A464C210220FFF7B7FE801900D10020F2BD\n" 
+"F8B504460F46DFF8F0532A4640210220FFF748FE064600\n" 
+"2F55D1200403D5287800F07F002870600403D5287800F0\n" 
+"BF002870A00403D5287800F0DF002870E00403D5287800\n" 
+"F0EF002870200503D5287800F0F7002870600503D52878\n" 
+"00F0FB002870A00503D5287800F0FD002870E00503D528\n" 
+"7800F0FE002870200603D5687800F07F006870600603D5\n" 
+"687800F0BF006870A00603D5687800F0DF006870E00603\n" 
+"D5687800F0EF006870200703D5687800F0F700687014F0\n" 
+"070F59D0687800F0F800687054E0F19403709385002004\n" 
+"03D5287840F080002870600403D5287840F040002870A0\n" 
+"0403D5287840F020002870E00403D5287840F010002870\n" 
+"200503D5287840F008002870600503D5287840F0040028\n" 
+"70A00503D5287840F002002870E00503D5287840F00100\n" 
+"2870200603D5687840F080006870600603D5687840F040\n" 
+"006870A00603D5687840F020006870E00603D5687840F0\n" 
+"10006870200703D5687840F00800687014F0070F03D068\n" 
+"7840F0070068702A4640210220FFF7F6FD801900D10020\n" 
+"F2BDF8B504460F46DFF8A4582A4642210220FFF787FD06\n" 
+"46002F18D1600403D5287800F0BF002870A00403D52878\n" 
+"00F0DF002870E00403D5287800F0EF002870E0051CD528\n" 
+"7800F0FE00287017E0600403D5287840F040002870A004\n" 
+"03D5287840F020002870E00403D5287840F010002870E0\n" 
+"0503D5287840F0010028702A4642210220FFF7AFFD8019\n" 
+"00D10020F2BD38B504460020ADF8000000AA9E210220FF\n" 
+"F7A1FD0546E22C00D3E124E12090FBF4F0401E8DF80100\n" 
+"00AABE210220FFF792FD401900D1002032BD38B5044600\n" 
+"20ADF8000000AA9A210220FFF784FD0546E22C00D3E124\n" 
+"E12090FBF4F0401E8DF8010000AABA210220FFF775FD40\n" 
+"1900D1002032BD38B504460020ADF8000000AA80210220\n" 
+"FFF767FD0546E22C00D3E124E12090FBF4F0401E8DF801\n" 
+"0000AAA0210220FFF758FD401900D1002032BD38B50546\n" 
+"0FF250000088ADF8020000AA4E210220FFF7E7FC04469D\n" 
+"F8031000A8002D9DF800209DF8023007D19A438DF80020\n" 
+"427822EA0101417005E01A438DF8002042781143417000\n" 
+"AA4E210220FFF72BFD001932BD0000080080B500A903F0\n" 
+"ADF902464FF4C4710420FFF71DFD02BD80B500A903F0A2\n" 
+"F902464FF4C6710420FFF712FD02BD80B500A903F097F9\n" 
+"02464FF4EC710420FFF707FD02BD80B500A903F08CF902\n" 
+"464FF4EE710420FFF7FCFC02BD80B500A903F081F90246\n" 
+"4FF4DC710420FFF7F1FC02BD80B500A903F076F902464F\n" 
+"F4DE710420FFF7E6FC02BD80B500A903F06BF902464FF4\n" 
+"E6710420FFF7DBFC02BD80B500A903F060F902464FF4E4\n" 
+"710420FFF7D0FC02BD80B500A903F055F902464FF4F471\n" 
+"0420FFF7C5FC02BD80B500A903F04AF902464FF4D07104\n" 
+"20FFF7BAFC02BD000046888900488889002DE9F043A1B0\n" 
+"05460C4600A88021D0F75BFD902600273846FFF7AAFAB8\n" 
+"460DE0415D00AA825C914200D07F1C401C4845F6DB4D44\n" 
+"4E44C8441FFA88F84046A04220D2B6B2F0B2C0F5807080\n" 
+"2805DAF0B2C0F580791FFA89F9F194030097850001E04F\n" 
+"F080092A4631464846FFF780FC00AA31464846FFF71AFC\n" 
+"4A4600A9284608F0E2FB0028D8D00020D4E7BFB239460F\n" 
+"F64800FFF7C6FB002F02D04FF0FF3000E0002021B0BDE8\n" 
+"F08338B503240220FFF762FA092250216820FFF702FB05\n" 
+"0016D1002251216820FFF7FBFA05000FD140F6F3410FF6\n" 
+"2400FFF796FF050002D00220FFF7A2FB641E012C01DB00\n" 
+"2DEFD1284632BD80B50020FFF73EFA002203216820FFF7\n" 
+"DEFA1F20FFF79AFA1E20FFF797FA042203216820FFF7D3\n" 
+"FA002811D10520FFF782FB842203216820FFF7C9FA0028\n" 
+"07D1C42203216820FFF7C2FA002800D1002002BD80B500\n" 
+"A80021016000AA40210220FFF70CFC00AA42210220FFF7\n" 
+"07FC00AA4C210220FFF702FC00AA4E210220FFF7FDFB00\n" 
+"2002BD2DE9F24F82B0044615460C9E0027384601908046\n" 
+"009002983946018008462880002C02D14FF0FF3046E220\n" 
+"68B0F5806F10DA814601AADFF810174118C0F5806000F0\n" 
+"85FA484420600198002802D03846206031E220680228C0\n" 
+"F2198238460090DFF8E8960DF1020200A9484600F029FA\n" 
+"8246BDF80000002813D0F143084210D12068504501DA38\n" 
+"4616E20AEB090010F8020C692805D10AEB090010F8010C\n" 
+"D22804D000F0BFFA3846206005E209F10206BDF8000000\n" 
+"0701D509F10406DFF890B6BDF8000000043CD530787178\n" 
+"090441EA0060B17840EA0120F1780843CBF82000307971\n" 
+"79090441EA0060B17940EA0120F1790843CBF82400307A\n" 
+"717A090441EA0060B17A40EA0120F17A0843CBF8280030\n" 
+"78000200B271780843CBF82000B078000200B2F1780843\n" 
+"CBF824003079000200B271790843CBF828004FF0010806\n" 
+"F20606BDF80000400415D53078717841EA0020ABF80800\n" 
+"B078F17841EA0020ABF80A003079717941EA0020ABF80C\n" 
+"004FF0010806F20606BDF8000080041ED53078000200B2\n" 
+"71780843CBF83800B078000200B2F1780843CBF83C0030\n" 
+"79000200B271790843CBF84000062231460BF15C00DBF7\n" 
+"11F84FF0010806F20606BDF80000C0041AD53078717841\n" 
+"EA0020ABF80000B078F17841EA0020ABF8020030797179\n" 
+"41EA0020ABF80400B079F17941EA0020ABF806004FF001\n" 
+"080836BDF8000000052CD530787178090441EA0060B178\n" 
+"40EA0120F1780843CBF8140030797179090441EA0060B1\n" 
+"7940EA0120F1790843CBF81800307A717A090441EA0060\n" 
+"B17A40EA0120F17A0843CBF81C0009F581610BF1140003\n" 
+"F0C6F84FF001080C36BDF8000040052DD5307871780904\n" 
+"41EA0060B17840EA0120F178F19403909A85000843CBF8\n" 
+"140030797179090441EA0060B17940EA0120F1790843CB\n" 
+"F81800307A717A090441EA0060B17A40EA0120F17A0843\n" 
+"CBF81C0009F581610BF1140003F095F84FF0010806F20E\n" 
+"06BDF80000800503D54FF0010806F20606BDF80000C005\n" 
+"2CD530787178090441EA0060B17840EA0120F1780843CB\n" 
+"F8140030797179090441EA0060B17940EA0120F1790843\n" 
+"CBF81800307A717A090441EA0060B17A40EA0120F17A08\n" 
+"43CBF81C0009F581610BF1140003F05BF84FF001080C36\n" 
+"BDF8000000060FD53078717841EA0020ABF81000B078F1\n" 
+"7841EA0020ABF812004FF0010806F20606BDF800004006\n" 
+"26D530787178090441EA0060B17840EA0120F1780843CB\n" 
+"F82C0030797179090441EA0060B17940EA0120F1790843\n" 
+"CBF83000307A717A090441EA0060B17A40EA0120F17A08\n" 
+"43CBF834004FF001080C36BDF8000080062CD530787178\n" 
+"090441EA0060B17840EA0120F1780843CBF84400307971\n" 
+"79090441EA0060B17940EA0120F1790843CBF84800307A\n" 
+"717A090441EA0060B17A40EA0120F17A0843CBF84C000C\n" 
+"2231460BF15000DAF7E5FE4FF001080C36BDF80000C006\n" 
+"02D54FF00108361DBDF8020040040BD53078717841EA00\n" 
+"20A9F80004B61C00B200F00300FEF78AF9BDF802008004\n" 
+"0AD53078717841EA002009F200414880B61C00B2FEF7A2\n" 
+"F9BDF80200C00409D53078717841EA002009F200418880\n" 
+"00B2FEF766F92068B0EB0A02226004D00AEB0901484608\n" 
+"F0DFFCB8F1000F05D13846206000F054F807000AD10298\n" 
+"002802D0BDF800100180002D02D0BDF8020028803846BD\n" 
+"E8FE8F00004A88890030B4134604220478457845EA0424\n" 
+"0C80210400D50A22610400D5921DA10400D5921DE10400\n" 
+"D50832210500D50C32610500D50E32A10500D5921DE105\n" 
+"00D50C32210600D5921D610600D50C32A10600D50C32E1\n" 
+"0600D5121D210705D58178C07840EA01201880921C1888\n" 
+"410400D5921C810400D5921CC00400D5921C104630BC70\n" 
+"478349086800220A6070472DE9F04182B00C46160001D0\n" 
+"002030607C4D2879002808D000F05DF83E202860002E18\n" 
+"D00120306015E000A800F02FF8002826D10099B1F5487F\n" 
+"08D900F04BF83E202860002E06D00120306003E0002901\n" 
+"D0C90701D5002017E0009E0027002E07E0B04641463819\n" 
+"00F089F84744B6EB080604D0032EF4DB4FF00208F2E700\n" 
+"2802D02860002000E00098BDE8F68138B5040001D11620\n" 
+"32BD0020FEF709FF00AB022270216820FEF782FF050008\n" 
+"D000F012F8544840210160F19403209E85000020206028\n" 
+"4632BD9DF80000000220609DF8011050FA81F020600020\n" 
+"32BD1CB54FF48060019000242046FEF7E5FE00AB012203\n" 
+"216820FEF75EFF002826D100E0641C0198002819D0E4B2\n" 
+"062C16D29DF8000000F0BF0203216820FEF772FF1F20FE\n" 
+"F72EFF1E20FEF72BFF38480021017101A8FFF7B0FF0028\n" 
+"E2D016BD9DF8000040F0400203216820FEF75BFF16BD10\n" 
+"B582B004460020FEF7AFFE00AB01226E216820FEF728FF\n" 
+"00280CD19DF8000000F0FC0020438DF8000002466E2168\n" 
+"20FEF740FF002016BD38B504460D460020FEF793FE2346\n" 
+"2A4692B272216820FEF739FF040006D0FFF79BFF184841\n" 
+"210160204632BD002032BD15490871704780B5002802D1\n" 
+"4FF0FF3002BD0C221149DAF760FD002002BD80B5002802\n" 
+"D14FF0FF3002BD0C220C49DAF754FD002002BD80B50028\n" 
+"02D14FF0FF3002BD06220749DAF748FD002002BD54E988\n" 
+"006CED88004CE9880080ED88008CED880074ED88004520\n" 
+"3A20636F6D70617265206572726F7220636F756E74203D\n" 
+"2025640000000000010000000000000000000000000000\n" 
+"000500000000000000000008000500FFFFF70000000000\n" 
+"0000000005000000058000800040004000200020001000\n" 
+"1000080008000400040002000200010001000080008000\n" 
+"4000400020002000100010000800080004000400020002\n" 
+"0001000100000000000000000000000000000000000000\n" 
+"000000000000000000000069D204000000000000000000\n" 
+"0000C100003804F6E8F4000008000001FFC70000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00066666663A3230193999999905CDCFE6000000000000\n" 
+"000001000000006147AE00000000000000000000000000\n" 
+"00000000000000000000000000000000000000FFFFFFFF\n" 
+"0000000000000001000000070000000000000000000000\n" 
+"020000000A0000000000000000000000020000000A0000\n" 
+"00000000000000000010000000008000FFF70000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"40000000000000000000000000000000003E0330000000\n" 
+"0000000000000000000000000200000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"6000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000F19403B0A18500000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000000000000000000000000000000000000000000C800\n" 
+"00000000020000000003E8000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000135C29000CF5C29000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000004000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000700000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"000000000000000000F1940340A5850000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000010000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000400000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00004100000000000000000000000000000C000000F800\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000D8DCB8B0\n" 
+"B4F3AAF8F9D1D9889AF8F73ED8F38A9AA729D1DAF1FFD8\n" 
+"F1A4DFA5DEF3A8DED0DFF2A9F8F9D1DADEA8DEDFDFDFD8\n" 
+"F4B18DF3A8D0C0B08EC6F9F1BCB0BDBE82A1C3C5C7BCBC\n" 
+"A2DFDFDF80F2A2C3CBC5BCF190FCC300D9F409BED8F3A0\n" 
+"DFF18291A92D557DA98090FC510010FC510010FC510010\n" 
+"FCC104D9F2A0DFF409BED8F6A0FA809038F3DEDAF8F409\n" 
+"BED8F1BD95FCC004D9BDBDF409BEDABDBDD8F6BCBCBDBD\n" 
+"BEBEB5A784921AF8F9D1DB8493F76AB68796F309FFDABC\n" 
+"BDBED8F3BCBCBDBDF19403D0A88500BEBEB0B48FF4B9AF\n" 
+"D0C7BEBEB8AED0F39F75F4ADF38EC2B286F4BEB9AFD0C3\n" 
+"F1BEB8B0A3DEDFDFDFF2A381C080CDC7CFBDB4B2A38693\n" 
+"F120FD3F2CFD3F34FD3F3CFD3FBEA220FD31BCBCB08BBE\n" 
+"BEA32D557DA2869D08FD0FBCBCA3839201A99E0E161EBE\n" 
+"BE99BAA52C547CBDBDBCBCB1B68395A5F10E161EB2A785\n" 
+"952AF050788793F101DAA5DFDFDFD8A4DFDFDFB080F2A4\n" 
+"C3CBC5F1B18294A40E161EBD9EBEAF0E161EBCB28FBDBD\n" 
+"94BEBEB8A62D557DBAA42D557DBCBCB8B0B4A7889FF75A\n" 
+"F9D9F1BAA5DFDFDFB8DAF3A8F8D8889FA7F752F9D9F1BA\n" 
+"A4DFDFDFB8DAF3889DA8D064D8F78498A8D07EF0B2B6BA\n" 
+"8591A72470594469386448312D517987F1A1002C547CF0\n" 
+"81A704285078FD7FF1A787965991A1020E161EF08491A7\n" 
+"2470594469386448312D5179A2870D20597015384069A4\n" 
+"F162F0193148B8B2B6F1A682922AF050FD04F1A7849402\n" 
+"FD04B0B4869700BCBAA78661D9BCBCF40B47D8F141DABC\n" 
+"BCF40B47D8F0B8A6DEBCBCB281B691BAA704285078FD7F\n" 
+"F1A787965991A1020E161ED8D8F3BDBDBEBEB8B4B08FA8\n" 
+"C0F9AC8497F51AF1F8F9D1DAA8DED895FCC103D9A8DED8\n" 
+"BCBCF198FCC01CDB95FCC003A5DEA4DED8AC889500D1D9\n" 
+"A5F8D8A4FC80048895A4FC080420F7BCBDB5AC849FF602\n" 
+"F8F9D1DB8493F76AF9D9F3BCBCA8889218BCD8BCBCB4A8\n" 
+"889E08F4BEA1D0C1BCD8F1B281B696BAA1F8F9B9A0DAC3\n" 
+"C5C7D92D4D6DD8F3B0B4B898FCC004DAF40BF9F2D8A8F8\n" 
+"889AA701D9A8DEA4849D3CD8F3A9D0F8899BA751D9A9D0\n" 
+"DEA4849C2CD8F7A7889F52F9D9F40C1AD8F1B9A2FAF3B8\n" 
+"A9D0FA899BA779D9A9D0DFA4849C24D8F1B0B4B8A7DEF2\n" 
+"84CA97A424A594F60AA5B1829562F8F9D1D9F40C85D8F0\n" 
+"B085A4D0C0DDF2C0DCD88595A500D980F0DDF2C2CAC4DC\n" 
+"D8F28500D980F0DDF2CCC6CEDCD885000000000000B1D9\n" 
+"80F0DDF1C2C4C6DCD8B181F0DDF3C6DCD8F6B8B0B4A784\n" 
+"945AF8F9D1DAFED8F1D8F1B8B0B4A7889DF762F9D9F40D\n" 
+"80D8F1B9A586C3C5C7B1B59AFCC000DAF40D75D8F0A987\n" 
+"994C950899549510997C9538FD7EF18994A661D9A4C6C1\n" 
+"D8A671DAA4D0C6C1D88494A669F5869810D9F1A4DEDFDF\n" 
+"DFADDFAEDEF8D8ADF8F58D9D10DAAEDED8ADFAF538D9DE\n" 
+"A4DEDFDFDFABDEF9D8F19EFCC004DB9BFCC100DAF40D18\n" 
+"D8F1ADDEDFABF8F58B9B1810D9DEDFF8D8F19BFCC104D9\n" 
+"AEDEACF8DB8CFC090421FCC108D9AEDFF8F441D8F1FCC1\n" 
+"08DAF40D6BD8F1AEDE8A99A62D557DF5A686962C547CF1\n" 
+"A6889669DB7179F1940360AC8500D9ACFADAACDFD8F58C\n" 
+"9CA638D9ACDEDF8BAEC3ABDFF442D8F188A8C189AAC3C5\n" 
+"C7D8F1AAF88E9AA641DAAADED8F1FF00E54A12689FEDBC\n" 
+"0A038800EB4303B3F9043000EE903AF8EEE00A92ED001A\n" 
+"B8EE411A70EEC10A92ED031AB8EE411AC0EE810A60EE80\n" 
+"0AC1ED000AD2ED010AF8EE600A038800EB4303B3F90630\n" 
+"01EE103AB8EEC11A70EEC10A92ED041AB8EE411AC0EE81\n" 
+"0A60EE800AC1ED010AD2ED020AF8EE600A038800EB4300\n" 
+"B0F9080001EE100AB8EEC11A70EEC10A92ED051AB8EE41\n" 
+"1AC0EE810A20EE800A81ED020A012070470388934201D3\n" 
+"0023038003885B1C03809BB2934201D300220280028802\n" 
+"EB420300EB8300001D91EC030A80EC030A01207047B0F9\n" 
+"0030591A09B2002901D511FA82F109B201EB410200EB82\n" 
+"00001D7047000070B49FEDB80A0023B0F9004010E024B2\n" 
+"250008D405EB450600EB8605D5ED010A30EE200A641E24\n" 
+"B2002C00D5541E5B1C1BB28B42EBDB70BC7047000070B4\n" 
+"9FEDA90A0023B0F9004010E024B2250008D405EB450600\n" 
+"EB8605D5ED020A30EE200A641E24B2002C00D5541E5B1C\n" 
+"1BB28B42EBDB70BC7047000070B49FED9A0A0023B0F900\n" 
+"4010E024B2250008D405EB450600EB8605D5ED030A30EE\n" 
+"200A641E24B2002C00D5541E5B1C1BB28B42EBDB70BC70\n" 
+"47000010B52DED068BADF5FB6D00A80FF2282140F2D472\n" 
+"CFF760FA9FED768B9FED779B00ACB5EE400AF1EE10FA48\n" 
+"DB9FED75ABDFED760AB4EE600AF1EE10FA1AD510EE100A\n" 
+"DEF70DFD53EC192BDEF737FC53EC182BEFF785FDEBF715\n" 
+"FD54F82000DEF715FC53EC1A2BDEF729FCDEF721FD00EE\n" 
+"100A68E0F7EE000A80EE800A10EE100ADEF7EEFC53EC19\n" 
+"2BDEF718FC53EC182BEFF766FDEBF7F6FC54F82000DEF7\n" 
+"F6FB53EC1A2BDEF70AFC02460B465B485849EBF714FDDE\n" 
+"F7FCFC00EE100A43E0FFEE000AB4EE600AF1EE10FA1CDB\n" 
+"B1EE400A10EE100ADEF7C4FC53EC192BDEF7EEFB53EC18\n" 
+"2BEFF73CFDEBF7CCFC54F82000DEF7CCFB0022474BDEF7\n" 
+"E0FBDEF7D8FC00EE100A1FE080EE800A10EE100ADEF7A7\n" 
+"FC53EC192BDEF7D1FB53EC182BEFF71FFDEBF7AFFC54F8\n" 
+"2000DEF7AFFB0022394BDEF7C3FB394A3E4BEFF711FDDE\n" 
+"F7B7FC00EE100A0DF5FB6DBDEC068B10BDC3F51C4180B5\n" 
+"B0EE401AF5EE400AF1EE10FA04DD81EE200ABDE8014048\n" 
+"E7F5EE400AF1EE10FA24D581EE200AB5EE401AF1EE10FA\n" 
+"0EDBFFF73BFF10EE100ADEF767FC224A224BEFF7E3FCDE\n" 
+"F789FC00EE100A01BDFFF72CFF10EE100ADEF758FC1A4A\n" 
+"1C4BEFF7D4FCF19403F0AF8500DEF77AFC00EE100A01BD\n" 
+"B5EE401AF1EE10FA02DD9FED160A01BDB5EE401AF1EE10\n" 
+"FA02D59FED130A01BD9FED130A01BD0149086070470000\n" 
+"44C58800000000000000E03F0000000000407F40000000\n" 
+"000000503F0100803FFB21F93F000050BF0000503F182D\n" 
+"4454FB210940FB2109C0DB0FC93FDB0FC9BF00000000FB\n" 
+"21F9BF0000000002000000040000000600000008000000\n" 
+"0A0000000C0000000E0000001000000012000000140000\n" 
+"0017000000190000001B0000001D0000001F0000002100\n" 
+"0000230000002500000027000000290000002B0000002D\n" 
+"0000002F00000031000000330000003500000037000000\n" 
+"390000003B0000003D0000003F00000041000000430000\n" 
+"0046000000480000004A0000004C0000004E0000005000\n" 
+"0000520000005400000056000000580000005A0000005C\n" 
+"0000005E00000060000000620000006400000066000000\n" 
+"680000006A0000006C0000006E00000070000000720000\n" 
+"007400000076000000780000007A0000007C0000007E00\n" 
+"000080000000820000008400000086000000880000008A\n" 
+"0000008C0000008E000000900000009200000094000000\n" 
+"96000000980000009A0000009C0000009E000000A00000\n" 
+"00A2000000A4000000A6000000A8000000AA000000AC00\n" 
+"0000AE000000B0000000B2000000B4000000B6000000B8\n" 
+"000000BA000000BC000000BE000000C0000000C2000000\n" 
+"C4000000C6000000C8000000CA000000CC000000CE0000\n" 
+"00D0000000D2000000D4000000D6000000D8000000DA00\n" 
+"0000DC000000DE000000E0000000E2000000E4000000E6\n" 
+"000000E7000000E9000000EB000000ED000000EF000000\n" 
+"F1000000F3000000F5000000F7000000F9000000FB0000\n" 
+"00FD000000FF0000000101000003010000040100000601\n" 
+"0000080100000A0100000C0100000E0100001001000012\n" 
+"010000140100001601000018010000190100001B010000\n" 
+"1D0100001F010000210100002301000025010000270100\n" 
+"00290100002A0100002C0100002E010000300100003201\n" 
+"0000340100003601000038010000390100003B0100003D\n" 
+"0100003F01000041010000430100004501000046010000\n" 
+"480100004A0100004C0100004E01000050010000510100\n" 
+"00530100005501000057010000590100005B0100005C01\n" 
+"00005E0100006001000062010000640100006501000067\n" 
+"010000690100006B0100006D0100006E01000070010000\n" 
+"72010000740100007601000077010000790100007B0100\n" 
+"007D010000F1940380B385007F01000080010000820100\n" 
+"00840100008601000087010000890100008B0100008D01\n" 
+"00008E0100009001000092010000940100009501000097\n" 
+"010000990100009B0100009C0100009E010000A0010000\n" 
+"A2010000A3010000A5010000A7010000A8010000AA0100\n" 
+"00AC010000AE010000AF010000B1010000B3010000B401\n" 
+"0000B6010000B8010000B9010000BB010000BD010000BF\n" 
+"010000C0010000C2010000C4010000C5010000C7010000\n" 
+"C9010000CA010000CC010000CE010000CF010000D10100\n" 
+"00D3010000D4010000D6010000D7010000D9010000DB01\n" 
+"0000DC010000DE010000E0010000E1010000E3010000E5\n" 
+"010000E6010000E8010000E9010000EB010000ED010000\n" 
+"EE010000F0010000F1010000F3010000F5010000F60100\n" 
+"00F8010000F9010000FB010000FD010000FE0100000002\n" 
+"0000010200000302000004020000060200000802000009\n" 
+"0200000B0200000C0200000E0200000F02000011020000\n" 
+"13020000140200001602000017020000190200001A0200\n" 
+"001C0200001D0200001F02000020020000220200002302\n" 
+"0000250200002602000028020000290200002B0200002C\n" 
+"0200002E0200002F020000310200003202000034020000\n" 
+"3502000037020000380200003A0200003B0200003D0200\n" 
+"003E020000400200004102000043020000440200004602\n" 
+"000047020000480200004A0200004B0200004D0200004E\n" 
+"0200005002000051020000530200005402000055020000\n" 
+"57020000580200005A0200005B0200005C0200005E0200\n" 
+"005F020000610200006202000064020000650200006602\n" 
+"000068020000690200006A0200006C0200006D0200006F\n" 
+"0200007002000071020000730200007402000075020000\n" 
+"77020000780200007A0200007B0200007C0200007E0200\n" 
+"007F020000800200008202000083020000840200008602\n" 
+"000087020000880200008A0200008B0200008C0200008E\n" 
+"0200008F02000090020000920200009302000094020000\n" 
+"960200009702000098020000990200009B0200009C0200\n" 
+"009D0200009F020000A0020000A1020000A2020000A402\n" 
+"0000A5020000A6020000A8020000A9020000AA020000AB\n" 
+"020000AD020000AE020000AF020000B0020000B2020000\n" 
+"B3020000B4020000B5020000B7020000B8020000B90200\n" 
+"00BA020000BC020000BD020000BE020000BF020000C102\n" 
+"0000C2020000C3020000C4020000C5020000C7020000C8\n" 
+"020000C9020000CA020000CB020000CD020000CE020000\n" 
+"CF020000F1940310B78500D0020000D1020000D3020000\n" 
+"D4020000D5020000D6020000D7020000D8020000DA0200\n" 
+"00DB020000DC020000DD020000DE020000E0020000E102\n" 
+"0000E2020000E3020000E4020000E5020000E6020000E8\n" 
+"020000E9020000EA020000EB020000EC020000ED020000\n" 
+"EE020000F0020000F1020000F2020000F3020000F40200\n" 
+"00F5020000F6020000F7020000F8020000FA020000FB02\n" 
+"0000FC020000FD020000FE020000FF0200000003000001\n" 
+"0300000203000003030000050300000603000007030000\n" 
+"08030000090300000A0300000B0300000C0300000D0300\n" 
+"000E0300000F0300001003000011030000130300001403\n" 
+"000015030000160300001703000018030000190300001A\n" 
+"0300001B0300001C0300001D0300001E0300001F030000\n" 
+"200300002103000022030000230300002403000090420C\n" 
+"D141EA030C50EA4C0C07D0994205D14FF4001C1CEB410F\n" 
+"38BF8942704710EE101A10EE902AB0EEC00AC80F490052\n" 
+"00F0EEE00A28BF0C3011F1807F38BF12F1807F0CD28A42\n" 
+"38BF80F00400124214D034BF80EE800A80EE200A06F0E8\n" 
+"BE11F1807F08BF80F0040098BF12F1807F08D88A4214BF\n" 
+"00224FF07E5200EE102A06F0D6BE6FF0004100EE101A70\n" 
+"47000010EE101A4FF07E5C01EE90CAC80F31F0004122D0\n" 
+"00EE101AB1F17E5F13D871EEC00ADFF838C031EE801A61\n" 
+"EE200AF1EEE00A614586BF80F0040080EE800A80EE200A\n" 
+"06F0ADBE490011F1807F9CBF6FF0004100EE101A7BF681\n" 
+"AE7047F404353F0349044A096801B91146801A40187047\n" 
+"CCD28800C02D880010B5DFF8F8440020206000F0FCFA60\n" 
+"6105206060012010BDDFF8E004002101600120704770B5\n" 
+"2DED048B84B00C4600210391029101910091DFF8C05401\n" 
+"2C07D1296090ED008AD0ED018A90ED029A7BE069684A1E\n" 
+"68692B6893421DDA1E22591C09B2FFF7E9F985ED020A1E\n" 
+"222868411C09B26869FFF7FEF985ED040A1E222868411C\n" 
+"09B26869FFF713FA85ED030A2868401C00EE100A49E018\n" 
+"D11E2209B2FFF7CBF985ED020A1E22696809B26869FFF7\n" 
+"E1F985ED040A1E22696809B26869FFF7F7F985ED030A95\n" 
+"ED010A2FE01E2209B2FFF7A2F906461E2200216869FFF7\n" 
+"9CF995ED020AD6ED000A30EE600AD0ED000A30EE200A85\n" 
+"ED020A95ED040AD6ED010A30EE600AD0ED010A30EE200A\n" 
+"85ED040A95ED030AD6ED020A30EE600AD0ED020A30EE20\n" 
+"0A85ED030A95ED010AB8EEC00AD5ED020A80EE808AD5ED\n" 
+"040AC0EE808AD5ED030A80EE809AB0EE491AF0EE680AB0\n" 
+"EE480AF19403A0BA850001A903A800F022F80022B0EE49\n" 
+"1AF0EE680AB0EE480A00A902A800F0BCF82868401C2860\n" 
+"00F039FA039981610199C1610299016200994162022C02\n" 
+"D0012100F034FA012004B0BDEC048B70BD38B52DED068B\n" 
+"04460D46B0EE40AAF0EE608AB0EE418AB5EE408AF1EE10\n" 
+"FA40D5F1EE480AFFF73CFA9FEDBF9B10EE100ADDF7BCFE\n" 
+"53EC192BDDF7E6FDDDF7DEFE00EE100A00F02AF9BDEEC0\n" 
+"0A84ED000A2AEE0A0A08EE080A10EE100ADDF7A6FE41EC\n" 
+"100BEEF796FF51EC100BDDF7C6FE00EE900AB1EE680AFF\n" 
+"F712FA10EE100ADDF794FE53EC192BDDF7BEFDDDF7B6FE\n" 
+"00EE100A00F002F9BDEEC00A85ED000A50E0B5EE408AF1\n" 
+"EE10FA4BDDF0EE480AB1EE4A0AFFF7F4F99FED9B9B10EE\n" 
+"100ADDF774FE53EC192BDDF79EFD0022984BEEF7ECFEDD\n" 
+"F792FE00EE100A00F0DEF8BDEEC00A84ED000A2AEE0A0A\n" 
+"08EE080A10EE100ADDF75AFE41EC100BEEF74AFF51EC10\n" 
+"0BDDF77AFE00EE900AB1EE680AFFF7C6F910EE100ADDF7\n" 
+"48FE53EC192BDDF772FD0022834BEEF7C0FEDDF766FE00\n" 
+"EE100A00F0B2F8B1EE400ABDEEC00A85ED000ABDEC068B\n" 
+"31BD38B52DED048B04460D46F0EE408AB0EE609AB0EE41\n" 
+"8AB5EE409AF1EE10FA18D5F1EE490AFFF797F910EE100A\n" 
+"DDF719FE6F4A784BDDF743FDDDF73BFE00EE100A00F087\n" 
+"F8B1EE400ABDEEC00A84ED000A20E0B5EE409AF1EE10FA\n" 
+"1BDBB1EE680AFFF779F910EE100ADDF7FBFD604A694BDD\n" 
+"F725FD00225C4BEEF773FEDDF719FE00EE100A00F065F8\n" 
+"B1EE400ABDEEC00A84ED000AB5EE408AF1EE10FA28D528\n" 
+"EEA80A09EE090A10EE100ADDF7DAFD41EC100BEEF7CAFE\n" 
+"51EC100BDDF7FAFD00EE900AB0EE480AFFF746F910EE10\n" 
+"0ADDF7C8FD464A504BDDF7F2FCDDF7EAFD00EE100A00F0\n" 
+"36F8BDEEC00A85ED000A2CE0B5EE408AF1EE10FA27DD28\n" 
+"EEA80A09EE090A10EE100ADDF7ACFD41EC100BEEF79CFE\n" 
+"51EC100BDDF7CCFD00EE900AB0EE480AFFF718F910EE10\n" 
+"0ADDF79AFD2F4A394BDDF7C4FCDDF7BCFD00EE100A00F0\n" 
+"08F8BDEEC00A85ED000ABDEC048B31BD0000DFED270A9F\n" 
+"ED271AB4EE410AF1EE10FA09DBB4EE600AF1EE10FA04D5\n" 
+"DFED220A30EE200A7047B4EE600AF1EE10FA0BDBDFED1E\n" 
+"0AB4EE600AF1EE10FA04D5DFED1C0A30EE200A7047DFED\n" 
+"1A0ADFED1A1AB4EE610AF1EE10FA09DBB4EE600AF1EE10\n" 
+"FA04D5DFED150A30EE200A7047B4EE600AF1EE10FA08DB\n" 
+"DFED130AB4EE600AF1EE10FA01D530EE010A7047E6C163\n" 
+"1ADCA54C4000806640008066C0E6C1631AFFFF06C40000\n" 
+"34C4F1940330BE850000003444FFFF33C30000B4430100\n" 
+"0744010034430000B4C344C38800DCA54C400100344410\n" 
+"B500F081F806F05DFCFFF775FD454C4422002104F10C00\n" 
+"DCF7ABFC0A2200212046DCF7A6FC0A2200213F48DCF7A1\n" 
+"FC0C22002104F15400DCF79BFC3B4C4FF4B67200212046\n" 
+"DCF794FC1E20208010BD06F038BC80B506F069FCBDE801\n" 
+"40FFF757BD3148F9F762BC10B42F482D491CC81CC10C38\n" 
+"0021418010BC704710B50446FEF7DCFE2088401C2080B4\n" 
+"F9021080B2884200DB2180012010BD38B5214C256D04F1\n" 
+"54012046FFF7E9FF1E2204F154011E48FEF714FF012104\n" 
+"F15400FFF72EFDA80705D5002104F1540006F031FC04E0\n" 
+"012104F1540006F02BFC002104F10C00BDE8344007E012\n" 
+"4870470E49CA6822EA0000C86070470268114301607047\n" 
+"0B4870470C49086070470A480068002101604160816043\n" 
+"F6FF71C1600161416101210176704748C58800A8C58800\n" 
+"B4C5880054C5880020C7880010B590B014000022049290\n" 
+"ED010AB8EEC00AD1ED020AF8EEE00A20EE200AD0ED020A\n" 
+"F8EEE00A91ED011AB8EEC11A00EEC10A8DED050A90ED02\n" 
+"0AB8EEC00AD1ED000AF8EEE00A20EE200AD0ED000AF8EE\n" 
+"E00A91ED021AB8EEC11A00EEC10A8DED060A90ED000AB8\n" 
+"EEC00AD1ED010AF8EEE00A20EE200AD0ED010AF8EEE00A\n" 
+"91ED001AB8EEC11A00EEC10A8DED070A0CAA04A9200000\n" 
+"F0E3F808A9200000F034FA00AA08A90CA800F0DAF89DED\n" 
+"020AB5EE400AF1EE10FA09D19DED010AB5EE400AF1EE10\n" 
+"FA02D19FED550A07E0DDED010A9DED020AFFF700FCB1EE\n" 
+"400A10B010BD0021002305E050F82320521302FB02115B\n" 
+"1C032BF7DB0800704781FB0001400F40EAC10049177047\n" 
+"81FB0001800F40EA8100891770472DE9F04104000D0016\n" 
+"0029682068FFF7F0FF070069686068FFF7EBFF8046A968\n" 
+"A068FFF7E6FFB7EB08010F1AE968E068FFF7DFFF381A30\n" 
+"6069682068FFF7D9FF070029686068FFF7D4FF8046E968\n" 
+"A068FFF7CFFF18EB07014718A968E068FFF7C8FF381A70\n" 
+"60A9682068FFF7C2FF0700E9686068FFF7BDFF80462968\n" 
+"A068FFF7B8FFB7EB080147186968E068FFF7B1FFC019B0\n" 
+"60E9682068FFF7ABFF0700A9686068FFF7A6FF80466968\n" 
+"A068FFF7A1FF18EB07010F1A2968E068FFF79AFFC019F0\n" 
+"60BDE8F08110B403680C68E318136043684C68E3185360\n" 
+"83688C68E3189360C068C9680818D06010BC704702680A\n" 
+"60426852424A60826852428A60C0684042C86070470000\n" 
+"0000000030B591B004001500002000900C2201A8D8F718\n" 
+"FCF19403C0C185000CAA00A92000FFF76CFF08A92000FF\n" 
+"F7DEFF04AA08A90CA8FFF763FF0C2205A92800D8F705FC\n" 
+"11B030BD90ED000AD1ED000A20EE200AD0ED010A91ED01\n" 
+"1A00EEC10AD0ED020A91ED021A00EEC10AD0ED030A91ED\n" 
+"031A00EEC10A82ED000A90ED000AD1ED010A20EE200AD0\n" 
+"ED010A91ED001A00EE810AD0ED020A91ED031A00EE810A\n" 
+"D0ED030A91ED021A00EEC10A82ED010A90ED000AD1ED02\n" 
+"0A20EE200AD0ED010A91ED031A00EEC10AD0ED020A91ED\n" 
+"001A00EE810AD0ED030A91ED011A00EE810A82ED020A90\n" 
+"ED000AD1ED030A20EE200AD0ED010A91ED021A00EE810A\n" 
+"D0ED020A91ED011A00EEC10AD0ED030A91ED001A00EE81\n" 
+"0A82ED030A704790ED000AD1ED000A30EE200A82ED000A\n" 
+"90ED010AD1ED010A30EE200A82ED010A90ED020AD1ED02\n" 
+"0A30EE200A82ED020A90ED030AD1ED030A30EE200A82ED\n" 
+"030A704700009FED410ADFED400A90ED001AD0ED001A21\n" 
+"EE211AD0ED011A90ED012A01EE821AD0ED021A90ED022A\n" 
+"01EE821AD0ED031A90ED032A01EE821AB0EE410AB0EE00\n" 
+"1AB4EE410AF1EE10FA3CD5F6EE000A60EE200A20EE801A\n" 
+"F7EE081A41EE401A21EE800A20EE801AF7EE081A41EE40\n" 
+"1A21EE800A20EE801AF7EE081A41EE401A21EE800A60EE\n" 
+"800AB7EE081A00EEC01A21EE000AD0ED000A60EE800AC0\n" 
+"ED000AD0ED010A60EE800AC0ED010AD0ED020A60EE800A\n" 
+"C0ED020AD0ED030A20EE800A80ED030A08E05FF07E5101\n" 
+"6000214160002181600021C16090ED000AD0ED000A20EE\n" 
+"200AD0ED010A90ED011A00EE810AD0ED020A90ED021A00\n" 
+"EE810AD0ED030A90ED031A00EE810A70470000000010B5\n" 
+"040094ED000AD4ED000A20EE200AD4ED010A94ED011A00\n" 
+"EE810AD4ED020A94ED021A00EE810AD4ED030A94ED031A\n" 
+"00EE810A05F0A0F9B5EE400AF1EE10FA18D0D4ED000AC0\n" 
+"EE800AC4ED000AD4ED010AC0EE800AC4ED010AD4ED020A\n" 
+"C0EE800AC4ED020AD4ED030A80EE800A84ED030A08E05F\n" 
+"F07E502060002060600020A0600020E06010BD02680A60\n" 
+"90ED010AB1EE400A81ED010A90ED020AB1EE400A81ED02\n" 
+"0A90ED030AB1EE400A81ED030A704710B52DED068B84B0\n" 
+"0C0090ED000A90ED018AD0ED028A90ED039AD0ED040AD0\n" 
+"ED059A90ED06AAD0ED07AA90ED081AF7EE001A70EE211A\n" 
+"71EEA01A71EE811AB1EE002AC1EE821ACDED001AF7EE00\n" 
+"1A70EE211A71EEE01A71EEC11AB1EE002AC1EE821ACDED\n" 
+"011AF7EE001A71EEC01A71EEA01A71EEC11AB1EE002AC1\n" 
+"EE821ACDED021AF7EE001A31EEC00A30EE600A30EE010A\n" 
+"F1940350C58500F1EE000A80EE200A8DED030A9DED000A\n" 
+"B5EE400AF1EE10FA01D5002000909DED010AB5EE400AF1\n" 
+"EE10FA01D5002001909DED020AB5EE400AF1EE10FA01D5\n" 
+"002002909DED030AB5EE400AF1EE10FA01D50020039000\n" 
+"98DDF777F941EC100BEEF767FA51EC100BDDF797F90090\n" 
+"0198DDF76BF941EC100BEEF75BFA51EC100BDDF78BF901\n" 
+"900298DDF75FF941EC100BEEF74FFA51EC100BDDF77FF9\n" 
+"02900398DDF753F941EC100BEEF743FA51EC100BDDF773\n" 
+"F903909DED000ADDED010AB4EE600AF1EE10FA38DB9DED\n" 
+"000ADDED020AB4EE600AF1EE10FA2FDB9DED000ADDED03\n" 
+"0AB4EE600AF1EE10FA26DB0098009039EEEA0ADDED000A\n" 
+"B1EE001A60EE810A80EE200A8DED010A3AEE680ADDED00\n" 
+"0AB1EE001A60EE810A80EE200A8DED020A38EE490ADDED\n" 
+"000AB1EE001A60EE810A80EE200A8DED030AC4E09DED01\n" 
+"0ADDED000AB4EE600AF1EE10FA38DB9DED010ADDED020A\n" 
+"B4EE600AF1EE10FA2FDB9DED010ADDED030AB4EE600AF1\n" 
+"EE10FA26DB39EEEA0ADDED010AB1EE001A60EE810A80EE\n" 
+"200A8DED000A0198019038EE090ADDED010AB1EE001A60\n" 
+"EE810A80EE200A8DED020A3AEE280ADDED010AB1EE001A\n" 
+"60EE810A80EE200A8DED030A82E09DED020ADDED000AB4\n" 
+"EE600AF1EE10FA38DB9DED020ADDED010AB4EE600AF1EE\n" 
+"10FA2FDB9DED020ADDED030AB4EE600AF1EE10FA26DB3A\n" 
+"EE680ADDED020AB1EE001A60EE810A80EE200A8DED000A\n" 
+"38EE090ADDED020AB1EE001A60EE810A80EE200A8DED01\n" 
+"0A0298029039EEAA0ADDED020AB1EE001A60EE810A80EE\n" 
+"200A8DED030A40E09DED030ADDED000AB4EE600AF1EE10\n" 
+"FA37DB9DED030ADDED010AB4EE600AF1EE10FA2EDB9DED\n" 
+"030ADDED020AB4EE600AF1EE10FA25DB38EE490ADDED03\n" 
+"0AB1EE001A60EE810A80EE200A8DED000A3AEE280ADDED\n" 
+"030AB1EE001A60EE810A80EE200A8DED010A39EEAA0ADD\n" 
+"ED030AB1EE001A60EE810A80EE200A8DED020A03980390\n" 
+"9DED000ABEEEC10A84ED000A9DED010ABEEEC10A84ED01\n" 
+"0A9DED020ABEEEC10A84ED020A9DED030ABEEEC10A84ED\n" 
+"030A04B0BDEC068B10BD70B504000D0061686068FFF717\n" 
+"FC060021682068FFF712FC8019B0F180402860A1686068\n" 
+"FFF70AFC06002168E068FFF705FC301A6860E1686068FF\n" 
+"F7FFFB06002168A068FFF7FAFB8019A860A1686068FFF7\n" 
+"F4FB06002168E068FFF7EFFB8019E860A168A068FFF7E9\n" 
+"FB060021682068FFF7E4FB8019B0F180402861E168A068\n" 
+"FFF7DCFB060021686068FFF7D7FB301A6861E1686068F1\n" 
+"9403E0C88500FFF7D1FB06002168A068FFF7CCFB301AA8\n" 
+"61E168A068FFF7C6FB060021686068FFF7C1FB8019E861\n" 
+"E168E068FFF7BBFB060021682068FFF7B6FB8019B0F180\n" 
+"40286270BD02160A7002144A7002128A70C87008007047\n" 
+"0000DFED0C0AB4EE600AF1EE10FA04DBDFED0A0A30EE20\n" 
+"0A0BE0DFED080AB4EE600AF1EE10FA04D5DFED060A30EE\n" 
+"200AFFE770470000DB0F4940DB0FC9C0DA0F49C0DB0FC9\n" 
+"4090F90010012901DB00201EE090F90010002901D50420\n" 
+"18E090F90110012901DB012012E090F90110002901D505\n" 
+"200CE090F90210012901DB022006E090F90200002801D5\n" 
+"062000E0072080B2704738B504002000FFF7D4FF0500E0\n" 
+"1CFFF7D0FF55EAC005A01DFFF7CBFF55EA8015280080B2\n" 
+"32BD00220A6000224A6000228A600022CA6000220A6100\n" 
+"224A6100228A610022CA6100220A62420702D55FF0FF32\n" 
+"00E0012280B210F0030341F82320820602D55FF0FF3200\n" 
+"E00122C0F3C1039BB211EB8303DA60C20502D55FF0FF32\n" 
+"00E00122C0F3811080B211EB800082617047F8B504000D\n" 
+"0016001F00600702D55FF0FF3000E001202900A4B214F0\n" 
+"030256F8222000FB02F0FFF707FB3860A00602D55FF0FF\n" 
+"3000E001202900C4F3C10292B256F8222000FB02F0FFF7\n" 
+"F6FA7860E00502D55FF0FF3000E001202900C4F3811292\n" 
+"B256F8222000FB02F0FFF7E5FAB860F1BD30B58DB00C00\n" 
+"150000210BE050F8212000EE102AB8EEC00A04AA12EB81\n" 
+"0282ED000A491C0929F1DB00A904A8FFF7E0FC2A0000A9\n" 
+"2000FFF7CDFA0DB030BD10B40022026000224260002205\n" 
+"E010EB820351F822401C61521C052AF7DB10BC704780ED\n" 
+"090A80ED0A0AD0ED060AB7EE001A70EE810A90ED071A70\n" 
+"EE810A80EE200A80ED000A01684160704780ED090AD0ED\n" 
+"060A90ED001A90ED090A00EEC10AD0ED070A90ED011A00\n" 
+"EEC10AD0ED040A90ED001AF0EE401A40EE811AD0ED050A\n" 
+"90ED011A40EE811AC0ED0A1AD0ED0A0A90ED081A60EE81\n" 
+"0AC0ED0A0A0168416080ED000A90ED0A0A70472DE9F843\n" 
+"04000D001600002712E055F82810032000FB087054F820\n" 
+"00FFF75FFA10EB090918F10108B8F1030FEFDB46F82790\n" 
+"7F1C032F04DA5FF000095FF00008F2E7BDE8F18338B504\n" 
+"000D009FED2C0AD4ED000AF8EEE00A94ED001AB8EEC11A\n" 
+"DFED281A40EEC11AD4ED010AF8EEE00A94ED011AB8EEC1\n" 
+"1A40EEC11AD4ED020AF8EEE00A94ED021AB8EEC11A40EE\n" 
+"C11AF5EE401AF1EE10FA02D59FED180A1FE094ED000AF8\n" 
+"EEC00A94ED000AB8EEC01A9FED140A00EEC10AD4EDF194\n" 
+"0370CC8500010AF8EEE00A94ED011AB8EEC11A00EEC10A\n" 
+"D4ED020AF8EEE00A94ED021AB8EEC11A00EEC10A04F075\n" 
+"FDBDEEC00A85ED000A206868606068A860A068E8600020\n" 
+"32BD0000000000000000805D820707D010F8012B11F801\n" 
+"3BBAB19A42F6D014E002680B689A42A2F1013301BF9343\n" 
+"13F0803F50F8042F51F8043FF3D010F8012B11F8013B0A\n" 
+"B19A42F8D0D01A70470000704780B505F086F805F07EFF\n" 
+"002809D005F07AFF23231D4A1D49FFF7F1FF05F073FF20\n" 
+"E0FAF7BFFE002809D0FAF7BBFE2623164A1649FFF7E3FF\n" 
+"FAF7B4FE12E004F0E0FF002809D004F0DCFF28230F4A0F\n" 
+"49FFF7D5FF04F0D5FF04E0012005F0B7F80100002002BD\n" 
+"80B505F068FF002809D005F064FF4723064A0549FFF7C0\n" 
+"FF05F05DFF00E0002002BD00000C6B86001C6B8600486B\n" 
+"8600704700B510EE100ADCF77AFD0022DFF8403ADCF7A3\n" 
+"FC05F05FFFDFF8302AC2E9140100BDDFF8242AD2E91201\n" 
+"7047DFF81C1AD0E90E23C1E91223DFF8100A0121816570\n" 
+"470121026BD20501D400201AE0DFF8042AD2F88820DFF8\n" 
+"FC391B689A4201DA00200FE0D0F88000C0050AD5DFF8E8\n" 
+"09D0F8E801DFF8E0295268904203DB51F0040108007047\n" 
+"0020FCE73EB50400002519E0DFF8C00910EBC502D2E904\n" 
+"01DFF8B429D2F86022E1F77AF9DFF8A82912EB8502D2F8\n" 
+"98201204D3178018594100A941F825006D1C032DE3DBDF\n" 
+"F88C0906F0A8F90198002801D4019801E0019840420099\n" 
+"002901D4009901E000994942884207DA0098002801D400\n" 
+"9809E00098404206E00198002801D4019801E001984042\n" 
+"0299002901D4029901E002994942814206DB0298002801\n" 
+"D4029801E002984042616AFFF7E2F8B0F5481F05DBDFF8\n" 
+"1809052180F8381291E00198DFF8FC18C96A401A002805\n" 
+"D40198DFF8F018C96A401A04E0DFF8E408C06A0199401A\n" 
+"0099DFF8D828926A891A002905D40099DFF8CC28926A89\n" 
+"1A04E0DFF8C018896A009A891A884212DA0098DFF8B018\n" 
+"896A401A002805D40098DFF8A418896A451A17E0DFF898\n" 
+"08806A0099451A11E00198DFF88C18C96A401A002805D4\n" 
+"0198DFF87C18C96A451A04E0DFF87408C06A0199451A02\n" 
+"98DFF86818096B401A002805D40298DFF85818096B401A\n" 
+"04E0DFF85008006B0299401AA84211DB0298DFF8401809\n" 
+"6B401A002805D40298DFF83018096B451A04E0DFF82808\n" 
+"006B0299451A616A2800FFF764F80500022004F056FDDF\n" 
+"F81808D0F86402854206DA032100A8FAF7F0FF2000FFF7\n" 
+"ECFEDFF8F40700998162DFF8EC070199C162DFF8F19403\n" 
+"00D08500E4070299016337BD30B4D0E92623D0E9284510\n" 
+"1B73EB050130BC7047016EC26E891A426E036FD21A8A42\n" 
+"02DB416E026F891A826E436FD21A8A4202DB816E406F09\n" 
+"1A0800704780B510220021DFF8A807DBF7B9FB10220021\n" 
+"DFF8A007DBF7B3FB10220021DFF89807DBF7ADFB102200\n" 
+"21DFF89007DBF7A7FB01BD80B5DFF8740706F09CF8DFF8\n" 
+"800706F098F801BD30B4DFF85C27D2F89822002A04D1DF\n" 
+"F85027C2E9A4010CE0DFF84827D2E9A4458D4206DC01DB\n" 
+"844203D2DFF83427C2E9A401DFF82C07D0F89802401CDF\n" 
+"F82417C1F8980230BC704730B4DFF81427D2F8A822002A\n" 
+"04D1DFF80827C2E9A8010CE0DFF80027D2E9A8458D4206\n" 
+"DC01DB844203D2DFF8EC26C2E9A801DFF8E406D0F8A802\n" 
+"401CDFF8DC16C1F8A80230BC704730B4DFF8CC26D2F878\n" 
+"22002A04D1DFF8C026C2E99C010CE0DFF8B826D2E99C45\n" 
+"A94206DC01DBA04203D2DFF8A426C2E99C01DFF89C06D0\n" 
+"F87802401CDFF89416C1F8780230BC704730B4DFF88426\n" 
+"D2F88822002A04D1DFF87826C2E9A0010CE0DFF87026D2\n" 
+"E9A045A94206DC01DBA04203D2DFF85C26C2E9A001DFF8\n" 
+"5406D0F88802401CDFF84C16C1F8880230BC7047F8B505\n" 
+"000124DFF83C06FFF730FFDFF82416096C814205DA0024\n" 
+"FFF757FF2000C0B24FE02800FFF702FE0500002D03D102\n" 
+"242000C0B245E0680723D5DFF81C0605F085FD000D40EA\n" 
+"01300915DFF8F425C2E98A01DFF8E005D0E90423DFF8E4\n" 
+"05D0E98A67BB4209DC01DBB24206D20024DFF8D025D2E9\n" 
+"8A01FFF79EFFDFF8DC0505F0C5FFE8071BD5DFF8BC0505\n" 
+"F05FFDDFF8B025C2E99001DFF89C05D0E90623DFF8A005\n" 
+"D0E99067BB4209DC01DBB24206D20024DFF88C25D2E990\n" 
+"01FFF758FF2000C0B2F2BD1FB5040094F8300010F0C000\n" 
+"C02804D1DFF86C15201D05F0D2FE94F8800010F0C000C0\n" 
+"2805D1DFF86C1514F1540005F0C6FE94F8D00010F0C000\n" 
+"C02814D1002007E014EB4001B1F9A41001AA42F8201040\n" 
+"1C0328F5DBDFF840050090D4E9362301A805F012FF1AE0\n" 
+"94F8D00010F06000602814D1002008E014EB8001D1F8B8\n" 
+"10891301AA42F82010401C0328F4DBDFF808050090D4E9\n" 
+"362301A805F0F6FE1FBDD0B504000020216BC90501D400\n" 
+"209BE194F8301011F05001402900D1012094F8801011F0\n" 
+"5001402900D1012094F8D01011F05001402900D1012000\n" 
+"280BD0FFF792FEDFF898040021C0F83012DFF88C040021\n" 
+"80F83812DFF88404D0F85802E16A88423FD0DFF87404E1\n" 
+"6AC0F85812DFF86C04D0F858020A280FDADFF8F1940390\n" 
+"D385005404406B4000DFF858140860DFF84404806B401C\n" 
+"DFF84814C1F85C020CE0DFF83404406BDFF838140860DF\n" 
+"F83404DFF82414896BC0F85C12DFF82404D0F85C02D0F1\n" 
+"1000DFF81814C1F86002DFF810044FF48041C0F8641264\n" 
+"20DFF8F813896B8840DFF8F0130864DFF8F403D0F86802\n" 
+"E16F884227D0DFF8E803E16FC0F86812DFF8DC03D0F868\n" 
+"020A280FDADFF8C403406B4000DFF8C8134860DFF8B803\n" 
+"806B401CDFF8BC13C1F86C020CE0DFF8B003DFF8A01349\n" 
+"6B4160DFF8A403DFF89413896BC0F86C122000FFF70CFF\n" 
+"DFF8900390F8380200280CD002283ED01CD3042800F098\n" 
+"8044D3062800F0DC80C0F0CD80EBE0DFF86C03D0F83002\n" 
+"DFF86413421CC1F830220A2806DBFFF7EFFDDFF8500301\n" 
+"2180F83812D8E0DFF84403D0F8B800012819D12000FFF7\n" 
+"7AFEC0B2002805D1DFF82C03052180F8381207E0C0B201\n" 
+"2804D1DFF81C03022180F83812DFF82C0305F03CFEFFF7\n" 
+"AFFDB7E0DFF80403032180F838122000FFF795FCFFF7BE\n" 
+"FDACE02000FFF754FEC0B2002804D1B848052180F83812\n" 
+"45E0C0B2012842D1D4F8D000C0052DD505F0B6FE002829\n" 
+"D1B74805F02FFEC117AE4AC2E98801AA48D0E90223AB48\n" 
+"D0E98867BB4207DC01DBB24204D2A748052180F8381219\n" 
+"E0AC48FFF754FDA04AD2E90867B94211DB01DCB0420ED3\n" 
+"9F48042180F838122000FFF753FC06E09B48042180F838\n" 
+"122000FFF74BFC984AD2E98A01FFF79FFD954AD2E99001\n" 
+"FFF776FD5AE0D4F8D000C0051AD505F072FE002816D195\n" 
+"4805F0EBFDC1178C4AC2E988018848D0E902238948D0E9\n" 
+"8867BB4207DC01DBB24204D28548052180F838123BE020\n" 
+"00FFF7E3FDC0B2002804D18048052180F838120FE0C0B2\n" 
+"01280CD12000FFF710FC7A4AD2E98A01FFF764FD784AD2\n" 
+"E99001FFF73BFD1FE07548062180F83812012004F02CFA\n" 
+"FFF727FD774805F095FD12E02000FFF7BAFDC0B2012804\n" 
+"D16B48022180F8381207E0C0B2002804D1FFF713FD6D48\n" 
+"05F081FD0020D0BD10B504002100634805F09EFD210066\n" 
+"4805F09AFD2100654805F096FD01205C49D1F890108840\n" 
+"5749486356485949D1F89010816364205349896B884052\n" 
+"49086410BD0000000080B54FF42C7200215048DBF78AF8\n" 
+"602200214B48DBF785F8524805F07DFD4C4805F07AFD50\n" 
+"4805F077FD454841F288320023C0E90623424814220023\n" 
+"C0E902233F4864220023C0E904233D48474A0023C0E908\n" 
+"233D480121C0F834124020FFF7ACFF3A480021C0F85812\n" 
+"9FED370AFFF742FB334800218165002002BDF1940320D7\n" 
+"850080B5394805F04AFD324805F047FD374805F044FD2E\n" 
+"480121C0F834122C48012180F8381200220321012004F0\n" 
+"B3FB072264213048FAF734FE02BD10B5FFF7A2FF040000\n" 
+"2C08D040F279232B4A2B492000FFF712FB20000FE02948\n" 
+"05F04DFA0400002C08D04FF41F73234A24492000FFF703\n" 
+"FB200000E0002010BDF8B5050000241048806D012819D1\n" 
+"286BC00516D5FFF705FBD5E90E23101A73EB0101002904\n" 
+"DC01DB002801D2002408E0064AD2E91467B94203DC01DB\n" 
+"B04200D201242000F2BD00000000C84A880065CDCD4100\n" 
+"0096441848880028488800884A8800A84A8800984A8800\n" 
+"B84A880088498800D84888000008AF2F15D38500546A86\n" 
+"006C6A860021D7850000B5801A9941DFF8C02A0023CAF7\n" 
+"80FD00BD000070B52DED028B98B005000E0008EE102A1C\n" 
+"0095ED000AB8EEC00AD5ED000AF8EEE00A20EE200AD5ED\n" 
+"010AF8EEE00A95ED011AB8EEC11A00EE810AD5ED020AF8\n" 
+"EEE00A95ED021AB8EEC11A00EE810A03F07DFFF0EE408A\n" 
+"18EE900ADCF701F831F000410122DFF8503AE8F76AFF00\n" 
+"F2BC8096ED000AB8EEC00ADFEDBC0A80EE200A8DED040A\n" 
+"96ED010AB8EEC00ADFEDB70A80EE200A8DED050A96ED02\n" 
+"0AB8EEC00ADFEDB20A80EE200A8DED060A96ED030AB8EE\n" 
+"C00ADFEDAD0A80EE200A8DED070A0020089095ED000AB8\n" 
+"EEC00A80EE280A8DED090A95ED010AB8EEC00A80EE280A\n" 
+"8DED0A0A95ED020AB8EEC00A80EE280A8DED0B0A14AA08\n" 
+"A904A8FEF75AFC10A904A8FEF7ABFD00AA10A914A8FEF7\n" 
+"51FC9DED020ADDED020A20EE200ADDED010A9DED011A00\n" 
+"EE810ADFEDC80AB4EE600AF1EE10FA02D59FEDC60A15E0\n" 
+"DFEDC50AB4EE600AF1EE10FA02D59FEDC30A0BE0DFEDC2\n" 
+"0AB4EE600AF1EE10FA02D59FEDC00A01E0B6EE000AF8EE\n" 
+"C80A9FEDBD1AC0EE810A20EE800A00200C90DDED020A60\n" 
+"EE800ACDED0D0ADDED010AF1EE600A20EE800A8DED0E0A\n" 
+"00200F9000AA04A90CA8FEF706FC00AA04A900A8FEF76A\n" 
+"FC00A8FEF70FFD9DED000ABEEEC10A84ED000A9DED010A\n" 
+"BEEEC10A84ED010A9DED020ABEEEC10A84ED020A9DED03\n" 
+"0ABEEEC10A84ED030A04E0102231002000D6F7E3FF18B0\n" 
+"BDEC028B70BD000030B52DED028B81B005000C0095ED00\n" 
+"0AB8EEC00AD5ED000AF8EEE00A20EE200AD5ED010AF8EE\n" 
+"E00A95ED011AB8EEC11A00EE810AD5ED020AF8EEE00A95\n" 
+"ED021AB8EEC11A00EE810A03F082FEDFED870AB4EE600A\n" 
+"F1EE10FA09D55FF080402060002060600020A0600020E0\n" 
+"607CE0D5ED020AF8EEE00AC0EE808AB7EEF19403B0DA85\n" 
+"00000A30EE680AB5EE400AF1EE10FA04DDB7EE000A30EE\n" 
+"680A01E09FED760AF0EE000A80EE200A03F055FEB0EE40\n" 
+"8AB7EE000A38EE800AB5EE400AF1EE10FA04DDB7EE000A\n" 
+"38EE800A01E09FED6A0AF0EE000A80EE200A03F03DFEF0\n" 
+"EE408A95ED000AB8EEC00AD5ED000AF8EEE00A20EE200A\n" 
+"D5ED010AF8EEE00A95ED011AB8EEC11A00EE810A03F025\n" 
+"FEDFED590AB4EE600AF1EE10FA09D55FF0804020600020\n" 
+"60600020A0600020E0601FE0FEEEC18AC4ED008AD5ED01\n" 
+"0AF8EEE00AC0EE800A60EE880AFEEEC10AC4ED010AD5ED\n" 
+"000AF8EEE00A80EE800AF1EE480A20EE800ABEEEC10A84\n" 
+"ED020A0020E06001B0BDEC028B30BD0000804E38B50400\n" 
+"0D0094ED000AB8EEC00AD4ED000AF8EEE00A20EE200AD4\n" 
+"ED010AF8EEE00A94ED011AB8EEC11A00EE810AD4ED020A\n" 
+"F8EEE00A94ED021AB8EEC11A00EE810AD4ED030AF8EEE0\n" 
+"0A94ED031AB8EEC11A00EE810AB5EE400AF1EE10FA09D8\n" 
+"5FF080402860002068600020A8600020E86031E003F0B2\n" 
+"FDF7EE000A80EE800ADFEDB60A20EE200AD4ED000AF8EE\n" 
+"E00A60EE800AFDEEE00AC5ED000AD4ED010AF8EEE00A60\n" 
+"EE800AFDEEE00AC5ED010AD4ED020AF8EEE00A60EE800A\n" 
+"FDEEE00AC5ED020AD4ED030AF8EEE00A20EE800ABDEEC0\n" 
+"0A85ED030A31BD000017B75139A69BC43B0AD7233CCDCC\n" 
+"CC3DCDCC4C3E9A99993E0014CD470100803F0000000010\n" 
+"B52DED048B8EB0040094F85401400640F11F81D4F84401\n" 
+"DFF830160968401A002800D54042D4F86C11DFF8242651\n" 
+"43814204DADFF814060321816303E0DFF80C0602218163\n" 
+"D4F85401800506D5DFF8FC1514F5A270FFF753FFFAE0D4\n" 
+"F85401800411D5DFF8E4055FF080418164DFF8DC050021\n" 
+"C164DFF8D40500210165DFF8CC0500214165C6E0002103\n" 
+"A8FAF785F90C22DFF8C01503A804F0D2F8002807D1D4F8\n" 
+"6801DFF8A415896D884200F0B38000AB03AA616A206880\n" 
+"B2FEF77BFE9DED000AB8EEC00ADDED000AF8EEE00A20EE\n" 
+"200ADDED010AF8EEE00A9DED011AB8EEC11A00EE810ADD\n" 
+"ED020AF8EEE00A9DED021AB8EEC11A00EE810A03F0EFFC\n" 
+"B0EE408A9FED570A28EE000ADFED560A80EE200ADFED55\n" 
+"0A80EE200AD4ED5A0AF8EEE00A20EE800ADFED510A80EE\n" 
+"200AF0EE000AC0EE208AB0EE680A05F068FAB0EE409AB0\n" 
+"EE680A05F065FAF0EE000AB4EE608AF1EE10FA11D5DFF8\n" 
+"F0045FF080418164DFF8E8040021C164DFF8E004002101\n" 
+"65DFF8D8040021416541E0BEEEC19ADFF8C80480ED129A\n" 
+"F1EE400A9FED331A60EE810A9DED001AF1940340DE8500\n" 
+"B8EEC11A60EE810AC0EE880AFDEEE00ADFF8A004C0ED13\n" 
+"0AF1EE400A9FED291A60EE810A9DED011AB8EEC11A60EE\n" 
+"810AC0EE880AFDEEE00ADFF87804C0ED140AB1EE400ADF\n" 
+"ED1F0A20EE200ADDED020AF8EEE00A20EE200A80EE080A\n" 
+"BDEEC00ADFF8500480ED150A0C2203A9DFF84C04D6F79E\n" 
+"FDDFF83C04D4F86811816506AADFF83C1414F5A270FEF7\n" 
+"EBF80AAA06A9DFF83004FEF7E5F8DFF8281414F5A270FE\n" 
+"F755F906AA0AA9DFF80804FEF7D9F8DFF8001406A8FFF7\n" 
+"57FE0EB0BDEC048B10BD00000000804EDB0F4940000034\n" 
+"43000080470024744970B592B0040001250026DFF8D003\n" 
+"006F400503D5D4F85401C00408D4DFF8BC03006F400504\n" 
+"D5D4F85401002800D1012694F8800010F05000402808D0\n" 
+"DFF89C03C06E00282DD094F88000400629D5002E10D1DF\n" 
+"F8A01314F16800FFF75FFDD4F85401C00510D5DFF88413\n" 
+"14F5A270FEF702F909E0DFF8641314F5A270FFF708FEDF\n" 
+"F85803042181630AA9DFF85003FEF7F2F8DFF85C230AA9\n" 
+"DFF85803FEF775F821E094F8540110F05000402808D0DF\n" 
+"F82C03C06E002816D094F85401400612D5DFF8281314F5\n" 
+"A270FEF7D5F8D4F88000C00508D50AA9C148FEF7CDF8C4\n" 
+"4A0AA9C448FEF752F8002E06D1D4F85401C00551D52000\n" 
+"FFF74CFEBE4AB849BC48FEF744F894F88000400640F1EB\n" 
+"80206B10F48070D4F8541111F480710843002800F0D080\n" 
+"00AA14F16801B248FEF7B3F8A26EA36EE06EE16E81FB00\n" 
+"01C3FB0201226F236FC3FB020102291BDB02DCB0F1804F\n" 
+"17D303A803F061FE039A039B0498049981FB0001C3FB02\n" 
+"01059A059BC3FB0201022906DB02DCB0F1804F02D39748\n" 
+"042181639648806B042807D1002593484FF4966141671F\n" 
+"E00020A4E09048806B022803D08E48806B032808D1A06F\n" 
+"41F2883190FBF1F5012D0EDA01250CE08748806B012808\n" 
+"D1A06F41F2883190FBF1F5012D00DA01256D008148406F\n" 
+"01280CDB7F48806B042808DA7D48406F022195FBF1F140\n" 
+"1A7A494867ED007848806B032800D06D007D4845430020\n" 
+"0690D4E95823D4E95601FFF77BFBB0F57A7F04DD6F48D4\n" 
+"E95623C0E91E236D48D0E91E23D4E95601FFF76CFBB0F5\n" 
+"7A7F22DD0198002801D4019801E00198404244F6216188\n" 
+"4209DA0298002801D4029801E002984042B0F5FA6F0DDD\n" 
+"290001988002FDF787FF07902900009840428002FDF780\n" 
+"FF089006E0019880020790009840428002089000200990\n" 
+"0EAA574906A8FDF777FF554A0EA95448FDF7D5FF534952\n" 
+"48FFF7F1FC0AA94A48FDF7E0FF4E4AF19403D0E185000A\n" 
+"A94E48FDF765FF0FE04C4BA26F4B4914F16800FFF728FB\n" 
+"0AA94248FDF7CFFF454A0AA94548FDF754FF002012B070\n" 
+"BD10B50400D4F8540110F41060B0F5106F01D1002037E0\n" 
+"D4F85401C00508D4206BC00503D5D4F88000C00501D400\n" 
+"202AE0D4F8540110F4A060B0F5A06F09D1102214F5A271\n" 
+"3148D6F7D3FB2A480121C16605E02000FFF760FE264800\n" 
+"21C1662548D4F854110167D4F85401C00505D4D4E90E23\n" 
+"264803F08CFB04E0D4E95623234803F086FB002010BD80\n" 
+"B5802200211948DAF799FA17485FF08041016115485FF0\n" 
+"8041016013485FF08041016211485FF08041C1630F485F\n" 
+"F08041C1650D4800214167002002BD80B5FFF7DEFF0028\n" 
+"03D10FF2090004F0A0FC02BD000080B51322C8210C48FA\n" 
+"F76CF802BD000040420F000000D040284B880071981C00\n" 
+"644B8800704B8800844B8800484B8800384B8800A69BC4\n" 
+"0001E2850030B589B00400150006AA00A8FAF745F903A8\n" 
+"03F0D8FB00980399B0EBA130009001980499B0EBA13001\n" 
+"9002980599B0EBA13002909DED000AB8EEC00ADFED6D0A\n" 
+"20EE200A84ED000A9DED010AB8EEC00ADFED680A20EE20\n" 
+"0A84ED010A9DED020AB8EEC00ADFED630A20EE200A84ED\n" 
+"020A2900DFF81404D0F8DC00F9F77DFC09B030BD000030\n" 
+"B585B00400150000A803F0F0FB0098002818D49DED010A\n" 
+"BAEEC10A84ED000A9DED020ABAEEC10A84ED010A9DED03\n" 
+"0ABAEEC10A84ED020A9DED000ABAEEC10A84ED030A1FE0\n" 
+"0198404200EE100ABAEEC10A84ED000A0298404200EE10\n" 
+"0ABAEEC10A84ED010A0398404200EE100ABAEEC10A84ED\n" 
+"020A0098404200EE100ABAEEC10A84ED030A5FF07E5020\n" 
+"612900DFF87403D0F8DC00F9F72DFC05B030BD30B58BB0\n" 
+"0500140004AA06A8FAF7B4F804A900A803F08DFB009800\n" 
+"2818D49DED010ABAEEC10A85ED000A9DED020ABAEEC10A\n" 
+"85ED010A9DED030ABAEEC10A85ED020A9DED000ABAEEC1\n" 
+"0A85ED030A1FE00198404200EE100ABAEEC10A85ED000A\n" 
+"0298404200EE100ABAEEC10A85ED010A0398404200EE10\n" 
+"0ABAEEC10A85ED020A0098404200EE100ABAEEC10A85ED\n" 
+"030A00202861DFF8D002006CC00407D5DFF8C402006CC0\n" 
+"F3801010F0010006E0DFF8B402406BC0F3801010F00100\n" 
+"2100DFF8A402D0F8EC00F9F73FFC0BB030BD000000000A\n" 
+"E81C397FB5040000254FF47A76A34AA349A44803F080FB\n" 
+"9E48216B01639D48D4F8801041639B48D4F8D010816399\n" 
+"48D4F854110164206BC00501D5E66A0025D4F88000C005\n" 
+"04D5E06FB04201DAE66F0125D4F8F1940360E58500D000\n" 
+"C00506D5D4F8CC00B04202DAD4F8CC600225D4F85401C0\n" 
+"0506D5D4F86C01B04202DAD4F86C610325D4E91001D4E9\n" 
+"0E23994207D1904205D18148006B30F040007F490863D4\n" 
+"E92401D4E92223994207D1904205D17A48406B30F04000\n" 
+"78494863D4E93801D4E93623994207D1904205D1734880\n" 
+"6B30F0400071498863D4E95801D4E95623994207D19042\n" 
+"05D16C48006C30F040006A490864D4F85401C00509D5D4\n" 
+"F88000D4F8D0100840C0050DD45FF0FF350AE0206BD4F8\n" 
+"80100840D4F8D0100840C00501D45FF0FF35002D05D002\n" 
+"2D1ED00FD3032D29D036E0206BC0F3801010F001005649\n" 
+"C8635548D4E90E23C0E902232CE0D4F88000C0F3801010\n" 
+"F001004F49C8634E48D4E92223C0E902231EE0D4F8D000\n" 
+"C0F3801010F001004849C8634748D4E93623C0E9022310\n" 
+"E0D4F85401C0F3801010F001004149C8634048D4E95623\n" 
+"C0E9022302E03D480021C163404A00A901A8F9F796FF39\n" 
+"489DF900100160002510E094F8D00040060BD501A850F8\n" 
+"250000EE100ABAEEC80A304810EB850080ED320A6D1C03\n" 
+"2D31DA94F8D00010F0500040280DD101A850F8250000EE\n" 
+"100AB8EEC00A2C20254900FB05104430FEF70DFA94F8D0\n" 
+"0010F0C000C028D2D101A850F8250000EE100AB8EEC00A\n" 
+"2C201B4900FB05104430FEF70EFADFED190A20EE200A16\n" 
+"4810EB850080ED320ACAE7002004B070BD80B537224FF4\n" 
+"61711648F9F72EFE02BD10B5F82200210C48DAF72AF800\n" 
+"2408E011492C20094A00FB04204430FEF7C3F9641C032C\n" 
+"F4DB002010BD80B5FFF7E8FF0A4804F03EFA02BD0000E8\n" 
+"43880000008037F0438800EC4388000844880000448800\n" 
+"11E58500C427880057E78500F0B52DED048B85B004000E\n" 
+"0017001D003C22DFF8681BDFF8680B03F042FF5022DFF8\n" 
+"601BDFF8600B03F03BFF0C223900DFF8580BD6F7FAF810\n" 
+"223100DFF8500BD6F7F4F89FEDBA8ADFF8340BD0F85C01\n" 
+"401CDFF82C1BC1F85C01DFF8240BD0F85C01072804DBDF\n" 
+"F8180B0621C0F85C11DFF80C0BD0F85C01D0F106062DE0\n" 
+"00AADFF8FC0A10EB061010F148012800FDF7CAFC00AA0C\n" 
+"20DFF8E81A00FB061114F1B800FDF791FBF0EE408A18EE\n" 
+"900ADBF711F831F0004141EC190B18EE100ADBF709F831\n" 
+"F0004102000B0051EC190BE7F759FF01D2B0EE688A761C\n" 
+"062ECFDB18EE100ADAF7F7FF41EC100B05B0BDEC048BF0\n" 
+"BD00002DE9F0432DED048B81B0B0EE409AF0EE609A0C00\n" 
+"160000279FED898B406B002801D4012700E000274822DF\n" 
+"F8741ADFF8740A03F0BCFEDFF8F19403F0E88500540A80\n" 
+"ED429B00250EE051EC180BDFF8442A12EBC502D2F8C430\n" 
+"D2F8C020ECF743F841EC180B6D1C0A2DEEDB51EC180B00\n" 
+"22DFF83C3AE8F7B5F8DFF8182AC2E94401322C36DBDFF8\n" 
+"0C0AC821C0F8541151EC190B0022DFF81C3AE8F7A3F880\n" 
+"4689463000DAF7B6FE42464B46DAF7CAFE0022DFF8043A\n" 
+"E8F795F841EC180BB4F57A7F56DB51EC190B0022DFF8F0\n" 
+"39E8F789F804000D003000DAF79CFE22002B00DAF7B0FE\n" 
+"0022DFF8D039E8F77BF841EC180B3EE0DFF89C09D0F854\n" 
+"0141F2883196FBF1F1052202FB1100DFF88819C1F85401\n" 
+"DFF88009D0F85401002804D5DFF874090021C0F8541151\n" 
+"EC190B0022DFF89039E8F757F804000D003000DAF76AFE\n" 
+"22002B00DAF77EFE0022DFF86C39E8F749F841EC180BDF\n" 
+"F83C09D0F85401002807D1DFF83009D0F86001012801D1\n" 
+"9FED368BDFF82009D0F85801002803D0B0EE498AF0EE69\n" 
+"8ADFF83C09864203D1B0EE498AF0EE698A53EC182B0020\n" 
+"0021FCF7F9FE07D0DFF8EC08DFF8E81891ED440B80ED46\n" 
+"0BDFF8DC08D0F81C11D0F81801DFF8D028D2F81431D2F8\n" 
+"1021E7F74AFF31F00041DFF8F028DFF8F038E7F774FE26\n" 
+"D8DFF8B008D0E92E2300200021FCF7D1FE1DD1012F1BD1\n" 
+"DFF89808C821C0F8541151EC190B0022DFF8C438E7F7EA\n" 
+"FF04000D003000DAF7FDFD22002B00DAF711FE0022DFF8\n" 
+"9038E7F7DCFF41EC180BB0EE480AF0EE680A01B0BDEC04\n" 
+"8BBDE8F08300000024744900000000000000002DE9F043\n" 
+"2DED088BB3B006009FEDE38B002104A80022002300241C\n" 
+"C00C38DFF82408D0F89C01000521D5D6F8540100051DD4\n" 
+"20A8DFF84C181022CBF7E9FBD6E93623DFF8440802F023\n" 
+"FFD6E9362320A802F05CFF10220021DFF83008D9F733FE\n" 
+"DFF8E0075FF08041C0F8A810F0E2002711E0DFF8D00710\n" 
+"EB870090ED2A0AB8EEC00ADFEDC50A80EE200A18A810EB\n" 
+"870080ED000A7F1C042FEBDB16A912A802F0E5FF9DED12\n" 
+"0AB8EEC00ADFEDBB0A80EE200A8DED1C0A9DED130AB8EE\n" 
+"C00ADFEDB60A80EE200A8DED1D0A9DED140AB8EEC00ADF\n" 
+"EDB10A80EE200A8DED1E0A9DED150AB8EEC00ADFEDAC0A\n" 
+"80EE200A8DED1F0A16A900A802F0B9FF03990198FDF742\n" 
+"FA040000990298FDF73DFA201A079003990298FDF737FA\n" 
+"040000990198FDF732FA0019089003990398FDF72CFA04\n" 
+"0000990098FDF727FA0019B0F18040099018AB07AA1CA9\n" 
+"3000FFF7BCFDB0EE408AF0EE608A9FED91BB002722E016\n" 
+"EB87008069DAF72FFD0022DFF82437E7F712FF04000D00\n" 
+"16EB87008069DAF723FD2200F1940380EC85002B00DAF7\n" 
+"37FD0022DFF80437E7F702FF02000B0051EC1B0BEBF77E\n" 
+"FE41EC1B0B7F1C032FDADB51EC1B0BDAF71DFE00EE100A\n" 
+"02F067FD10EE100ADAF7EDFD41EC1B0B9FEDCD9B0020DF\n" 
+"F8C81653EC192BE7F720FE41EC1A0B51EC1B0BDFF86426\n" 
+"D2F87C31D2F87821E7F714FEDFF85426C2E9600151EC1A\n" 
+"0BDFF84826D2F88431D2F88021DAF7F6FCDFF83826C2E9\n" 
+"6201DFF83006D0F87C11D0F87801DFF82426D2F88C31D2\n" 
+"F88821EBF736FEDFF81426C2E95E01DFF80C06D0F88411\n" 
+"D0F88001DFF80026D2F88C31D2F88821DAF7D2FCDFF8F0\n" 
+"25D2F89431D2F89021EBF71CFE53EC192BDAF7C6FCDFF8\n" 
+"D825C2E964010025DFF8D005D0F89411D0F89001DFF818\n" 
+"26DFF81836E7F7DFFC27D2DFF810060068002809D1DFF8\n" 
+"080601210160D6E90E01DFF80026C2E90001DFF8F40500\n" 
+"68012817D1D6E90E01DFF8E825D2E90089B0EB080071EB\n" 
+"0901DFF8DC250023994208DB01DC904205D3012503E0DF\n" 
+"F8C00500210160002404F055FA284300280FD0DFF85005\n" 
+"D0F85801002809D1D6F8D400022805DA3000FEF7C8FC01\n" 
+"2800D1012416F11800FDF72AF98109DFF82805D0F86801\n" 
+"DFF85025904204DADFF81805D0F8682101E0DFF83C25B0\n" 
+"EE480AF0EE680A3000FFF739FDDFF8FC0480ED2E0BDFF8\n" 
+"F404D0F8BC10D0F8B800DFF8E824D2F82431D2F82021DA\n" 
+"F745FCDFF8D824C2E92E0128A900A8FDF7E8FC12AA00A9\n" 
+"DFF80805FDF70EF9DFF8001500A8FDF77FF90020002100\n" 
+"271CE00000804E0000000000000000032303FB072328AD\n" 
+"55F8233012AD15EB82056D68C5FB0301521C032AF0DB04\n" 
+"AA800F40EA8100891742F827007F1C032F03DA00200021\n" 
+"0022EFE7DFF86404D0F85801002801D000200690069840\n" 
+"4200EE100AB8EEC00ADFED980A80EE200A04F0D8F98DED\n" 
+"0E0A00200F90002010900698404200EE100AB8EEC00ADF\n" 
+"ED8F0A80EE200A04F0C9F98DED110A5FF40030DFF81014\n" 
+"D1F8681141F2883291FBF2F100EE101ADDED060AF8EEE0\n" 
+"0A9FED841AC0EE810AB8EEC01AC0EE810A5FF4803190FB\n" 
+"F1F101EE101AB8EEC11AC0EE810AFDEEE00A10EE901A5F\n" 
+"F4803290FBF2F000FB01F00690DDED060AF8EEE00A9FED\n" 
+"731A60EE810AB8EEC00A20EE800ABDEEC00A8DED060A9D\n" 
+"ED060AB8EEC00ADFED6A0A80EE200A04F07DF98DED0A0A\n" 
+"00200B9000200C909DED060AB8EEC00ADFED620A80EE20\n" 
+"0A04F070F98DED0D0A24AA0EA918A8FDF700F90EAA0AA9\n" 
+"24A8FDF7FBF8002717E0CDCCCCCCCCCCEC3F18A80EA951\n" 
+"F8271040F8271018A810EBF1940310F08500870090ED00\n" 
+"0ABEEEC10ADFF8280310EB870080ED2A0A7F1C042FE9DB\n" 
+"9FEDB59BC448D0F85801002805D0C248C14991ED2E0B80\n" 
+"ED5C0B51EC190BBE4AD2F87431D2F87021DAF74EFB8046\n" 
+"89460020DFF8341353EC192BE7F755FCB64AD2F8BC30D2\n" 
+"F8B820DAF73EFB02000B0040464946EBF78AFCAF4AC2E9\n" 
+"2E01AE48AD4991ED2E0B80ED5C0B002C04D0AA48D0F858\n" 
+"01002845D0A748D0F8BC10D0F8B80000225FF08043E7F7\n" 
+"EEFCDAF716FC00EE100A04F0F9F88DED0A0A00200B9000\n" 
+"200C909C48D0F8BC10D0F8B80000225FF08043E7F7D8FC\n" 
+"DAF700FC00EE100A04F0E6F88DED0D0A0EAA0AA918A8FD\n" 
+"F776F80EA8FDF7FEF800270CE00EA810EB870090ED000A\n" 
+"BEEEC10A8B4810EB870080ED2A0A7F1C042FF0DBD6E936\n" 
+"23984802F06EFC8448D0F8580100280AD082480021C0F8\n" 
+"5C118048D0F85801401E7E49C1F8580133B0BDEC088BBD\n" 
+"E8F08300000000804EE102374710B50400D4F8540110F4\n" 
+"1060B0F5106F0CD1102214F5A2718248D5F737FC7048D4\n" 
+"F85411C0F89C11002078E094F8D000C00607D46A480321\n" 
+"C0F8581168480021C0F85C11D4F8D000C00509D4644803\n" 
+"21C0F8581162480021C0F85C1100205EE0D4F85401C005\n" 
+"10D4206BC00503D5D4F88000C00509D45A480321C0F858\n" 
+"1158480021C0F85C11002049E05548D0F86C0100280ED0\n" 
+"D4E93601D4E93823801A99414FF47A720023C9F793F84D\n" 
+"49C1F868012CE0D4F8C80044F62061884205DB4848D4F8\n" 
+"C810C0F8681120E04548D0F86401D4F8C81008184249C1\n" 
+"F864014048D0F8640144F62061884206DA3D48D0F85801\n" 
+"002801D1002012E039483949D1F86411C0F86811364800\n" 
+"21C0F864112000FFF745FC3348D4F85411C0F89C110020\n" 
+"10BD80B54FF4D07200212D48D9F79AFA2C485FF08041C0\n" 
+"F8341129485FF08041C0F8A81000220023384802F0AEFB\n" 
+"24484FF47A71C0F8541122480022354BC0E948231F4800\n" 
+"220023C0E95C231D4800220023C0E95E231A4800220023\n" 
+"C0E96023184800220023C0E96223154800220023C0E964\n" 
+"2301BD1249C1F86001002070470000333333333333E33F\n" 
+"0D49C1F86C010020704780B504224FF416712348F9F74E\n" 
+"F802BD80B5FFF7ACFF0020FFF7E3FF0020FFF7EAFF1D48\n" 
+"03F06DFC02BD7C46880070468800C8468800B8468800AC\n" 
+"4688000847880038478800304788000000244000005940\n" 
+"0088B3400000394000C0624040420F001383C0CAA145B6\n" 
+"3F00007940446A8600A4478800184788000000F0400000\n" 
+"F03F7B14AE47E17A843FF19403A0F38500945D89001048\n" 
+"8800012F685965F1850017F3850080B541F288020100DF\n" 
+"F8A805D5F716FB002002BD80B541F28802DFF89815D5F7\n" 
+"0DFB002002BD10B586B0040000A901A8F8F72DFE04A802\n" 
+"F03FFB022838D0D4F808010099421ADFF8700500780028\n" 
+"01D0002A01D100203DE0019BDFF86005006880FB020100\n" 
+"0C40EA01400914C0180190029BDFF84C05006880FB0201\n" 
+"000C40EA01400914C0180290039BDFF83805006880FB02\n" 
+"01000C40EA01400914C0180390032101A8F8F7B6FD2000\n" 
+"FDF7B2FC10E0606B03280DD1F8F7DDFD002809D0009901\n" 
+"A800F021F8002801D0002002E000F0C5F8002006B010BD\n" 
+"DFF8EC241268DFF8EC341B68D21A322392FBF3F2DFF8DC\n" 
+"341B68C01A90FBF2F008700878322801D3202000E00020\n" 
+"7047F8B504000D0000A92800FFF7E1FF002801D020209D\n" 
+"E09DF800005421DFF88C2401FB002090F85060F6B2052E\n" 
+"4FD110229DF800005421DFF8743401FB003010F140019D\n" 
+"F800005423DFF8607403FB00703C3003F0AAF810229DF8\n" 
+"00005421DFF84C3401FB0030011D9DF800005423DFF83C\n" 
+"7403FB007003F098F810229DF800005421DFF8283401FB\n" 
+"003010F118019DF800005423DFF8147403FB0070143003\n" 
+"F084F810229DF800005421DFF8003401FB003010F12C01\n" 
+"9DF800005423DFF8EC7303FB0070283003F070F8761E12\n" 
+"E09DF800005421DFF8D42301FB002090F85000401C9DF8\n" 
+"00105422DFF8C03302FB013181F85000F6B29DF8000054\n" 
+"21DFF8AC2301FB002010EB8600C563F6B29DF800005421\n" 
+"DFF8982301FB0020216840F82610F6B29DF800005421DF\n" 
+"F8802301FB002010EB860061684161F6B29DF800005421\n" 
+"DFF8682301FB002010EB8600A16881620020F2BD2DE9F0\n" 
+"4F93B000208DF800000CA81821CAF7A6FD002406A81821\n" 
+"CAF7A1FD00200021CDE904015FF0000A5FF0000B002000\n" 
+"2100220023CDE9022300220023DFF834532D78012D40F0\n" 
+"4981DFF82003D0F800C0DFF81C030068002500E06D1C32\n" 
+"2D80F2DD805421DFF8F02201FB052191F850100029F2D0\n" 
+"002112E05422DFF8D83202FB053212EB8102D26B904207\n" 
+"DA5420DFF8C42200FB052010EB8100C06B491C5422DFF8\n" 
+"B43202FB053292F850209142D4DA9DF80020531C8DF800\n" 
+"30DDE90C675422DFF8943202FB053252F82120D317B218\n" 
+"7B41CDE90C23DDE90E675422DFF8783202FB053212EB81\n" 
+"025269D317B2187B41CDE90E23DDE910675422964B02FB\n" 
+"053212EB8102926AD317B2187B41CDE910235422904B02\n" 
+"FB053212EB8102D26BF1940330F785001419DDE9066754\n" 
+"228B4B02FB053252F821205423DFF820E203FB05E313EB\n" 
+"8103DB6B83FB0223120C42EA03421B14B2187B41CDE906\n" 
+"23DDE9086754227E4B02FB053212EB810252695423DFF8\n" 
+"ECE103FB05E313EB8103DB6B83FB0223120C42EA03421B\n" 
+"14B2187B41CDE90823DDE90A675422714B02FB053212EB\n" 
+"8102926A5423DFF8B4E103FB05E313EB8103DB6B83FB02\n" 
+"23120C42EA03421B14B2187B41CDE90A23DDE904675422\n" 
+"634B02FB053212EB8102D26B5423DFF880E103FB05E313\n" 
+"EB8103DB6B83FB0223120C42EA03421B14B2187B41CDE9\n" 
+"04235422574B02FB053212EB8102D26B6245BFF637AF54\n" 
+"22524B02FB053212EB8102D2F83CC03FE7B0EB0C005549\n" 
+"0968884201DA002057E000254FE09DF80000002106AA12\n" 
+"EBC502D2E90067A6FB00AB06FB01BB07FB00BB0CA810EB\n" 
+"C500D0E900672200E317A2FB060102FB071103FB061100\n" 
+"0C40EA014009149DF800600027DDE90423A2FB068902FB\n" 
+"079903FB0699CDE9028984FB0423120C42EA03421B14DD\n" 
+"E90267B61A9F41002F01D1002E14D0BAEB00007BEB0101\n" 
+"090441EA10410004DDE90267B21A77EB0303C8F730FD41\n" 
+"F26801234A12EB850288506D1C032DADDB214801210170\n" 
+"002013B0BDE8F08F80B541F2880200211A48D8F762FF1F\n" 
+"48214901601C485FF4AA0101601D485FF4A02101601A48\n" 
+"01210170002002BD80B5082296211A48F8F749FD02BD80\n" 
+"B5FFF7DFFF4FF49A7341F288021649164802F072FA0028\n" 
+"01D001200AE0144803F062F9002801D0012003E00C4801\n" 
+"210170002002BD0000985D89000C6E8900006E8900046E\n" 
+"8900086E8900146E8900106E89001C6E8900186E890000\n" 
+"00D8FF0D6E8900DBF38500C9F38500B5F3850023F98500\n" 
+"7047002010E0C0B2DFF8181B11EB8001DFF8142B0A62C0\n" 
+"B2DFF8081B11EB8001DFF8082BCA62401CC0B20328EBD3\n" 
+"7047002040E0C0B2DFF8EC1A11EB800191ED080AC0B2DF\n" 
+"F8DC1A11EB8001D1ED2D0AB4EE600AF1EE10FA0CD5C0B2\n" 
+"DFF8C41A11EB8001C0B2DFF8BC2A12EB8002D2F8B4200A\n" 
+"62C0B2DFF8AC1A11EB800191ED2D0AC0B2DFF89C1A11EB\n" 
+"8001D1ED0B0AB4EE600AF1EE10FA0CD5C0B2DFF8841A11\n" 
+"EB8001C0B2DFF87C2A12EB8002D2F8B420CA62401CC0B2\n" 
+"0328BBD37047E0B5B0F9542012040092B0F95620120401\n" 
+"92B0F9582012040292009ADFF8483A5B6ED21A0092019A\n" 
+"DFF83C3A9B6ED21A0192029ADFF8303ADB6ED21A02920B\n" 
+"0000AA416F006D80B2FCF7D7FF07BD10B58EB001A902A8\n" 
+"F8F7D4FA0C2202A9F19403C0FA8500DFF81C0AD4F794FF\n" 
+"F8F721F8040021000298FCF7DFFA00EE100AB8EEC00ADF\n" 
+"EDA50A20EE200ADFEDA40A80EE200A8DED050A21000398\n" 
+"FCF7CDFA00EE100AB8EEC00ADFED9C0A20EE200ADFED9B\n" 
+"0A80EE200A8DED060A21000498FCF7BBFA00EE100AB8EE\n" 
+"C00ADFED930A20EE200ADFED920A80EE200A8DED070A08\n" 
+"AA00A90AA8FEF7EAFB0EB010BD10B58CB003A900220023\n" 
+"00241CC10C39DFF86C19D1F89410012904D1DFF8601900\n" 
+"22C1F8942006A9FFF777FF09A801F0B2FF06980999B0EB\n" 
+"A130069007980A99B0EBA130079008980B99B0EBA13008\n" 
+"906022DFF84819DFF8480902F060FD0C2206A9DFF84009\n" 
+"D4F71FFF00A802F0BDF86022DFF83419DFF8340902F050\n" 
+"FD0C2200A9DFF82C09D4F70FFF00205FE0DFF8F018D1F8\n" 
+"D415491CDFF8E428C2F8D41503990C22DFF8D83802FB00\n" 
+"32D2F8F424092392FBF3F2511803910499032202FB00F2\n" 
+"DFF8BC3813EB8202D2F8F824092392FBF3F25118049105\n" 
+"99032202FB00F2DFF89C3813EB8202D2F8FC24092392FB\n" 
+"F3F25118059100990C22DFF8843802FB0032D2F8602509\n" 
+"2392FBF3F2511800910199032202FB00F2DFF8643813EB\n" 
+"8202D2F86425092392FBF3F2511801910299032202FB00\n" 
+"F2DFF8483813EB8202D2F86825092392FBF3F251180291\n" 
+"401C09289DDB0398002801D4039801E003984042039004\n" 
+"98002801D4049801E00498404204900598002801D40598\n" 
+"01E00598404205900098002801D4009801E00098404200\n" 
+"900198002801D4019801E00198404201900298002801D4\n" 
+"029801E002984042029000200399009A914200DA401C04\n" 
+"99019A914200DA401C0599029A914200DA401CDFF8AC17\n" 
+"D1F8D415092900DB401C042821D1DFF8980790F8CC0503\n" 
+"2811D3DFF88C07D0F8D025DFF8840790F8CC15DFF8480C\n" 
+"F8F716F9012001F0E6FFFFF7ABFE09E001F0DCFF002805\n" 
+"D1DFF8600790F8CC05F8F7FFF80CB010BD00007A440000\n" 
+"804730B50400DFF84407002180F8CC15DFF83C070021C0\n" 
+"F8D015002536E0EDB2DFF82C0710EB850090ED330ADFF8\n" 
+"2007D0ED0F0AB4EE600AF1EE10FA25DBDFF80C07D0E914\n" 
+"230020DFF8541CEAF7E7FD31F00041DFF8342CDFF8483C\n" 
+"E6F7B7FC13D2DFF8E80690F8CC05401CDFF8E01681F8CC\n" 
+"05DFF8D806D0F8D0050121A9400843DFF8C816C1F8D005\n" 
+"6D1CEDB2032DC5D3DFF8B80690F8CC05002823D000250D\n" 
+"E0EDB214EBC50041680068E6F749FDEDB2DFF8981611EB\n" 
+"850148666D1CEDB2032DEED3DFF888060021C0F8D415DF\n" 
+"F87C0680680428F1940350FE850006DADFF87406DFF870\n" 
+"1691F8CC158160DFF8640690F8CC05032825D1DFF85806\n" 
+"90ED030ADFED660AB4EE600AF1EE10FA1AD5DFF84406D0\n" 
+"E914230020DFF8881BEAF782FD31F00041DFF8682BDFF8\n" 
+"7C3BE6F752FC08D2DFF820068068032803D1DFF8140604\n" 
+"218160DFF80C0690ED040ADFED540AB4EE600AF1EE10FA\n" 
+"25D5DFF8F80590ED030ADFEDCD0AB4EE600AF1EE10FA1A\n" 
+"D5DFF8E005D0E914230020DFF8281BEAF751FD31F00041\n" 
+"DFF8B02BDFF8B03BE6F721FC08D2DFF8BC058068042803\n" 
+"D1DFF8B4050521816030BD38B50400DFF8A405D0F84C06\n" 
+"01286ED1F7EE000AB7EE000ADFF87C1BDFF87C0B03F0C2\n" 
+"F9DFF8782BDFF8781BDFF86C0B03F0FCFB0500002D5AD0\n" 
+"DFF870054068401CDFF868154860616F0C00DFF85C0541\n" 
+"6D006DE6F7A4FC2100FCF78DF800EE100AB8EEC00ADFED\n" 
+"A60A80EE200A10EE100AD9F783FCDFF83425C2E91401DF\n" 
+"F82C05D0F8AC11D0F8A801E6F789FCDFF81C158865DFF8\n" 
+"1405D0F8B411D0F8B001E6F77EFCDFF80415C865DFF800\n" 
+"05D0F8BC11D0F8B801E6F773FCDFF8F0140866DFF8E804\n" 
+"D0F8A411D0F8A0010122DFF8D83AE6F7C3FB0BD8DFED86\n" 
+"0A9FED850ADFF8B81ADFF8B40A03F05EF900E000252800\n" 
+"32BDAF47E13D00007A4390ED040AD0ED030AB4EE600AF1\n" 
+"EE10FA1DD590ED050AD0ED030AB4EE600AF1EE10FA14D5\n" 
+"0021016490ED040AD0ED050AB4EE600AF1EE10FA04DB01\n" 
+"214164022181643FE002214164012181643AE090ED030A\n" 
+"D0ED040AB4EE600AF1EE10FA1DD590ED050AD0ED040AB4\n" 
+"EE600AF1EE10FA14D50121016490ED030AD0ED050AB4EE\n" 
+"600AF1EE10FA04DB002141640221816418E00221416400\n" 
+"21816413E00221016490ED030AD0ED040AB4EE600AF1EE\n" 
+"10FA04DB002141640121816403E0012141640021816470\n" 
+"470021C164002107E0002240F8212010EB810200235362\n" 
+"491C0329F5DB0121416700218167704710B504001420A0\n" 
+"650A202066002084F870002000FFF7E1FF0020606510BD\n" 
+"000010B52DED028B86B003A9FFF798FC9FED388B002426\n" 
+"E003A850F8240000EE100AB8EEC00ADFED340A80EE200A\n" 
+"00A810EB840080ED000A00A810EB840090ED000A00A810\n" 
+"EB8400D0ED000A20EE200A10EE100AD9F78FFB53EC182B\n" 
+"EAF70BFC41EC180B641C032CD6DBB0EE480AF0EE680AEA\n" 
+"F774FCB0EE408AF0EE608A00241FE000A850F82400D9F7\n" 
+"75FB53EC182BE6F76FFCD9F797FB00EE100ADFF8080910\n" 
+"EB8400D0F8D80500EE900A30EE200ADFF8F40810EB8400\n" 
+"00F2D85080EDF19403E0018600000A641C032CDDDBDFF8\n" 
+"DC08D0F82C06401CDFF8D418C1F82C06DFF8CC080121C0\n" 
+"F8541606B0BDEC028B10BDBD74933CCDCCCC3E00000000\n" 
+"000000000000804710B5040000200DE014EB800191ED09\n" 
+"0AB1EE400A14EB800181ED030A002144F82010401C0328\n" 
+"57DA94ED140AB8EEC00A14EB8001D1ED000A80EE800AB5\n" 
+"EE400AF1EE10FA02DBF0EE400A01E0F1EE400A14EB8001\n" 
+"91ED061AB5EE401AF1EE10FA04DB14EB800191ED061A05\n" 
+"E014EB800191ED061AB1EE411A70EEC10A14EB8001C1ED\n" 
+"0C0A14EB800181ED060A94ED0F0AFFEE000A30EE200A14\n" 
+"EB8001D1ED090A14EB800191ED061A00EE201A94ED0F0A\n" 
+"81EE000A14EB800181ED090A14EB800191ED090AB5EE40\n" 
+"0AF1EE10FA9CDB14EB800191ED090A9DE72000FFF78DFE\n" 
+"E06CB0F57A7F02DAE06C401CE064206C94F87010002909\n" 
+"D002291AD010D3042900F08E8045D3052956D09DE00120\n" 
+"60670120A0670020E064012084F8700093E0E06F012804\n" 
+"D1022084F870000020A0678AE014EB800191ED030AD4ED\n" 
+"190AB4EE600AF1EE10FA07DB042084F870000020606700\n" 
+"20A0671BE094ED1A0A14EB8000D0ED030AB4EE600AF1EE\n" 
+"10FA07DB032084F87000012060670120A06708E0052084\n" 
+"F870000020E064012060670120A0675AE014EB800090ED\n" 
+"030AD4ED190AB4EE600AF1EE10FA06DB042084F8700000\n" 
+"2060670020A06747E094ED1A0A14EB8001D1ED030AB4EE\n" 
+"600AF1EE10FA07DB032084F87000012060670120A0671F\n" 
+"E014EB800090ED0C0ADFED330AB4EE600AF1EE10FA0BD5\n" 
+"E06C216E884210DB032084F87000012060670120A06708\n" 
+"E0042084F870000020E064002060670020A06713E094ED\n" 
+"1B0A14EB8000D0ED030AB4EE600AF1EE10FA08DB052084\n" 
+"F870000020E064012060670120A06710BD00B52DED028B\n" 
+"81B008EE100AB8EEC80ADFED170A20EE200ADFED160A80\n" 
+"EE200AF0EE000A80EE200A10EE100AD9F700FA41EC100B\n" 
+"03F0CAFC53EC102B0020DFF82416D9F723F9E6F705FA05\n" 
+"49C1F88400034880ED208A01B0BDEC028B00BD0000C038\n" 
+"880000401CC600401C46CCCC4CBD368D274000247449B8\n" 
+"D28800B83D8800B43D8800CC3D8800243E8800203E8800\n" 
+"383E880070B52DED028B92B0060002A80021002200230E\n" 
+"C00C38B06F44F6206188420ADBB06FDFF8A815D1F88010\n" 
+"884229D0B06FFFF79CFF25E0DFF89405D0F8F004B16F08\n" 
+"18DFF88815C1F8F004DFF88005D0F8F00444F620618842\n" 
+"01DA002015E2B06FDFF86815D1F8F014884205D0DFF85C\n" 
+"05D0F8F004F1940370058600FFF77AFFDFF850050021C0\n" 
+"F8F014DFF84805316BC0F858163000FFF7CBFDDFF83805\n" 
+"D0F82C06DFF83015D1F82816884208DBDFF82C05FFF73B\n" 
+"FEDFF81C050021C0F82C16DFF81005D0F84C06012840F0\n" 
+"E18102A801F0D6FB9DED020ADDED020A20EE200ADDED03\n" 
+"0A9DED031A00EE810ADDED040A9DED041A00EE810A01F0\n" 
+"CAF8DFF8D40480ED030ADFF8CC0490ED030ABEEE410A10\n" 
+"EE100AADF800000020ADF802000020ADF80400DFF8B814\n" 
+"00A802F008FD0CA908A801F0A1FADFF89C04016F0898FB\n" 
+"F72FFD0400DFF88C04416F0998FBF728FD0500DFF88004\n" 
+"816F0A98FBF721FD29194418DFF87004C16F0B98FBF719\n" 
+"FD0419102208A9DFF86C04D4F7C0F900252AE0716FEDB2\n" 
+"16EB4500B0F954000004FBF707FDEDB20EA941F82500ED\n" 
+"B20EA850F8250000EE100AB8EEC00ADFEDBC0A80EE200A\n" 
+"EDB2DFF81C0410EB850080ED050AEDB216EB4500B0F954\n" 
+"000004EDB205A941F825006D1CEDB2032DD1D305A9DFF8\n" 
+"E00302F0AFFEDFF8EC03D0F8B804DFF8E4130968884201\n" 
+"DA00204AE196ED420AB8EEC00ADFEDA50A80EE208ADFF8\n" 
+"C40390ED360AB5EE400AF1EE10FA11D0DFF8B40390ED36\n" 
+"0A38EE400A10EE100AD9F7B9F831F00041D9F7DDF8DFF8\n" 
+"9813C1F8DC00DFF8900380ED368ADFF888038068002803\n" 
+"2804D9001F11D0401E1ED02CE0DFF87003DFF880138163\n" 
+"DFF868035FF07E51C163DFF85C03C82101642BE0DFF854\n" 
+"03DFF868138163DFF84803DFF86013C163DFF840036421\n" 
+"01641CE0DFF83403DFF850138163DFF82C03DFF84C13C1\n" 
+"63DFF82003322101640DE0C648DFF828138163C4485FF0\n" 
+"7E51C163C248C8210164C04800218160C24802F095FB03\n" 
+"F03AFB00EE100ADFED9E0A80EE200AB94880ED040AB022\n" 
+"0021BA48D7F7EBFFB548D0F88400A04280F28180B24890\n" 
+"ED040AB5EE400AF1EE10FA78DDAE4890ED040AAD48D0ED\n" 
+"0E0AB4EE600AF1EE10FA6DD5A9484068A849096C884206\n" 
+"DA3000FFF774FB002815D10020A4E0A24890ED2C0ADFED\n" 
+"990AB4EE600AF1EE10FA09DB3000FFF763FB002801D100\n" 
+"2093E09A480021416000250BE0EDB2974810EB8500EDB2\n" 
+"954911EB85014969C0F8B4106D1CEDB2032DF0D3FFF7A5\n" 
+"F8002514E0EDB28D4810EB850090ED080AEDB28A4810EB\n" 
+"8500D0ED0B0A30EE600AEDB2864810EB850080ED330A6D\n" 
+"1CEDB2032DE7D38048FFF75CFA8048D0F85006012817D1\n" 
+"7E48806BD8F7E1FF0022854BE6F7DBF802000B0014001D\n" 
+"0078480069D8F7D5FF22002B00E5F729FF02D23000FFF7\n" 
+"25F90025F194030009860016E0EDB2704810EB850090ED\n" 
+"260AEDB26D4810EB8500D0ED050A30EE600AB0EEC00AED\n" 
+"B2684810EB850080ED290A6D1CEDB2032DE5D3644890ED\n" 
+"290A6248D0ED2A0A30EE200A6048D0ED2B0A30EE200A5D\n" 
+"4880ED2C0A00250BE0EDB25A4810EB8500EDB2584911EB\n" 
+"85014969C0F898106D1CEDB2032DF0D34FF4D87200214D\n" 
+"48D7F721FF002012B0BDEC028B70BD0000000080472439\n" 
+"880080B54FF4CE6200214948D7F710FF48481021016046\n" 
+"485FF080410167FEF7F7FF4548FFF7A3FB424841490968\n" 
+"C0F828163F485FF08441C0F814163D481E21C0F834163B\n" 
+"484549C0F8401639484449C0F83C1637484349C0F84416\n" 
+"1921374802F0D6FB334800218160002002BD9A99999980\n" 
+"B5012240F252313B48F7F7D5FC02BD0000F0BF9999B93F\n" 
+"80B54FF4CE6201002748D3F7E1FF26480121C0F8941000\n" 
+"2002BD80B522490022C1F894204FF4CE621F49D3F7D1FF\n" 
+"002002BD00000024744910B5FFF79DFF0400002C08D04F\n" 
+"F44073264A27492000FEF799FF200016E0254802F0CEF8\n" 
+"0400002C08D040F203331F4A1F492000FEF78AFF200007\n" 
+"E042F226034FF4CE621C491D4801F0C3F910BD0000CDCC\n" 
+"4C3D9CC420B07268913F503B8800A03988001039880068\n" 
+"3A88000070A740C03888000000D041983E8800003D8800\n" 
+"303988000080BB44000096439A99993F000070423333B3\n" 
+"3F00408F40CDCCCC3ECDCC4C3F3333333FFD0486006059\n" 
+"860084598600090A86003B0A8600210A860000B5801A99\n" 
+"41DFF8F8240023C7F706FC00BD704770B52DED028B94B0\n" 
+"06000C0008EE102A1D0096ED000AB8EEC00AD6ED000AF8\n" 
+"EEE00A20EE200AD6ED010AF8EEE00A96ED011AB8EEC11A\n" 
+"00EE810AD6ED020AF8EEE00A96ED021AB8EEC11A00EE81\n" 
+"0A00F003FEF0EE408A18EE900AD8F787FE31F000410022\n" 
+"0023E5F7F1FD7BD20020049096ED000AB8EEC00A80EE28\n" 
+"0A8DED050A96ED010AB8EEC00A80EE280A8DED060A96ED\n" 
+"020AB8EEC00A80EE280A8DED070A10AA04A92000FBF70A\n" 
+"FB0CA92000FBF75BFC00AA0CA910A8FBF701FB9DED020A\n" 
+"DDED020A20EE200ADDED010A9DED011A00EE810ADFED57\n" 
+"0AB4EE600AF1EE10FA02D59FED550A15E0DFED540AB4EE\n" 
+"600AF1EE10FA02D59FED520A0BE0DFED510AB4EE600AF1\n" 
+"EE10FA02D5B5EE000A01E09FED4D0AF8EEC80A9FEDD91A\n" 
+"C0EE810A20EE800A00200890DDED020A60EE800ACDED09\n" 
+"0ADDED010AF1EE600A20EE800A8DED0A0A00200B9000AA\n" 
+"210008A8FBF7B6FA2A00210000A8FBF71AFB2800FBF7BF\n" 
+"FB07E0F19403900C86002068286060686860A068A860E0\n" 
+"68E86014B0BDEC028B70BD10B588B00400D4F88000C005\n" 
+"01D400204FE000A800F04EFF9DED000AB8EEC00ADFEDCC\n" 
+"0A80EE200A8DED040A9DED010AB8EEC00ADFEDC70A80EE\n" 
+"200A8DED050A9DED020AB8EEC00ADFEDC20A80EE200A8D\n" 
+"ED060A9DED030AB8EEC00ADFEDBD0A80EE200A8DED070A\n" 
+"04ABA26F04A914F16800FFF707FF9DED040ABEEEC10A8D\n" 
+"ED000A9DED050ABEEEC10A8DED010A9DED060ABEEEC10A\n" 
+"8DED020A9DED070ABEEEC10A8DED030AD4E9222300A800\n" 
+"F04CFE002008B010BD000017B75139A69BC43B0AD7233C\n" 
+"8FC2753DCDCC4C3ECDCCCC3E30B52DED028B8BB00400D4\n" 
+"F8D000C00503D42000FFF78CFFFFE094F8800040060DD5\n" 
+"2000FFF784FF0500002D07D091239C4A9D492800FFF7BC\n" 
+"FE2800EDE094F8D000400640F1E88008A900A800F005FF\n" 
+"9DED000AB8EEC00ADFED8A0A80EE200A8DED040A9DED01\n" 
+"0AB8EEC00ADFED850A80EE200A8DED050A9DED020AB8EE\n" 
+"C00ADFED800A80EE200A8DED060A9DED030AB8EEC00ADF\n" 
+"ED7B0A80EE200A8DED070A04AA14F1680114F1B800FBF7\n" 
+"B3F8B0EE408A7E4890ED010A30EE080A7B4880ED010A7A\n" 
+"4890ED010AFBF77AFD774880ED010A764890ED010A7448\n" 
+"D0ED000A30EE600AB0EEC00ADFED680AB4EE600AF1EE10\n" 
+"FA1FDB6D4890ED000A6C48D0ED010AB4EE600AF1EE10FA\n" 
+"0AD5684890ED000ADFED5E0A30EE200A644880ED000A09\n" 
+"E0624890ED000ADFED5A0A30EE200A5F4880ED000A9FED\n" 
+"570AF0EEC80A20EE808A9FED550AB4EE408AF1EE10FA01\n" 
+"DBB6EE008A9FED520AB4EE408AF1EE10FA01D59FED4E8A\n" 
+"D4E93823D4E93601FFF718FE642800DB6420062800DA05\n" 
+"2000EE100AB8EEC00AF2EE040A80EE200A20EE088A4648\n" 
+"90ED010A20EE080AF7EE000A70EEC80A424890ED001A00\n" 
+"EE810A3F4880ED010A3E4840683D4908603C4890ED010A\n" 
+"F0EE000A80EE200A02F0B9F9BEEEC10A8DED000A002001\n" 
+"9000200290334890ED010AF0EE000A80EE200A02F0ABF9\n" 
+"BEEEC10A8DED030AD4E92201D4E93623994205DC01DB90\n" 
+"4202D2D4E9362301E0D4E9222300A800F056FD00200BB0\n" 
+"BDEC028B30BD80B5082200212048D7F710FC002002BD00\n" 
+"000014CD4780B50722FA211C48F7F702FA02BD10B5FFF7\n" 
+"EBFF0400002C07D0F623174A14492000FFF7AAFD20000E\n" 
+"E0154801F01CFE0400002C07D0F923104A0D492000FFF7\n" 
+"9CFD200000E0002010BD00000000804EDC0F4940DB0FC9\n" 
+"40DB0FC9C0295CB73F0100003FCDCCCC3D40420F00A06A\n" 
+"8600F1940320108600BC6A8600206E8900790D8600F06A\n" 
+"8600B10F86000148FAF77DBC0000C42D88002DE9F04104\n" 
+"462DED028B2688626801EB86037608174608464FEA0308\n" 
+"01EB860C03EB86055FEA960E00F0A48091ED000A93ED00\n" 
+"2AD1ED010A91ED021AD1ED031AD3ED012A93ED023AD3ED\n" 
+"033A9CED004ADCED014A9CED025ADCED035A95ED006AD5\n" 
+"ED016A95ED027AD5ED037A30EE028A81ED008A091D30EE\n" 
+"A28A81ED008A091D31EE038A81ED008A091D31EEA38A30\n" 
+"EE420A81ED008A34EE062A8CED002A0CF1040C34EEA62A\n" 
+"8CED002A0CF1040C35EE072A8CED002A0CF1040C35EEA7\n" 
+"2A8CED002A36EE442A97ED004A70EEE20A31EE431A3F1D\n" 
+"76EEE42A37EE453AD7ED004A20EE045A00EEA45A83ED00\n" 
+"5A60EE840A1B1D40EE640A22EE240AC3ED000A02EEC40A\n" 
+"85ED000A2D1D22EEA40A3F1D02EE040A85ED000A091D97\n" 
+"ED000A3F1D71EEE31A1B1DD7ED000A21EE002A01EEA02A\n" 
+"83ED002A61EE801A1B1D41EE601A77EEE53A2D1D23EE20\n" 
+"1AC3ED001A03EEC01A85ED001A2D1D63EEA00A43EE000A\n" 
+"C5ED000A3F1D1B1D2D1D0CF1040CBEF1010E7FF45CAF02\n" 
+"23314602F078FE626831464046BDEC028BBDE8F0410223\n" 
+"02F06EBE2DE9F14F2DED048B86B00088DDF828C004914F\n" 
+"EA500801EB880000EB880202EB8803039002920193051F\n" 
+"DCF80440009492ED000AD1ED000AD0ED005AD3ED012AD0\n" 
+"ED014A93ED005A30EE803A33EE651A30EEC02A33EE253A\n" 
+"92ED010AD1ED010A33EE053A81ED003A70EE803A90ED01\n" 
+"3A73EEE41A33EE833A30EEC04A091DD3ED013A32EE240A\n" 
+"33EE233A30EE620A81ED003A80ED000A74EE650A001D70\n" 
+"EE850A31EE451AC0ED000A161F82ED001A121D71EEE21A\n" 
+"32EE642A32EE222AC2ED001A1F1F83ED002A74EE252A1B\n" 
+"1D07EB880E72EEC52AA4464FEA5808C3ED002A091D001D\n" 
+"121D13F104030CF108040CF11009A8F1020A0CF1180C5F\n" 
+"EA5A0A00F0FC8092ED000AD1ED000AD0ED005A93ED014A\n" 
+"D0ED014A93ED005A30EE803A33EE651A30EEC02A33EE25\n" 
+"3A92ED010AD1ED010A33EE053A81ED003A70EE803A90ED\n" 
+"013A73EEE41A33EE833A091DD3ED013A33EE233A81ED00\n" 
+"3A70EEC02A57F804BC32EE240A03EE10BA32EE642A55F8\n" 
+"04BC30EE440A71EEC41A32EE042A04EE10BA5EF804BCD7\n" 
+"ED006A95ED007ADEED007A96ED008A74EE033A34EE434A\n" 
+"09EE10BA37EE263A56F804BC72EEE50A33EE486A72EEA5\n" 
+"2A09EE90BA33EE083A70EE850A31EE451A72EEC52A33EE\n" 
+"273AA6F1040B37EE665A85ED003A35EE695A9BED003A75\n" 
+"EEF19403B0138600095AAEF1040B33EEE95A33EE833A2D\n" 
+"1FDBED003A33EE233A85ED003A091D94ED003A241D76EE\n" 
+"C76AD4ED003A20EE037A00EEA37A80ED007A60EE830A78\n" 
+"EE678A001D40EE630A78EE844A25EEA30AC0ED000A04EE\n" 
+"C30A86ED000A361F24EEA30A05EE830A86ED000A35EE49\n" 
+"5A99ED000AD9ED010A21EE003A01EEA03A82ED003A61EE\n" 
+"801A36EE676A121D41EE601A26EE401AC2ED001A05EE60\n" 
+"1A87ED001A3F1F66EE200A45EE400AC7ED000A38EEC44A\n" 
+"9CED000ADCED010A22EE001A02EEA01A83ED001A1B1D22\n" 
+"EE801A79EE698A02EE601A78EEA66A83ED001A26EEA01A\n" 
+"04EE401A8EED001AAEF1040E64EE200A46EE800A2D1F24\n" 
+"1D001D361F121D3F1F1B1DCEED000A09F110090CF1180C\n" 
+"AEF1040EBAF1010A7FF404AF92ED000AD1ED000AD1ED01\n" 
+"1AD0ED012AD3ED003A90ED004A30EE801A30EEC00AD2ED\n" 
+"010A31EEA02A31EE445A71EEE00A31EE041AD3ED011A30\n" 
+"EE223A31EE231A72EE625A30EE620A81ED001A33EE613A\n" 
+"75EEE15A30EE210A90ED011AD3ED011A091D32EE011A31\n" 
+"EE211A81ED001A70EEC44A94ED001AD4ED011A74EEA34A\n" 
+"23EE012A04EEA12A80ED002A001D24EE811A03EE611A80\n" 
+"ED001A35EE635A99ED001AD9ED011A25EE012A05EEA12A\n" 
+"101D25EE811A82ED002A05EE611A80ED001A70EE840A9C\n" 
+"ED001ADCED011A70EEE30A20EE012A00EEA12A181D60EE\n" 
+"810A83ED002A40EE610AC0ED000A009A04980423414602\n" 
+"F078FC0A98426803980423414602F071FC0A9842680298\n" 
+"0423414602F06AFC0A984268019806B04146BDEC048B01\n" 
+"B0BDE8F04F042302F05DBC00002DE9F041044616462788\n" 
+"0D469846012E30D1281D002F55D017F0030100F0098090\n" 
+"ED000AB1EE400A80ED000A0830491EF6D1B90800F01E80\n" 
+"90ED000AB1EE400A80ED000A083090ED000AB1EE400A80\n" 
+"ED000A083090ED000AB1EE400A80ED000A083090ED000A\n" 
+"B1EE400A80ED000A0830491EE1D1102F15D0202F18D040\n" 
+"2F1BD0802F0FD0B7F5807F11D0B7F5007F13D0B7F5806F\n" 
+"06D0B7F5006F08D0B7F5805F0AD00FE029462046FFF7D0\n" 
+"FC0AE029462046FFF793FD05E0626801233946284602F0\n" 
+"FAFBB8F1000F04D0A268A189284602F090FE012E59D100\n" 
+"EE107AB8EE400AF7EE000A80EE800A2846002F4ED017F0\n" 
+"03010FD0D0ED000A021D60EE800AC0ED000A101DD2ED00\n" 
+"0A60EEC00AC2ED000A491EEFD1B90839D0D0ED000A021D\n" 
+"60EE800AC0ED000A101DD2ED000A60EEC00AC2ED000A02\n" 
+"1DD0ED000A60EE800AC0ED000A101DD2ED000A60EEC00A\n" 
+"F1940340178600C2ED000A021DD0ED000A60EE800AC0ED\n" 
+"000A101DD2ED000A60EEC00AC2ED000A021DD0ED000A60\n" 
+"EE800AC0ED000A101DD2ED000A60EEC00AC2ED000A491E\n" 
+"C5D1BDE8F081B5EEC00AF1EE10FA02D4B1EEC00A70476F\n" 
+"F0004C00EE10CAF5F748BFD0B514462DED048B534A544B\n" 
+"E4F7E4FF41EC180B1DD89FED529B53EC182B51EC190BD7\n" 
+"F797FF00224F4BE9F7E5F806460F4653EC182B51EC190B\n" 
+"E9F7DDF802460B4630463946E5F755F941EC180B44F001\n" 
+"0451EC180B0022444BE4F7A5FF05D301224FF07953E4F7\n" 
+"B7FF51D853EC182BD7F770FF41EC190B53EC182BD7F76A\n" 
+"FF06460F4653EC192B39483A49D7F762FF394A3A4BE9F7\n" 
+"B0F853EC192BD7F75AFF374A384BE9F7A8F832463B46D7\n" 
+"F752FF53EC182BE9F7A0F806460F4653EC192B31483249\n" 
+"D7F746FF314A324BE9F794F853EC192BD7F73EFF2F4A30\n" 
+"4BE9F78CF853EC192BD7F736FF2D4A2E4BE9F784F853EC\n" 
+"192BD7F72EFF2B4B0022E9F77CF802460B4630463946E5\n" 
+"F7F4F841EC180BA00705D551EC180B81F0004141EC180B\n" 
+"14F007020BD00FF2880303EBC20251EC180B53681268E9\n" 
+"F75FF841EC180B200705D551EC180B81F0004141EC180B\n" 
+"51EC180BBDEC048BD0BD57CD9E5E1426D13FAA4C58E87A\n" 
+"B6FB3F0000F0BF000040BE845D57134B57B03FB2934C19\n" 
+"ED5EE43FBEDE02B90240F83FDE39028FC7C0743F8AAB12\n" 
+"83000CC83F24D7E508B6D8F03F0F34580E5895FD3F0000\n" 
+"F03F00000000000000000000000066732D3852C1E03F18\n" 
+"2D4454FB21F93F66732D3852C1F03F182D4454FB21F93F\n" 
+"66732D3852C10040182D4454FB2109403FD038C6A6F104\n" 
+"4038B514001D00DFF85814D1F8B01051F00201DFF84C24\n" 
+"C2F8B01010220100DFF84404D3F71DF8DFF83804C0E912\n" 
+"4531BD38B514001D00DFF82814D1F8B01051F00801DFF8\n" 
+"1C24C2F8B01010220100DFF81004D3F705F8DFF80804C0\n" 
+"E9104531BD38B514001D0010220100DFF8FC03D2F7F7FF\n" 
+"DFF8EC03C0E9144531BD38B514001D00DFF8DC13D1F8B0\n" 
+"1051F00101DFF8D023C2F8B01010220100DFF8D003D2F7\n" 
+"DFFFDFF8BC03C0E9104531BD38B514001D00DFF8AC13D1\n" 
+"F8B01051F00401DFF8A023C2F8B01010220100DFF8A403\n" 
+"D2F7C7FFDFF88C03C0E9144531BDDFF88013D1F89C1001\n" 
+"60DFF8780390F89800704780B5DFF86C1391F89810C0B2\n" 
+"884212D1C0B2022809D1DFF85803D0F89C00401CDFF84C\n" 
+"13C1F89C0004E0DFF844030021C0F89C1012E0DFF83813\n" 
+"0022C1F89C20DFF82C1381F89800C0B2012801D10120F1\n" 
+"9403D01A860000E002200022032100F0ECF901BD38B504\n" 
+"00DFF80C03C168DFF804034068FAF7CAFA0500DFF8F802\n" 
+"0168DFF8F4028068FAF7C1FA281A2060DFF8E402C168DF\n" 
+"F8E0028068FAF7B7FA0500DFF8D4020168DFF8CC024068\n" 
+"FAF7AEFA40196060DFF8C002C168DFF8B802C068FAF7A4\n" 
+"FA0500DFF8AC020168DFF8A8020068FAF79BFA4019B0F1\n" 
+"8040A060002032BD80B51022DFF89412D2F744FF002002\n" 
+"BD10B50C001022DFF88012D2F73BFFDFF87402D0E91223\n" 
+"C4E90023002010BD10B50400DFF8600290F8B00010F003\n" 
+"0F11D0DFF85022DFF85012DFF85402FAF77BFADFF84002\n" 
+"D0F8B00030F00300DFF83412C1F8B0001022DFF82C1220\n" 
+"00D2F712FF002010BD000038B504000D00DFF8140290F8\n" 
+"B000400711D5DFF81C22DFF80C12DFF81002FAF757FADF\n" 
+"F8F801D0F8B00030F00400DFF8EC11C1F8B0001022DFF8\n" 
+"F8112000D2F7EEFEDFF8D801D0E91423C5E90023002032\n" 
+"BD38B50C001500FFF7AEFFF6F714F9C5E90001F6F7F9F8\n" 
+"002803D0F6F7F1FC206011E0F6F7F9F8002803D0F6F7E6\n" 
+"FC206009E0F6F7F8F8002803D0F6F7EBFC206001E00020\n" 
+"206031BDDFF88011C1F8B4000020704780B507224FF448\n" 
+"71DFF88401F6F79CFB002002BD80B5E0220021DFF85C01\n" 
+"D6F796FDDFF854015FF080418165DFF848015FF08041C1\n" 
+"65DFF840015FF080410166DFF834015FF080414166DFF8\n" 
+"2C015FF080410161DFF820015FF080410160DFF818015F\n" 
+"F080410162DFF80C015FF080410163DFF804015FF08041\n" 
+"4167DFF8F800DFF81011C0F8B810002002BD80B5FFF7C1\n" 
+"FF002803D1DFF8000100F081FF02BDDFF8D400D0F88800\n" 
+"70473349C1F8880070473149C1F8A400704710B584B004\n" 
+"00002C18D0002200212000F6F736FC00A8FFF7C9FE2068\n" 
+"0099B0EBA130206060680199B0EBA1306060A0680299B0\n" 
+"EBA130A060002000E0162004B010BD10B584B00400002C\n" 
+"1DD000A8FFF7D7FF002818D1002011E0C0B200A951F820\n" 
+"1000EE101AB8EEC00ADFED130A80EE200AC0B214EB8001\n" 
+"81ED000A401CC0B20328EAD3002000E0162004B010BD0B\n" 
+"4890F8CC0070470949D1F8C01001600749D1F8C4104160\n" 
+"0549D1F8C8108160034991F8CC10017370470000000080\n" 
+"47403F8800503F8800703F8800A43F8800B43F8800603F\n" 
+"88006D1C8600DB0F4940791C860080B54FF4CC72002124\n" 
+"48D6F7D2FC23480C21416001BD70B4002400E0641C1F4D\n" 
+"2D68AC4209DA0C251C4E05FB0465D5F8B050AB42F2D116\n" 
+"202EE0184C2468142C01DB162028E0154C24680C25F194\n" 
+"03601E8600134E05FB0464C4F8B030114B1B680C240F4D\n" 
+"04FB0353C3F8A8200D4B1B680C4C14EB830398600A4800\n" 
+"68094B13EB800081650748406812F10C01081804494860\n" 
+"03480068401C02490860002070BC704760E78800002A0A\n" 
+"D10A4A126832EA0101084A116007490968084306490860\n" 
+"704704490968002802D002480022026008007047000028\n" 
+"6E89000300002013F0030F09D0521E22BF13F8010B11F8\n" 
+"01CBB0EB0C00F3D07047121F22BF53F8040B51F804CB60\n" 
+"45F7D0121D0AD200BA9CFA8CFCB0EB0C0038BF6FF00000\n" 
+"88BF01207047521E22BF13F8010B11F801CBB0EB0C00F6\n" 
+"D0521C08BF1046704700002DE9F04F00210A460B468B46\n" 
+"0C460D460E460F46D0F804C02CF4006CC0F804C000F512\n" 
+"7C00F5227EDCF81C80B8F1000F11D0DEF81C80B8F1000F\n" 
+"0CD000F5F278DCF83C70D8F860904F4500DA4F46C8F860\n" 
+"70CCF83C70DCF81C80B8F1000F0FD00F46AEF80C7080F8\n" 
+"88724FF48067ACF80C700E2780F8487200F5F2773F6E18\n" 
+"E0DEF81C80B8F1000F13D00F46ACF80C7080F848724FF4\n" 
+"8067AEF80C700E2780F88872DCF83C70D0F804E04EF400\n" 
+"6EC0F804E08E4629E000EB8E1808F58279D9F820A0BAF1\n" 
+"000F1ED00125D9F824A04AEA0101D9F828A04AEA0202D9\n" 
+"F82CA04AEA0303D9F8309049EA0B0BBAF1000F0AD0BEF1\n" 
+"050F07D0BEF1060F04D0D8F80481B04500DB46460EF101\n" 
+"0EBEF10C0FD2DBD0F804E01EF4400F02D0012421460D46\n" 
+"D0F8E481B8F1000F04D04EF4806EC0F804E003E02EF480\n" 
+"6EC0F804E000F1040EDEF84080B8F1000F04D1DEF82880\n" 
+"B8F1000F00D00121D0F80480002D03D028F48015456002\n" 
+"E048F48015456045685FEAC52803D545F40015456002E0\n" 
+"25F4001545601A2F01DB192500E03D46AE4204DA1A2F01\n" 
+"DB192600E03E46742E00DB7326CEF8046000F2B055E127\n" 
+"2F636F63AF63EE63DEF840603443641EA441E443E40FCE\n" 
+"F844404468E4020AD5DEF84440002C06D0DEF82840002C\n" 
+"02D16C6BA4106C63EC68002C64D1446862F30824446044\n" 
+"6861F3C7144460446863F34924446044686BF30C344460\n" 
+"446844F400244460002A03D024F40062426002E044F400\n" 
+"6242604268002B08D1540506D4BBF1000F07D090F8CC40\n" 
+"002C03D142F48032426002E022F480324260002904D001\n" 
+"216960C0F8B01503E000216960C0F8B0151946491E8941\n" 
+"C943C90FA960D0F82411491E8941C943C90FC0F82414D0\n" 
+"F8A413491E8941C943C90FC0F86414D0F8E41300290CD1\n" 
+"DCF81C10002908D1D0F82413491E8941C943C90FF19403\n" 
+"F0218600C0F8A41402E00121C0F8A4140020BDE8F08F00\n" 
+"0070B52DED068B0446084604F2C8451B4E6E609FED1B8B\n" 
+"9FED1C9B9FED1DAB802812D2D7F757FA53EC1A2BE4F731\n" 
+"FC53EC192BE8F7AFFB53EC182BD7F759FAE4F751FBC4F8\n" 
+"C80414E08038D7F739FA53EC1A2BE4F71DFC02460B4651\n" 
+"EC190BE4F757FB53EC182BD7F743FAE4F73BFBC4F8C804\n" 
+"AE60EE60BDEC068B70BD00CA9A3B0000000065CDCD4100\n" 
+"0000000000F03F0000000000D893402DE9F04F00210523\n" 
+"04E000EB8112C2F80431491C0C29F8DB062180F8081100\n" 
+"F59C7106220A7400F5BC720623137400F5DC7308241C74\n" 
+"00F54E740625257400F5FC750C262E7400F52E76062737\n" 
+"7400F55E774FF00C0C87F810C000F56E7C4FF00C0E8CF8\n" 
+"10E000F50E7E4FF00E088EF8108000F51E784FF00E0988\n" 
+"F8109000F53E794FF00C0A89F810A000F5847A4FF0BE0B\n" 
+"CAF804B04FF0BA0BC1F814B04FF0B60BC2F814B04FF0B2\n" 
+"0BC3F814B04FF0BC0BC4F814B04FF0AC0BC5F814B04FF0\n" 
+"A40BC6F814B04FF0B80BC7F814B04FF0B40BCCF814B04F\n" 
+"F0A80BCEF814B0C8F814B04FF0A00BC9F814B04FF09E0B\n" 
+"CAF808B04FF09A0BC1F818B04FF0960BC2F818B04FF092\n" 
+"0BC3F818B04FF09C0BC4F818B04FF08C0BC5F818B04FF0\n" 
+"840BC6F818B04FF0980BC7F818B04FF0940BCCF818B04F\n" 
+"F0880BCEF818B0C8F818B04FF0800BC9F818B04FF4004B\n" 
+"AAF80CB04FF4804BA1F81CB04FF4005BA2F81CB04FF480\n" 
+"5BA3F81CB04FF0800BA4F81CB04FF4006BA5F81CB04FF4\n" 
+"007BA6F81CB04FF0400BA7F81CB04FF0200BACF81CB04F\n" 
+"F4806BAEF81CB0A8F81CB04FF4807BA9F81CB04FF4804B\n" 
+"AAF80EB04FF4005BA1F81EB04FF4805BA2F81EB04FF400\n" 
+"6BA3F81EB04FF4004BA4F81EB04FF4806BA5F81EB04FF4\n" 
+"007BA6F81EB04FF0400BA7F81EB04FF0800BACF81EB04F\n" 
+"F0080BAEF81EB0A8F81EB04FF0040BA9F81EB04FF0010B\n" 
+"CAF820B04FF0000BC1F830B0C2F830B0C3F830B0C4F830\n" 
+"B04FF0010BC5F830B0C6F830B04FF0000BC7F830B0CCF8\n" 
+"30B04FF0010BCEF830B0C8F830B0C9F830B04FF0000BCA\n" 
+"F824B04FF0010BC1F834B04FF0000BC2F834B0C3F834B0\n" 
+"C4F834B04FF0010BC5F834B0C6F834B0C7F834B04FF000\n" 
+"0BCCF834B04FF0010BCEF834B04FF0000BC8F834B04FF0\n" 
+"010BC9F834B04FF0000BCAF828B0C1F838B04FF0010BC2\n" 
+"F838B04FF0000BC3F838B0C4F838B0C5F838B0C6F838B0\n" 
+"C7F838B04FF0010BCCF838B0CEF838B0C8F838B0C9F838\n" 
+"B04FF0000BCAF82CB0DA46C1F83CA05146D163F1940380\n" 
+"258600D9630121E1635146E963F163F963CCF83C10CEF8\n" 
+"3C10C8F83C10C9F83C10012180F83811514680F8781103\n" 
+"2180F8B81180F8F81180F87813514680F8381280F8F812\n" 
+"80F8B813032180F8F813514680F87812012180F8B81251\n" 
+"4680F8381300F57E7102220A7480F8482480F888244FF4\n" 
+"80428A8300F248424FF40053938100F288404FF4805383\n" 
+"814FF48143CB834FF40251D1814FF48451C181BDE8F08F\n" 
+"0000032180F8B410B43004214170052181700621C17007\n" 
+"21017108214171092181710A21C1710B2101720C214172\n" 
+"0D2181720E21C1720F21017310214173112181731221C1\n" 
+"73704710B5044601F0F3FE204610BD00001AA210EE101A\n" 
+"DFF860C0F2EC060A614509DB00EE803A70EE800A83EE20\n" 
+"0A40F0020010EE101A21F0004CDCF1665C0BD860EE000A\n" 
+"20EE203A03EE010A01EEA02A42EE202A80EE220A400810\n" 
+"F0020F18BFB1EE400A02EB8002D2ED000A30EE200A28BF\n" 
+"B1EE400A7047A430893ED7B3DD3F6AD5033F2B94A93DB8\n" 
+"2A593F0000803F000080BF00000000920A063FDB0FC93F\n" 
+"920A863FDB0FC93F920A0640DB0F4940368D274010B5DF\n" 
+"F8DC44F9F718FC60660020024603E004EB8001CA62401C\n" 
+"0928F9DB10462066E065F9F7FDFBA0664FF4FA70206060\n" 
+"60DFF8B004A0609FED0A0A84ED030A84ED040A84ED050A\n" 
+"B5EE000A84ED060A84ED070ADFF89004206207206062A0\n" 
+"6210BD00009A99193F70470000F8B52DED048B0C469FED\n" 
+"3D8ADFF8646400207065B065306E401C3066DFF8605401\n" 
+"2C02D1002068672867F06D0A2839DA1E220021706EF8F7\n" 
+"D3FAC5F88C001E220121706EF8F7CCFAF16D06EB810233\n" 
+"6E03EB8307BB00D362012921DBD5F88C3093ED000AD0ED\n" 
+"000A30EE600AD3ED010A90ED011A70EEC10A93ED021AD0\n" 
+"ED021A31EE611A05EB810020EE000A00EEA00A01EE010A\n" 
+"80ED050AD36A926A9A1A8263481CF065316E0A2902DA03\n" 
+"20C5F88800F06D0A28C0F23781401EF065706E0A2920D1\n" 
+"1E220A21F8F79BFA85ED030A1E220A21706EF8F7B2FA85\n" 
+"ED040A1E220A21706EF8F7C9FA85ED050A0020092844DA\n" 
+"05EB800191ED060A38EE008A401CF5E7000000001E220A\n" 
+"21F8F76AFAD5F88C1095ED030AD0ED000A30EE600AD1ED\n" 
+"000A30EE200A85ED030A95ED040AD0ED010A30EE600AD1\n" 
+"ED010A30EE200A85ED040A95ED050AD0ED020A30EE600A\n" 
+"D1ED020A30EE200A85ED050AF06D05EB800090ED050AD0\n" 
+"ED040A30EE200AD0ED030A30EE200AF0EE080A20EE208A\n" 
+"95ED030AF2EE040AC0EE208A95ED040A80EEF194031029\n" 
+"8600209A95ED050AC0EE209A306E0A2805D1C5ED008A85\n" 
+"ED019AC5ED029A00270FE01E22C7F1090109B2706EF8F7\n" 
+"13FA95ED021AD5ED010A95ED000A00F0FBF87F1C0A2FED\n" 
+"DBF06A716A726D914249DAA96F002908D128660121A967\n" 
+"C5ED008A85ED019AC5ED029AB16AB26D91420CDAE96F00\n" 
+"290BD168660121E967C5ED008A85ED019AC5ED029A01E0\n" 
+"0021E967296E411A296732686B6EC31A9A420CD2EB6F01\n" 
+"2B09D10020C5F88000C5F8840068670120C5F8880060E0\n" 
+"8A420CD2A96F012909D10020C5F88000C5F88400686702\n" 
+"20C5F8880051E0A96E401A68670320C5F888004AE0C5ED\n" 
+"008A85ED019AC5ED029A0021A967E9672967D5F8801000\n" 
+"2903D1A8660121C5F88010A96E411A69679FED740A28EE\n" 
+"000AB5EE400AF1EE10FA03DC9FED710A28EE000AD6ED02\n" 
+"0AB3EE041A60EE810AF4EE400AF1EE10FA08D5D5F88410\n" 
+"002907D1E8660121C5F8841002E00021C5F884107168A1\n" 
+"F5FA71EA6E801A814207D2D5F88400012803D10420C5F8\n" 
+"880002E00320C5F8880000200CE006EB80010A6BCA6208\n" 
+"2805DA05EB8001CA698A610A6CCA63401C0928F0DBD5F8\n" 
+"8800012806D044D3032822D011D304282FD03EE0B06E01\n" 
+"21C162296F016302214163002C35D1BDEC048BBDE8F440\n" 
+"F9F736BAB06E0121C162296F016304214163002C26D102\n" 
+"21BDEC048BBDE8F440F9F726BAB06E0121C162696F0163\n" 
+"08214163002C16D10221BDEC048BBDE8F440F9F716BAB0\n" 
+"6E0121C162696F016310214163002C06D10221BDEC048B\n" 
+"BDE8F440F9F706BABDEC048BF1BDD0ED001A31EEC00AD0\n" 
+"ED011A71EEE00AD0ED021A31EEC11AB5EE400AF1EE10FA\n" 
+"01D5B1EE400AF5EE400AF1EE10FA01D5F1EE600AB5EE40\n" 
+"1AF1EE10FA01D5B1EE411A1C48D0ED031AB4EE610AF1EE\n" 
+"10FA0FD5D0ED041AF4EE610AF1EE10FA08D5D0ED051AB4\n" 
+"EE611AF1EE10FA01D5012100E00021D0ED061AB4EE610A\n" 
+"F1EE10FA10D590ED070AF4EE400AF1EE10FA09D590ED08\n" 
+"0AB4EE401AF1EE10FA02D5826D521C8265426D89184165\n" 
+"704700007A4400007AC424C78800000040413333B33E90\n" 
+"C7880080B5542200211748D5F7D9FD002002BD14490968\n" 
+"142901DB16200BE011490968104A12EB810148600E4800\n" 
+"68401C0D4908600020704738B5002400250AE0094810EB\n" 
+"850040688047002802D0002C00D104006D1C0348006885\n" 
+"42F0DB200032BD00000000F8E88800F446490006D200F0\n" 
+"11F809420DD5C8174108604700F00AF807D04942404271\n" 
+"F1000102D400205FF0004160474A0DA2F5F19403A02C86\n" 
+"0080621E3A0ADC5242202A18DA890241F0004141EA5050\n" 
+"0021D0407047D2F1200210D4890241F0004141EA5051C0\n" 
+"02D04061FA02F35840D14080EA01007047002000217047\n" 
+"D0170100704700214010002800D0491C0128F9DA481C70\n" 
+"472DE9F14F86B000200021CDE902010698806F002802D1\n" 
+"00200021EDE00698D0F88000401C0190002000900EE040\n" 
+"4271EB4101DDE902238B4204DC01DB824201D2CDE90201\n" 
+"0098401C00900098032880F2A4800098069911EBC002D2\n" 
+"E90001019A01F0B6FB06000F000098069911EBC002D2E9\n" 
+"0601019A01F0ABFB04000D000098069911EBC002D2E90C\n" 
+"01019A01F0A0FBCDE904010098069911EBC002D2E91201\n" 
+"019A01F095FBA6FB062306FB073307FB0633B4EB020875\n" 
+"EB0309A6FB082306FB093307FB08335FF0030A5FF0000B\n" 
+"AAFB02890AFB03990BFB0299A6FB062306FB073307FB06\n" 
+"33A6FB02AB06FB03BB07FB02BB18EB0A0259EB0B03DDE9\n" 
+"0489B2EB080273EB0903A4FB048904FB059905FB049903\n" 
+"240025A4FB08AB04FB09BB05FB08BBB0EB0A0071EB0B01\n" 
+"A6FB064506FB075507FB0655A6FB048906FB059907FB04\n" 
+"99A6FB084506FB095507FB08555FF002085FF00009A8FB\n" 
+"04AB08FB05BB09FB04BB10EB0A0051EB0B01A6FB024506\n" 
+"FB035507FB025504220023A2FB046702FB057703FB0477\n" 
+"801BB9410029FFF64EAF02DC0028FFF44AAF4BE7069880\n" 
+"6F0699C96F884215D001200699D1F88010884000EE100A\n" 
+"B8EEC00AFEF766FCF7EE000A80EE800A069880ED210A06\n" 
+"980699896FC167DDE9020100F0B9FF00EE100A0698D0ED\n" 
+"210A20EE200A10EE100A01F002FBCDE90201DDE9020107\n" 
+"B0BDE8F08F2DE9F04F85B0814600200021CDE90001D9F8\n" 
+"7800002802D10020002189E0D9F87800FFF7E5FE02905F\n" 
+"F000080DE0404271EB4101DDE900238B4204DC01DB8242\n" 
+"01D2CDE9000118F10108B8F1030F48DA19EBC802D2E900\n" 
+"01029A01F0BAFA04000D0019EBC802D2E90601029A01F0\n" 
+"B1FA06000F0019EBC802D2E90C01029A01F0A8FAA4FB04\n" 
+"2304FB053305FB0433B21A77EB0303A4FB026704FB0377\n" 
+"05FB027703220023A2FB06AB02FB07BB03FB06BBA4FB04\n" 
+"2304FB053305FB0433A4FB026704FB037705FB02771AEB\n" 
+"06025BEB0703101A73EB01010029A9DB01DC0028A6D3A8\n" 
+"E7D9F87800D9F87C1088420FD099ED1E0AB8EEC00AFEF7\n" 
+"C8FBF7EE000A80EE800A89ED210AD9F87800C9F87C00DD\n" 
+"E9000100F01CFF00EE100AD9ED210A20EE200A10EE100A\n" 
+"01F066FACDE90001DDE9000105B0BDE8F1940330308600\n" 
+"F08F2DE9FE4186460E0000271EE0D317A2FB004502FB01\n" 
+"5503FB005520002900182303FB0C6313EBC703182404FB\n" 
+"0C6414EBC708D8E9004524184D41C3E900451CF1010CBC\n" 
+"F1040FE1DB7F1C032F36DAB06F002805D116EB87003EF9\n" 
+"1710C0F888103EF9170016EB8701D1F88810401A00A941\n" 
+"F8270016EB8700006E00A951F82710884205DA16EB8700\n" 
+"00A951F82710016600A850F8270016EB8701C96E884205\n" 
+"DA16EB870000A951F82710C16600A850F8272001200021\n" 
+"5FF0000CC2E7B06F401CB0670120C6F8A800BDE8F78170\n" 
+"B504000026049D05E015EB860054F82610C166761C032E\n" 
+"F7DBC5E92623A86F002815D0002611E054F8260015EB86\n" 
+"01D1F88810401AEBF7C0F815EB8601096E814202DA15EB\n" 
+"86010866761C032EEBDBA86F401CA8670120C5F8A80070\n" 
+"BD00210BE010EB810210EB8103DB6EC2F8883010EB8102\n" 
+"00231366491C0329F1DBD0E92623C0E928230021816700\n" 
+"21C0F8A8107047016E426E8A4200DB416E826E8A4200DB\n" 
+"816E0800704700224910002900D0521C0129F9DA511CC0\n" 
+"F88010704710B50400602200212000D5F7FEFA0020A067\n" 
+"0020C4F888000020C4F88C000020C4F890000020C4F8A8\n" 
+"005FF0404020665FF0404060665FF04040A0665FF08040\n" 
+"E0665FF0804020675FF08040606710BD80B500F02CF8B5\n" 
+"EE400AF1EE10FA03D0DFF86C00806D00E0012002BD1FB5\n" 
+"FEF7C9FD040000A8FEF7C9FDE4B2012C03D1DFF8480000\n" 
+"990160DFF8400090ED000A1FBDDFF84000D0F87C017047\n" 
+"DFF83400D0F880017047DFF82C00006E704780B5FEF7A8\n" 
+"FDC0B2012802D1FFF7D7FF03E0DFF80C0090ED1C0A01BD\n" 
+"00002C6E8900A84B8800A84B880038B5FFF7B9FF0400FF\n" 
+"F7D7FF0500FFF7D9FF55EA040150EA0104FFF7D8FF2043\n" 
+"32BD012001F056B9002001F053B900002DE9F0412DED02\n" 
+"8B07000E00B0EE408AF0EE608A18EE100AD6F7DCFAD7E9\n" 
+"3023D6F706FA04000D0018EE900AD6F7D2FAD6E93023D6\n" 
+"F7FCF922002B00E7F74AFBC7E930015FF0000841E018EE\n" 
+"100AD6F7C1FA17EBC80253681268D6F7E9F904000D0018\n" 
+"EE900AD6F7B5FA16EBC80253681268D6F7DDF922002B00\n" 
+"E7F72BFB17EBC802C2E9000118EE100AD6F7A3FA17EBC8\n" 
+"02D2F89430D2F89020D6F7C9F904000D0018EE900AD6F7\n" 
+"95FA16EBC802D2F89430D2F89020D6F7BBF922002B00E7\n" 
+"F709FB17EBC802C2E9240118F10108B8F1060FBADB5FF0\n" 
+"00081FE018EE100AD6F779FA17EBC802D36C926CD6F7A1\n" 
+"F904000D0018EE900AD6F76DFA16EBF19403C0338600C8\n" 
+"02D36C926CD6F795F922002B00E7F7E3FA17EBC802C2E9\n" 
+"120118F10108B8F1090FDCDB5FF000081FE018EE100AD6\n" 
+"F753FA17EBC802536B126BD6F77BF904000D0018EE900A\n" 
+"D6F747FA16EBC802536B126BD6F76FF922002B00E7F7BD\n" 
+"FA17EBC802C2E90C0118F10108B8F1030FDCDBBDEC028B\n" 
+"BDE8F08130B587B005000C002068D6F73FF9CDE9000160\n" 
+"68D6F73AF9CDE90201A068D6F735F9CDE90401D5E93023\n" 
+"0020B749E7F797FAC5E93001D5E90C23DDE90001E7F78F\n" 
+"FAC5E90C01D5E90E23DDE90201E7F787FAC5E90E01D5E9\n" 
+"1023DDE90401E7F77FFAC5E91001DDE90023DDE90001D6\n" 
+"F725F9D5E90023E7F773FAC5E90001DDE90023DDE90201\n" 
+"D6F719F9D5E90223E7F767FAC5E90201DDE90023DDE904\n" 
+"01D6F70DF9D5E90423E7F75BFAC5E90401DDE90223DDE9\n" 
+"0201D6F701F9D5E90623E7F74FFAC5E90601DDE90223DD\n" 
+"E90401D6F7F5F8D5E90823E7F743FAC5E90801DDE90423\n" 
+"DDE90401D6F7E9F8D5E90A23E7F737FAC5E90A01DDE900\n" 
+"23DDE90001D6F7DDF8DDE90023D6F7D9F8D5E91223E7F7\n" 
+"27FAC5E91201DDE90023DDE90201D6F7CDF8DDE90223D6\n" 
+"F7C9F8D5E91423E7F717FAC5E91401DDE90023DDE90401\n" 
+"D6F7BDF8DDE90423D6F7B9F8D5E91623E7F707FAC5E916\n" 
+"01DDE90223DDE90001D6F7ADF8DDE90023D6F7A9F8D5E9\n" 
+"1823E7F7F7F9C5E91801DDE90223DDE90201D6F79DF8DD\n" 
+"E90223D6F799F8D5E91A23E7F7E7F9C5E91A01DDE90223\n" 
+"DDE90401D6F78DF8DDE90423D6F789F8D5E91C23E7F7D7\n" 
+"F9C5E91C01DDE90423DDE90001D6F77DF8DDE90023D6F7\n" 
+"79F8D5E91E23E7F7C7F9C5E91E01DDE90423DDE90201D6\n" 
+"F76DF8DDE90223D6F769F8D5E92023E7F7B7F9C5E92001\n" 
+"DDE90423DDE90401D6F75DF8DDE90423D6F759F8D5E922\n" 
+"23E7F7A7F9C5E92201DDE90023DDE90001D6F74DF8DDE9\n" 
+"0023D6F749F8DDE90023D6F745F8D5E92423E7F793F9C5\n" 
+"E92401DDE90223DDE90201D6F739F8DDE90223D6F735F8\n" 
+"DDE90223D6F731F8D5E92623E7F77FF9C5E92601DDE904\n" 
+"23DDE90401D6F725F8DDE90423D6F721F8DDE90423D6F7\n" 
+"1DF8D5E92823E7F76BF9C5E92801DDE90023DDE90001D6\n" 
+"F711F8DDE90223D6F70DF8DDE90223D6F709F8D5E92A23\n" 
+"E7F757F9C5E92A01DDE90023DDE90001D5F7FDFFDDE904\n" 
+"23D5F7F9FFDDE90423D5F7F5FFD5E92C23E7F743F9C5E9\n" 
+"2C01DDE90223DDE90201D5F7E9FFDDE90423D5F7E5FFDD\n" 
+"E90423D5F7E1FFD5E92E23E7F72FF9C5E92E0107B030BD\n" 
+"00000000F03F2DE9F0472DED108BF194035037860084B0\n" 
+"07000E009246D7E93023D7E90001D5F7C8FF04000D00D7\n" 
+"E90C23D7E90C01D5F7C0FF02000B0020002900E3F7CAF8\n" 
+"CDE90001D7E93023D7E90601D5F7B2FF04000D00D7E90E\n" 
+"23D7E90E01D5F7AAFF02000B0020002900E3F7B4F841EC\n" 
+"180BD7E93023D7E90A01D5F79CFF04000D00D7E91023D7\n" 
+"E91001D5F794FF02000B0020002900E3F79EF841EC190B\n" 
+"D7E93023D7E90201D5F786FF04000D00D7E90C23D7E90E\n" 
+"01D5F77EFF02000B0020002900E3F788F841EC1A0BD7E9\n" 
+"3023D7E90401D5F770FF04000D00D7E90C23D7E91001D5\n" 
+"F768FF02000B0020002900E3F772F841EC1B0BD7E93023\n" 
+"D7E90801D5F75AFF04000D00D7E90E23D7E91001D5F752\n" 
+"FF02000B0020002900E3F75CF841EC1C0BD7E93023D7E9\n" 
+"1201D5F744FF04000D00D7E90C23D7E90001D5F73CFF02\n" 
+"000B0020002900E3F746F804000D00D7E93023D7E91401\n" 
+"D5F72EFF22002B00E7F77CF804000D00D7E90C23D7E906\n" 
+"01D5F722FF02000B0020002900E3F72CF804000D00D7E9\n" 
+"3023D7E91601D5F714FF22002B00E7F762F804000D00D7\n" 
+"E90C23D7E90A01D5F708FF02000B0020002900E3F712F8\n" 
+"0022DFF83C35D5F7FDFE41EC1D0BD7E93023D7E91801D5\n" 
+"F7F5FE04000D00D7E90E23D7E90001D5F7EDFE02000B00\n" 
+"20002900E2F7F7FF04000D00D7E93023D7E91A01D5F7DF\n" 
+"FE22002B00E7F72DF804000D00D7E90E23D7E90601D5F7\n" 
+"D3FE02000B0020002900E2F7DDFF04000D00D7E93023D7\n" 
+"E91C01D5F7C5FE22002B00E7F713F804000D00D7E90E23\n" 
+"D7E90A01D5F7B9FE02000B0020002900E2F7C3FF0022DF\n" 
+"F89C34D5F7AEFE41EC1E0BD7E93023D7E91E01D5F7A6FE\n" 
+"04000D00D7E91023D7E90001D5F79EFE02000B00200029\n" 
+"00E2F7A8FF04000D00D7E93023D7E92001D5F790FE2200\n" 
+"2B00E6F7DEFF04000D00D7E91023D7E90601D5F784FE02\n" 
+"000B0020002900E2F78EFF04000D00D7E93023D7E92201\n" 
+"D5F776FE22002B00E6F7C4FF04000D00D7E91023D7E90A\n" 
+"01D5F76AFE02000B0020002900E2F774FF0022DFF80034\n" 
+"D5F75FFE41EC1F0B53EC192B51EC1A0BD5F757FE53EC1A\n" 
+"2BD5F753FE04000D0053EC1A2B00205FF08041D5F74AFE\n" 
+"53EC1B2BD5F746FE53EC1C2BD5F742FE02000B00200029\n" 
+"00E2F74CFF04000D0053EC182B51EC1B0BD5F734FE53EC\n" 
+"1B2BD5F730FE22002B00E6F77EFF04000D00DDE9002351\n" 
+"EC1C0BD5F724FE53EC1C2BD5F720FE22002B00E6F76EFF\n" 
+"04000D00DDE9002351EC180BD5F714FE53EC192BD5F710\n" 
+"FE02000B0020002900E2F71AFFF19403E03A8600CDE902\n" 
+"01DDE9022300200021F7F7AAFE00F0978153EC182B51EC\n" 
+"1F0BD5F7FAFD04000D0053EC1C2B51EC1E0BD5F7F2FD02\n" 
+"000B0020002900E2F7FCFE53EC1B2BD5F7E8FD04000D00\n" 
+"53EC1C2B51EC1C0BD5F7E0FD53EC1D2BD5F7DCFD22002B\n" 
+"00E6F72AFF04000D0053EC182B51EC190BD5F7D0FD53EC\n" 
+"1D2BD5F7CCFD02000B0020002900E2F7D6FE04000D0053\n" 
+"EC192B51EC1A0BD5F7BEFD53EC1E2BD5F7BAFD22002B00\n" 
+"E6F708FF04000D0053EC1A2B51EC1C0BD5F7AEFD53EC1F\n" 
+"2BD5F7AAFD02000B0020002900E2F7B4FEC6E90001DDE9\n" 
+"002351EC1F0BD5F79CFD04000D0053EC1B2B51EC1D0BD5\n" 
+"F794FD02000B0020002900E2F79EFE53EC1C2BD5F78AFD\n" 
+"04000D0053EC1B2B51EC1B0BD5F782FD53EC1E2BD5F77E\n" 
+"FD22002B00E6F7CCFE04000D00DDE9002351EC190BD5F7\n" 
+"72FD53EC1E2BD5F76EFD02000B0020002900E2F778FE04\n" 
+"000D0053EC192B51EC1A0BD5F760FD53EC1D2BD5F75CFD\n" 
+"22002B00E6F7AAFE04000D0053EC1A2B51EC1B0BD5F750\n" 
+"FD53EC1F2BD5F74CFD02000B0020002900E2F756FEC6E9\n" 
+"0201DDE9002351EC1E0BD5F73EFD04000D0053EC1A2B51\n" 
+"EC1D0BD5F736FD02000B0020002900E2F740FE53EC1C2B\n" 
+"D5F72CFD04000D0053EC1A2B51EC1A0BD5F724FD53EC1F\n" 
+"2BD5F720FD22002B00E6F76EFE04000D00DDE9002351EC\n" 
+"180BD5F714FD53EC1F2BD5F710FD02000B0020002900E2\n" 
+"F71AFE04000D0053EC182B51EC1B0BD5F702FD53EC1D2B\n" 
+"D5F7FEFC22002B00E6F74CFE04000D0053EC1A2B51EC1B\n" 
+"0BD5F7F2FC53EC1E2BD5F7EEFC02000B0020002900E2F7\n" 
+"F8FDC6E90401D6E90001DDE90223E2F7B0FEC6E90001D6\n" 
+"E90201DDE90223E2F7A8FEC6E90201D6E90401DDE90223\n" 
+"E2F7A0FEC6E90401D6E90023D6E90001D5F7C8FC04000D\n" 
+"00D6E90223D6E90201D5F7C0FC22002B00E6F70EFE0400\n" 
+"0D00D6E90423D6E90401D5F7B4FC22002B00E6F702FECD\n" 
+"E90001D7E90023D7E90601E6F7FAFDD7E90A23E6F7F6FD\n" 
+"80468946D6E90023D7E90C01D5F79CFC04000D00D6E902\n" 
+"23D7E90E01D5F794FC22002B00E6F7E2FD04000D00D6E9\n" 
+"0423D7E91001D5F788FC22002B00E6F7D6FD00225FF080\n" 
+"43D5F77FFC02000B0040464946E2F789FDD7E93023E2F7\n" 
+"45FEDDE90023E6F7C3FD41EC100BE6F733FE8AED000B01\n" 
+"2000E0002004B0BDEC108BBDE8F08700000000E03F80B5\n" 
+"012251EC100B00F04AFC41EC100B01BD0000002940F10B\n" 
+"80F4464942404271F1000100F00AF850F0004060470000\n" 
+"50EA010200F00E80094200BFF19403703E86000BD1B0FA\n" 
+"80F18840C1F19D01C905020672F1004241EB10207047B1\n" 
+"FA81F241409040C2F1200261FA02F181EA000018BF40F0\n" 
+"010002F19D01E8E700002DE9FE4F2DED108B88B09FED01\n" 
+"0A91E1F304353F0022009201220192009ABDF8683012FA\n" 
+"83F700977A00199DDDF800C055F83CC000EE90CA55F832\n" 
+"C0BB1801EE10CA55F833C005EBC202FC1801EE90CAD2ED\n" 
+"014A55F834C005EBC30207EB040902EE10CA92ED015A55\n" 
+"F839C005EBC40207EB090602EE90CAD2ED015A55F836C0\n" 
+"05EBC902BF1903EE10CA92ED016A55F837C005EBC60203\n" 
+"EE90CAD2ED016ADDF800C005EBC70205EBCC0C92ED017A\n" 
+"019A9CED014A8B18CC1801EB040901EB090650F836C007\n" 
+"EE90CA50F832C08F1908EE10CA50F837C078EE278A78EE\n" 
+"679A07EE90CA50F833C001EB070E08EE10CA50F83EC038\n" 
+"EE279A38EE67AA07EE90CA50F834C001EB0E0808EE10CA\n" 
+"50F838C00AEE90CA50F839C078EE27BA38EE678A0BEE10\n" 
+"CA7BEE2A7A7BEE6AAA38EEEBBA78EEAB8A79EE67BA79EE\n" 
+"277A00EBC20538EEA79A85ED009A00EBC60578EEE77A07\n" 
+"9500EBC40CD5ED018A00EBC205069500EBC90A95ED019A\n" 
+"39EE28CA00EBC70579EE688A059500EBC60695ED019A00\n" 
+"EBC305049500EBC404D5ED01CA3CEE89EA00EBCE057CEE\n" 
+"C9CA029595ED019A9CED01DA3DEE09FA00EBC8053DEE49\n" 
+"9A95ED01DADAED01DADDF818B07DEE8DEA3DEECDDA7CEE\n" 
+"4FDA3CEE0FFA3EEE6ECA7EEE2EEA3BEE0CEA3BEE4CBA3F\n" 
+"EE2ECA8BED01CA3DEEEBCA7DEEABBA7FEE6EEA62EE27DA\n" 
+"45EEAEDAC6ED00DA62EE2EDA079E45EEE7DA61EE0E7AC6\n" 
+"ED01DA44EE8C7AC4ED007A61EE0C7A44EECE7ACCED017A\n" 
+"63EE0B7A00EBCE0446EEAB7AC4ED007A63EE2B7A029C46\n" 
+"EECB7AC4ED017A7AEE6A7A27EE80BA7AEE2A7A27EE80AA\n" 
+"7CEECD7A67EE80BA7CEE8D7A27EE80CA79EECB7A79EE8B\n" 
+"CA78EE4A9A78EEEBAA38EEABDA38EE0AAA39EE4CBA79EE\n" 
+"0C8A3CEEA88A7CEEE8BA3AEEE9CA77EE8B8A37EECB9A7A\n" 
+"EEA9AA3DEE4ABA7DEE0A7A60EE889A00EBC30344EE0B9A\n" 
+"C3ED009A60EE8B9A049B44EE489AC3ED019A23EEAB8A07\n" 
+"EE278A00EBC80363EEA77A83ED008A47EE6B7AC5ED017A\n" 
+"62EEA87A00EBC70346EE0C7AC3ED007A62EE8C7A059B46\n" 
+"EE687AC3ED017A61EE897A00EBC90345EE2A7AC3ED007A\n" 
+"61EEAA7A45EE497ACAED017A039B9A18BDF860309A42FF\n" 
+"F4CBAE019A521C01928A42FFF479AEBDF86820D200ADF8\n" 
+"682003910022C9088B18CC1801EB040901EB090650F836\n" 
+"C000EE90CA50F832C08F19F194030042860001EE10CA71\n" 
+"EE202A50F837C071EE600A01EE10CA50F833C001EB070E\n" 
+"01EE90CA71EE813A50F83EC071EEC11A01EE10CA50F834\n" 
+"C001EB0E0802EE10CA32EE014A50F838C032EE411A02EE\n" 
+"10CA50F839C003EE10CA73EE024A33EE422A32EEC43A73\n" 
+"EEE4BA72EE842A73EEA43A00EBC20532EEA34A85ED004A\n" 
+"00EBC60572EEE32AC5ED002A00EBC606009600EBC705D6\n" 
+"ED012A00EBC20600EBCE0CD6ED013A019573EEA24A73EE\n" 
+"E22AD5ED013A00EBC305029500EBC80A95ED014A34EE23\n" 
+"5A00EBC40534EE634ADCED013AD5ED015A35EEA36A00EB\n" 
+"C90B75EEE33ADAED015ADBED016A76EEA57A76EEE55A74\n" 
+"EEC66A35EE67CA74EE864A35EE275A34EE856A86ED016A\n" 
+"74EEC54A009EC6ED014A00EBC40473EE0C4AC4ED004A00\n" 
+"EBCE0433EE4C3A84ED003A36EEEB3A85ED013A36EEAB3A\n" 
+"8CED013A31EEC23A71EE821A61EE808A74EE651A61EE80\n" 
+"7A74EE251A23EE008A21EE80CA71EE689A31EE28AA30EE\n" 
+"C89A70EE88BA73EE8C8A00EBC3037BEEA80AC3ED000A00\n" 
+"EBC8037BEEE80AC3ED000A33EECCBA00EBC70379EE0B0A\n" 
+"C3ED000A00EBC90379EE4B0AC3ED000A72EEE7AA029B72\n" 
+"EEA77A77EECA0AC3ED010A77EE8A0ACAED010A7AEEE90A\n" 
+"019BC3ED010A7AEEA90ACBED010A039B9A18BDF860309A\n" 
+"42FFF408AF0829BFF472AD08B0BDEC108B03B0BDE8F08F\n" 
+"4B1C012B98BF70472DE9F003911C9B08B1F80480B1F802\n" 
+"900A8831F802CC8044814402448444D9F80070D8F80060\n" 
+"1568DCF80040C9F80060C8F80070CCF800501460D9F804\n" 
+"70D8F804605568DCF80440C9F80460C8F80470CCF80450\n" 
+"546008315B1ED5D1BDE8F0037047000081423ABF531898\n" 
+"42C5F748BF8018990707D0521E24BF13F8011D00F8011D\n" 
+"F6D8704781071CD1103A07D330B433E93210103A20E932\n" 
+"10F9D230BC1032121F24BF53F8041D40F8041DF8D838BF\n" 
+"121D521E24BF13F8011D00F8011DF8D8704700BF083A07\n" 
+"D333E90210083A40F804CD40F8041DF7D20832EAE7D2B2\n" 
+"203A22BF41FA02F0C91770472032D141D04048409140D1\n" 
+"4048409140114170470000C0F3C7517F392CD420290DDA\n" 
+"C1F11F0C41004FEAC11141F0004121FA0CF0894128BF40\n" 
+"42C9437047D1F13F0C1CD441004FEAC11141F0004161FA\n" 
+"0CF021FA0CF180EA0100094244BF4FF00041002004D349\n" 
+"42404271F10001704701D5401E491E7047002000217047\n" 
+"09424FF0004158BFC943002070470000DFED4A0A10B560\n" 
+"EE200AB0EEE01ADFED481AB4EE611A82B00446F1EE10FA\n" 
+"29D5F5EE400AF1EE10FAF1940390458600ACBFB6EE001A\n" 
+"BEEE001A70EE810AFDEEE00A10EE900AA8B1FAEEC90A9F\n" 
+"ED3B1A00EEC10A9FED3A1A00EEC10A9FED391A00EEC10A\n" 
+"9FED381A00EEC10A9FED371A00EEC10A00F00300041921\n" 
+"E08DED000A0098C0F3C750FF2808D088B9009840020ED1\n" 
+"E00748D5B7EE000A45E00098400246D1FCF717FD212101\n" 
+"609FED290A13BD8DED000A00A800F089FA04199DED000A\n" 
+"DFED240AB4EE600AF1EE10FA0BDBDFED220AB4EE600AF1\n" 
+"EE10FA04D5E00723D5B7EE000A20E060EE000AE0070ED5\n" 
+"9FED1B0A9FED1B1A00EE801ADFED1A1A41EE201AB7EE00\n" 
+"0A01EEA00A0DE0DFED161A9FED162A00EEA12ADFED151A\n" 
+"20EE201A42EE201A01EE210AA00748BFB1EE400A13BD00\n" 
+"0083F9223F0000004F0000C94600A0FD400020A23A0000\n" 
+"34330030C22EFFFFFF7FFEFF7FB9000080399349B2BA36\n" 
+"A02A3DDFFFFFBE6E8C4CB94283083CA1AA2ABEF8B52DED\n" 
+"048B154641EC180B82B053EC182BC448C449D5F703F8C4\n" 
+"4AC44B41EC190B21F00041E2F725F880F0F38051EC190B\n" 
+"00220023E2F735F853EC192B99BF0020BC490020BC49E6\n" 
+"F73CF9E2F7CCF8040051D0D4F7CCFF0022B84BD4F7E0FF\n" 
+"41EC190B53EC192B4FF0A040B449D4F7D7FF02460B4651\n" 
+"EC180BE2F7E1F806460F4653EC192B4FF0C040AE49D4F7\n" 
+"C8FF02460B4630463946E2F7D2F806460F4653EC192B4F\n" 
+"F00050A749D4F7B9FF02460B4630463946E2F7C3F80646\n" 
+"0F4653EC192B0020A149D4F7ABFF02460B4630463946E2\n" 
+"F7B5F806460F4653EC192B4FF000509B49D4F79CFF0246\n" 
+"0B4630463946E2F7A6F841EC180B04F00300451951EC18\n" 
+"0B6FF00102944BE1F7CCFF0BD800224FF07953E1F7AEFF\n" 
+"05D2E80740F18E819FED8E8B8AE153EC182BD4F779FF41\n" 
+"EC190BE80731D553EC192B8A488A49D4F76FFF8A4A8A4B\n" 
+"E6F7BDF853EC192BD4F767FF884A884BE6F7B5F853EC19\n" 
+"2BD4F75FFF864A864BE6F7ADF853EC192BD4F757FF844A\n" 
+"844BE6F7A5F853EC192BD4F74FFF824B6FF05102E6F79C\n" 
+"F853EC192BD4F746FF0022624B37E053EC182B51EC190B\n" 
+"D4F73DFF06460F4653EC192B91489149D4F735FF914A91\n" 
+"4BE6F783F853EC192BD4F72DFF8F4A8F4BE6F77BF853EC\n" 
+"192BD4F725FF8D4A8D4BE6F773F853EC192BD4F71DFF8B\n" 
+"4A8B4BE6F76BF853EC192BD4F715FF894A564BE6F763F8\n" 
+"32463B46D4F70DFF53EC182BE6F75BF841EC180B13E18D\n" 
+"ED008BDDE90001DDE90023C3F30A5140F2FF72914213D0\n" 
+"002904BF190350EA11301CD1E80748BF9FED478BA80740\n" 
+"F1038151EC180B81F0F1940320498600004141EC180BFB\n" 
+"E0190350EA113040F0F780FCF77FFB2121016002B04FF0\n" 
+"FF306FF00041EFE08DED008B00A800F064F945199DED00\n" 
+"8B354B51EC180B6FF00102E1F70AFF0BD800224FF07953\n" 
+"E1F7ECFE05D2E80740F1CC809FED2D8BC8E053EC182BD4\n" 
+"F7B7FE41EC190BE8076AD553EC192B29482949D4F7ADFE\n" 
+"294A294BE5F7FBFF53EC192BD4F7A5FE274A274BE5F7F3\n" 
+"FF53EC192BD4F79DFE254A254BE5F7EBFF53EC192BD4F7\n" 
+"95FE234A234BE5F7E3FF53EC192BD4F78DFE214B6FF051\n" 
+"02E5F7DAFF53EC192BD4F784FE0022014B8AE000BF0000\n" 
+"F03F83C8C96D305FE43F0000A0FFFFFFDF410000E03F00\n" 
+"00E0BF0000303EFB21B941B410114026A6513E5C14D33C\n" 
+"9A833B3B5555C5BFFFFF3FBE000000000000F03F09260A\n" 
+"1039BA213E3BA861C6F97D92BE63AC30909F01FA3EF6FB\n" 
+"51166CC156BFB10255555555A53FFFFFDFBF53EC182B51\n" 
+"EC190BD4F742FE06460F4653EC192B13481449D4F73AFE\n" 
+"134A144BE5F788FF53EC192BD4F732FE114A124BE5F780\n" 
+"FF53EC192BD4F72AFE0F4A104BE5F778FF53EC192BD4F7\n" 
+"22FE0D4A0E4BE5F770FF53EC192BD4F71AFE0B4A0C4B18\n" 
+"E000BFB08F2FC310D8E53D8F0C73A1E1E55ABE4DADE44F\n" 
+"E31DC73E3EE3B519A0012ABFFAF010111111813F425555\n" 
+"555555C5BFE5F74EFF32463B46D4F7F8FD53EC182BE5F7\n" 
+"46FF41EC180BA80705D551EC180B81F0004141EC180B02\n" 
+"B051EC180BBDEC048BF4BD10B52DED028B044682B094ED\n" 
+"008A9FED2D0A28EE000AB5EE400A8DED000AF1EE10FAAC\n" 
+"BFF6EE000AFEEE000A30EE200A8DED000A002100A800F0\n" 
+"0CF99DED000AB5EE400AF1EE10FA17D0DFED1F0A20EE20\n" 
+"0ADFED1E0A00EE608ADFED1D0A00EE608ADFED1C0A00EE\n" 
+"608ADFED1B0A00EE608ADFED1A0A00EE608A84ED008ADF\n" 
+"ED180A9DED000AB4EE600AF1EE10FA06D4DFED140AB4EE\n" 
+"600AF1EE10FA05DBDFED120A00F0FFF88DED000A9DED00\n" 
+"0ABDEEC00A02B010EE100A00F00300BDEC028B10BD0000\n" 
+"83F9223F000080380000C94600A0FD400020A23A000034\n" 
+"330030C22E000000CF0100004F0000004FD0B52DED048B\n" 
+"044682B094ED008B4748474953EC182BD4F761FDCDE900\n" 
+"0100220023E1F79DFDDDE9002399BF0020414900204149\n" 
+"E5F7A4FECDE90001002100A800F058F9DDE90023002000\n" 
+"21F6F7EEFD4ED03A49D4F742FD41EC190B53EC192B4FF0\n" 
+"A0403649D4F739FD02460B4651EC180BE1F743FE06460F\n" 
+"4653EC192B4FF0C0403049D4F72AFD02460B4630463946\n" 
+"E1F734FE06460F46F19403B04C860053EC192B4FF00050\n" 
+"2949D4F71BFD02460B4630463946E1F725FE06460F4653\n" 
+"EC192B00202349D4F70DFD02460B4630463946E1F717FE\n" 
+"06460F4653EC192B4FF000501D49D4F7FEFC02460B4630\n" 
+"463946E1F708FE41EC180B84ED008BDDE90001164A174B\n" 
+"E1F718FD04D3164A164BE1F72BFD05D80022154B00F030\n" 
+"F9CDE90001DDE90001E1F7C2FD02B000F00300BDEC048B\n" 
+"D0BD83C8C96D305FE43F0000E03F0000E0BF0000303EFB\n" 
+"21B941B410114026A6513E5C14D33C9A833B3B0000C0FF\n" 
+"FFFFDFC10100C0FFFFFFDF410000E0410268C2F3C752FF\n" 
+"2A06D10068400201D1012070470220704703685B0016D0\n" 
+"C2F19602521A012A11DB182A04DB016801F00041016007\n" 
+"E0012191400268491E11404A40026011B14FF0FF307047\n" 
+"0020704710EE100A10EE901AA4464FF0FF034FEA410103\n" 
+"EAD0540A0E1CBF94EA030F92EA030F55D0B1EB400F2ED2\n" 
+"4FEAC11141F0004100F000434FEA002040F000404FEA90\n" 
+"00890864EB0204401A38BF01EB400018BF54F1000407D0\n" 
+"D1EB400038BF081818BFB4F10104F7D140002CD0B0FA80\n" 
+"F100FA01F0521A0EDB43EA102000EBC25000EE100A6446\n" 
+"704708BF00F0004000EE100A6446704743EA102000EE10\n" 
+"0A02F17F024FEAC25100EE901AF1EE100A20F4F851E1EE\n" 
+"101A20EE200AE1EE100A10EE100A64467047184600EE10\n" 
+"0A6446704709421CBF94EA030F92EA030F1CD04FF09842\n" 
+"01EE102A60EE810AB1EB400FCBD2244208BF20EE010A10\n" 
+"EE901A03EAD152A2F119024FEA012191D110EE100A03EA\n" 
+"D054A4F119048CE74FF0807212EB400F2CBF6FF0004011\n" 
+"F1807F644618BF6FF0004000EE100AF2F493AB70474268\n" 
+"C2F30A5240F2FF739A4209D14168090304BF0068002801\n" 
+"D1012070470220704743685B0004BF0368002B25D040F2\n" 
+"33439A1A521A012A1FDB352A06DB416801F00041416000\n" 
+"21016013E0012102F01F039940491E920607D542681140\n" 
+"4A40426002681143002202E0026811404A40026011B14F\n" 
+"F0FF30704700207047000070B540F2FF7601F0004C5B00\n" 
+"06EA11545D0D1ABFB442B54278E0B3EB410F08BF82424B\n" 
+"D2C3F3530343F48013C1F3130141F48011641B0B3C13D9\n" 
+"C90241EA5051B1FBF3FE03FB1E11A2FB0EE6DEEBC020B1\n" 
+"4101D28018594150EA010653D00B3CEBD80B34C4F12006\n" 
+"A14020FA06F6A0403143B1FBF3FE03FB1E11A2FB0EE6B0\n" 
+"EB0E00B14101D28018594102BF0146203D0020C1B3B1FA\n" 
+"81F39940C3F1200220FA02F211439840ED1A0A3509DBC0\n" 
+"0A40EA41504CEAF1940340508600D12101EB055170BD23\n" 
+"D070BDD5F10B05B5F120020DDAC5F120020300E84001FA\n" 
+"02F6E940934073F10043704151EB0C0170BD402D0DDC43\n" 
+"0821FA02F0C2F1200511FA05F6334373F1004370415CF1\n" 
+"000170BD6146002070BD53EA020E1ABFB442B54237E0B3\n" 
+"EB410F08BF8242CCD25B08B3FA83F504BFB2FA82F6AD19\n" 
+"0B3DB5F1200624BF02FA06F305E0AB40C5F1200622FA06\n" 
+"F63343AA40D5F1010524427FF46BAF31F00041B1FA81F4\n" 
+"04BFB0FA80F6A4190B3CB4F1200624BF00FA06F105E0A1\n" 
+"40C4F1200620FA06F63143A040D4F1010455E74FF40015\n" 
+"15EB410F2CBF6FF00041EB4218BF6FF00041BDE87040F2\n" 
+"F47FAA704700000000000000000000000072B6714601F0\n" 
+"0401042909D1EFF30980EFF30881EFF3098220E9F60FC4\n" 
+"F707BBEFF30880EFF30881EFF3098220E9F60FC4F7FDBA\n" 
+"72B6714601F00401042909D1EFF30980EFF30881EFF309\n" 
+"8220E9F60FC4F7F0BAEFF30880EFF30881EFF3098220E9\n" 
+"F60FC4F7E6BA72B6714601F00401042909D1EFF30980EF\n" 
+"F30881EFF3098220E9F60FC4F7D9BAEFF30880EFF30881\n" 
+"EFF3098220E9F60FC4F7CFBA72B6714601F00401042909\n" 
+"D1EFF30980EFF30881EFF3098220E9F60FC4F7C2BAEFF3\n" 
+"0880EFF30881EFF3098220E9F60FC4F7B8BA72B6714601\n" 
+"F0040109D1EFF30980EFF30881EFF3098220E9F60FC4F7\n" 
+"A9BAEFF30880EFF30881EFF3098220E9F60FC4F7A2BAFE\n" 
+"E750442042542025642025642025642025640000002DE9\n" 
+"F0412DED048B8CB006460F46904600A80FF2BC513022C5\n" 
+"F74EF8DFF864450A20206207206062A0620520E062DFF8\n" 
+"5805DFF85815CDE9000100A84FF03332DFF84C35C0E902\n" 
+"23DFF83C25DFF84435C0E904234FF03332DFF83C35C0E9\n" 
+"0623DFF83835C0E90823DFF83435C0E90A23DFF830550A\n" 
+"2129653168142291FBF2F1E965D8F80010022901D10521\n" 
+"23E03968102918D0B1F5807F06D0B1F5806F08D0B1F500\n" 
+"6F0AD012E04FF480712163002111E04FF4806121630221\n" 
+"0CE04FF400612163032107E010212163042103E04FF400\n" 
+"712163012100EBC100D0E90023DFF8C804DFF8C814D4F7\n" 
+"D9F941EC180B53EC182B0020DFF8B814D4F7D0F941EC10\n" 
+"0B85ED0A0B85ED080B53EC102BDFF8A404DFF8A414D4F7\n" 
+"C2F9C5E90C01202200212046D3F724FA9FED319B206AD4\n" 
+"F79EF953EC192BD4F7B2F953EC182BD4F7AEF9C4E90001\n" 
+"606AD4F791F953EC192BD4F7A5F953EC182BD4F7A1F9C4\n" 
+"E90201A06AD4F784F953EC192BD4F798F953EC182BD4F7\n" 
+"94F9C4E90401F19403D0538600E06AD4F777F953EC192B\n" 
+"D4F78BF953EC182BD4F787F9C4E906010020A865012068\n" 
+"66A86604F1340028660020287068650146C5E90E019FED\n" 
+"110B85ED100B85ED120B0CB0BDEC048BBDE8F081DFF8DC\n" 
+"030121416681669FED090B80ED100B80ED120B00210170\n" 
+"41650A460B46C0E90E2370470000000000000000E03F2D\n" 
+"431CEBE2361A3F2DE9F84F2DED068B8AB005464FF00008\n" 
+"9FEDDB9BB0EE498AF0EE698A04A81821C4F77CFEC1468D\n" 
+"ED010AF0EE601AF1EE611ACDED021AB1EE410A8DED030A\n" 
+"DA4C1E2201A9206EF5F74AFC2868022802D10220009001\n" 
+"E003200090206E616E00290CD0002800F085810088216D\n" 
+"8842C0F280814046606684ED0E9B7AE1A16E002939D01E\n" 
+"22216D09B2F5F752FC94ED149AF8EEC90A80EE200A10EE\n" 
+"100AD4F7D2F9C4E902011E2219EE101A09B2206EF5F75D\n" 
+"FC94ED149AF8EEC90A80EE200A10EE100AD4F7BFF9C4E9\n" 
+"04011E2219EE101A09B2206EF5F768FCD4ED140AF8EEE0\n" 
+"0A80EE200A10EE100AD4F7ACF9C4E906014046A06645E0\n" 
+"1E224146F5F709FC05461E22216D09B2206EF5F702FC06\n" 
+"4694ED140AB8EEC09A95ED000AD6ED000A30EE600A80EE\n" 
+"090A10EE100AD4F78BF9D4E90223E5F707FAC4E9020195\n" 
+"ED010AD6ED010A30EE600A80EE090A10EE100AD4F779F9\n" 
+"D4E90423E5F7F5F9C4E9040195ED020AD6ED020A30EE60\n" 
+"0A80EE090A10EE100AD4F767F9D4E90623E5F7E3F9C4E9\n" 
+"06011822414604A8D3F7F3F8454604AE40E01E22294609\n" 
+"B2206EF5F7B9FB07463868D4F74FF9D4E90223E1F789F9\n" 
+"41EC100B53EC102BD4F773F8DDE90423E5F7C1F9CDE904\n" 
+"017868D4F73CF9D4E90423E1F776F941EC100B53EC102B\n" 
+"D4F760F8D6E90223E5F7AEF9C6E90201B868D4F729F9D4\n" 
+"E90623E1F763F941EC100B53EC102BD4F74DF8D6E90423\n" 
+"E5F79BF9C6E904016D1C206D8542BBDBD4F729F841EC19\n" 
+"0BDDE9040153EC192BE1F709FACDE90401D6E9020153EC\n" 
+"192BE1F701FA41EC1A0B86ED02ABD6E9040153EC192BE1\n" 
+"F7F7F941EC190B86ED049BDDE9040153EC1A2BE5F76FF9\n" 
+"564A564BE1F743F807D294ED100B8DED040B94ED120B86\n" 
+"ED020B9DED040B84ED100B96ED02AB84ED12ABD4E90E01\n" 
+"4FF066324B4BD4F701F882468B46DDE9042351EC1A0BE5\n" 
+"F74BF902460B4651EC190BE1F7C3F9344A434BD3F7EFFF\n" 
+"02460B4650465946E5F73BF941EC100B84ED0E0B01223D\n" 
+"4BE1F723F806D890462078012802D1606D401C60654D46\n" 
+"0FE006EBC50090ED009B51EC180B53EC192BE0F7F7FF03\n" 
+"D2B0EE498AF1940360578600F0EE698A6D1C00988542EC\n" 
+"DBD4E9080153EC182BE1F700F802D9606D10280FDBE06D\n" 
+"A16D884204DA4846207060654FF001090020A06594ED0A\n" 
+"0B84ED080B12E0B8F1000F0FD1A06DE16D814209DA0121\n" 
+"2170494661654FF0020994ED0C0B84ED080B401CA06548\n" 
+"460AB0BDEC068BBDE8F28F00BF00000000000000007025\n" 
+"88009A9999999999C93F3333D33F9999E93F3333F33F33\n" 
+"3303403333E33F002588001F85EB51B89E234000001440\n" 
+"7B14AE47E17A843F2E431CEBE2362A3F6666EE3F9999A9\n" 
+"3F000034409A9999999999C93F333333333333E33F9A99\n" 
+"99999999E93F333333333333F33F333333333333034033\n" 
+"3333333333E33F47797243616C3D256400000041434343\n" 
+"616C3D25640000004D6F6265616D5F5374617274000000\n" 
+"0044554D50534554202564000050726F786920616C7265\n" 
+"616479203D20256420256400000050443A205365742564\n" 
+"202564000000004C542053502025642C20256400000000\n" 
+"4C54205750202564000000004C54205352202564000000\n" 
+"004C542053415220256400000050443A2050726F706572\n" 
+"747920534620256400005B415044525D204E545F535755\n" 
+"4E2025640000005B415044525D204E545F545755532025\n" 
+"640000005B415044525D204E545F424154434820256400\n" 
+"004C6962726172792072616E6765206973206F7665722C\n" 
+"20416464000050443A205343202564000000696E765F65\n" 
+"6E61626C655F696E5F7573655F6175746F5F63616C6962\n" 
+"726174696F6E0000433A5C50726F6A6563745C654D445C\n" 
+"48515C496E76656E53656E73655C6D706C5C616363656C\n" 
+"5F6175746F5F63616C2E63000000409C00000000803F00\n" 
+"0000005E836C3F15EFC33EF304353FF304353F15EFC33E\n" 
+"5E836C3F000000000000803F15EFC3BE5E836C3FF30435\n" 
+"BFF304353F5E836CBF15EFC33E000080BF000000005E83\n" 
+"6CBF15EFC3BEF30435BFF30435BF15EFC3BE5E836CBF00\n" 
+"000080000080BF15EFC33E5E836CBFF304353FF30435BF\n" 
+"5E836C3F15EFC3BE0000803F000000006DC47E3F36BDC8\n" 
+"3DBE147B3FC2C5473E0BFA743F31A0943E5E836C3F15EF\n" 
+"C33E98C5613FEA5AF13E31DB543FDA390E3F03E4453F99\n" 
+"67223FF304353FF304353F9967223F03E4453FDA390E3F\n" 
+"31DB543FEA5AF13E98C5613F15EFC33E5E836C3F31A094\n" 
+"3E0BFA743FC2C5473EBE147B3F36BDC83D6DC47E3F0000\n" 
+"00000000803F36BDC8BD6DC47E3FC2C547BEBE147B3F31\n" 
+"A094BE0BFA743F15EFC3BE5E836C3FEA5AF1BE98C5613F\n" 
+"DA390EBFF19403F05A860031DB543F996722BF03E4453F\n" 
+"F30435BFF304353F03E445BF9967223F31DB54BFDA390E\n" 
+"3F98C561BFEA5AF13E5E836CBF15EFC33E0BFA74BF31A0\n" 
+"943EBE147BBFC2C5473E6DC47EBF36BDC83D000080BF00\n" 
+"0000006DC47EBF36BDC8BDBE147BBFC2C547BE0BFA74BF\n" 
+"31A094BE5E836CBF15EFC3BE98C561BFEA5AF1BE31DB54\n" 
+"BFDA390EBF03E445BF996722BFF30435BFF30435BF9967\n" 
+"22BF03E445BFDA390EBF31DB54BFEA5AF1BE98C561BF15\n" 
+"EFC3BE5E836CBF31A094BE0BFA74BFC2C547BEBE147BBF\n" 
+"36BDC8BD6DC47EBF00000080000080BF36BDC83D6DC47E\n" 
+"BFC2C5473EBE147BBF31A0943E0BFA74BF15EFC33E5E83\n" 
+"6CBFEA5AF13E98C561BFDA390E3F31DB54BF9967223F03\n" 
+"E445BFF304353FF30435BF03E4453F996722BF31DB543F\n" 
+"DA390EBF98C5613FEA5AF1BE5E836C3F15EFC3BE0BFA74\n" 
+"3F31A094BEBE147B3FC2C547BE6DC47E3F36BDC8BD0800\n" 
+"4000180048001000400028005000200040003800580030\n" 
+"0048005800680048006000680070000800400010008000\n" 
+"1800C0002000000128004001300080013800C001500088\n" 
+"005800C8006000080168004801700088017800C8019800\n" 
+"D000A0001001A8005001B0009001B800D001E0001801E8\n" 
+"005801F0009801F800D801280160013001A0013801E001\n" 
+"7001A8017801E801B801F001000000000000803F36BDC8\n" 
+"3D6DC47E3FC2C5473EBE147B3F31A0943E0BFA743F15EF\n" 
+"C33E5E836C3FEA5AF13E98C5613FDA390E3F31DB543F99\n" 
+"67223F03E4453FF304353FF304353F03E4453F9967223F\n" 
+"31DB543FDA390E3F98C5613FEA5AF13E5E836C3F15EFC3\n" 
+"3E0BFA743F31A0943EBE147B3FC2C5473E6DC47E3F36BD\n" 
+"C83D0000803F000000006DC47E3F36BDC8BDBE147B3FC2\n" 
+"C547BE0BFA743F31A094BE5E836C3F15EFC3BE98C5613F\n" 
+"EA5AF1BE31DB543FDA390EBF03E4453F996722BFF30435\n" 
+"3FF30435BF9967223F03E445BFDA390E3F31DB54BFEA5A\n" 
+"F13E98C561BF15EFC33E5E836CBF31A0943E0BFA74BFC2\n" 
+"C5473EBE147BBF36BDC83D6DC47EBF000000000000803F\n" 
+"2FFB483D0FB17F3F36BDC83D6DC47E3F8340163EAC3A7D\n" 
+"3FC2C5473EBE147B3FCCCF783EF853783F31A0943E0BFA\n" 
+"743FD47CAC3E0809713F15EFC33E5E836C3F80E8DA3ED8\n" 
+"6B673FEA5AF13E98C5613F3D9C033F1A945B3FDA390E3F\n" 
+"31DB543FC07F183F029F4D3F9967223F03E4453F4AEB2B\n" 
+"3FF9AE3D3FF304353FF304353FF9AE3D3F4AEB2B3F03E4\n" 
+"453F9967223F029F4D3FC07F183F31DB543FDA390E3F1A\n" 
+"945B3FF19403805E86003D9C033F98C5613FEA5AF13ED8\n" 
+"6B673F80E8DA3E5E836C3F15EFC33E0809713FD47CAC3E\n" 
+"0BFA743F31A0943EF853783FCCCF783EBE147B3FC2C547\n" 
+"3EAC3A7D3F8340163E6DC47E3F36BDC83D0FB17F3F2FFB\n" 
+"483D0000803F000000000FB17F3F2FFB48BD6DC47E3F36\n" 
+"BDC8BDAC3A7D3F834016BEBE147B3FC2C547BEF853783F\n" 
+"CCCF78BE0BFA743F31A094BE0809713FD47CACBE5E836C\n" 
+"3F15EFC3BED86B673F80E8DABE98C5613FEA5AF1BE1A94\n" 
+"5B3F3D9C03BF31DB543FDA390EBF029F4D3FC07F18BF03\n" 
+"E4453F996722BFF9AE3D3F4AEB2BBFF304353FF30435BF\n" 
+"4AEB2B3FF9AE3DBF9967223F03E445BFC07F183F029F4D\n" 
+"BFDA390E3F31DB54BF3D9C033F1A945BBFEA5AF13E98C5\n" 
+"61BF80E8DA3ED86B67BF15EFC33E5E836CBFD47CAC3E08\n" 
+"0971BF31A0943E0BFA74BFCCCF783EF85378BFC2C5473E\n" 
+"BE147BBF8340163EAC3A7DBF36BDC83D6DC47EBF2FFB48\n" 
+"3D0FB17FBF000000000000000000000000000000000DFA\n" 
+"82005F9C8200A19C8200D39C8200F8FFFFFF0000000000\n" 
+"000000000000005D9C82009F9C8200D19C82007374696E\n" 
+"677261792E637070000000005374617274696E67205374\n" 
+"696E67726179496E69740A0000527063486F737452783A\n" 
+"3A5374617274282563290A00000042757273744D6F6465\n" 
+"2825632C2025632C2025752C202575290A00005F6F7453\n" 
+"74696E677261794374726C2E6F74436F72652E57726974\n" 
+"654461746120636F756C646E2774207772697465202564\n" 
+"20427965730A0000000068616C5F6932632E6300000000\n" 
+"000000000000005744820000000000F1FA820009B68600\n" 
+"F8FFFFFF000000000000000000000000D9B6860068616C\n" 
+"5F7472616E73706F72742E63707000000068616C5F7472\n" 
+"616E73706F72742E63707000000068616C5F7370696D2E\n" 
+"630000696E765F696E69745F696E76656E73656E73655F\n" 
+"61706900433A5C50726F6A6563745C654D445C48515C49\n" 
+"6E76656E53656E73655C6D706C5C696E76656E73656E73\n" 
+"655F6170692E630000004F4E4C59204C4943454E534544\n" 
+"20544F2053414D53554E4720464F522055534520574954\n" 
+"4820444154412046524F4D2049434D3230363035000000\n" 
+"00000000004D414345574E494400000000414243444546\n" 
+"4748494A4B4C4D4E4F505152535455565758595A616263\n" 
+"64656667000000253032782025632530376C7525632000\n" 
+"6C6F676765722E63707000004C6F67676572466C757368\n" 
+"65725461736B0000007270635F656E67696E652E680000\n" 
+"0000F19403106286000000000000000000000000000000\n" 
+"0000CF618200E3618200F36182008D6282009762820031\n" 
+"B686009F6282007472616E73706F72745F6D67722E6370\n" 
+"700000005472616E73706F727452785461736B456E7472\n" 
+"79000000005741524E494E473A20544C20547820666169\n" 
+"6C6564287265713D25642C2073656E743D2564290A0047\n" 
+"6E737352785461736B0000676E73735F636F72655F6861\n" 
+"6C2E637070000000476E7373436F726548616C3A3A2043\n" 
+"6C6F73652064657465637465640A000000446576696365\n" 
+"526561642072657475726E65642030210A000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000007FF582\n" 
+"008FF58200A7F58200C3F58200E7F58200F7F5820013F6\n" 
+"82003DF682006DF68200B7F68200000000000000000000\n" 
+"00000000000000D9F6820017F782000000000000000000\n" 
+"0000000000000000000000000000000085F78200000000\n" 
+"00000000000000000000000000000000008FF88200C7F8\n" 
+"8200FDF8820000000000000000000000000000000000A9\n" 
+"F98200E1F9820000000000000000000000000000000000\n" 
+"C5FA8200000000000000000000000000000000003BFB82\n" 
+"00000000000000000000000000000000002DF48200F8FF\n" 
+"FFFF000000000000000000000000DFB68600DFB68600DF\n" 
+"B68600DFB68600DFB68600DFB68600DFB68600DFB68600\n" 
+"DFB68600DFB68600000000000000000000000000000000\n" 
+"008DF78200F8FFFFFF000000000000000000000000DFB6\n" 
+"8600DFB68600DFB68600DFB68600DFB686000000000000\n" 
+"000000000000000000000033F98200F8FFFFFF00000000\n" 
+"0000000000000000DFB68600DFB6860000000000000000\n" 
+"0000000000000000000DFA8200F8FFFFFF000000000000\n" 
+"000000000000DFB68600DFB68600DFB686000000000000\n" 
+"0000000000000000000000F1FA8200F8FFFFFF00000000\n" 
+"0000000000000000DFB686000000000000000000000000\n" 
+"00000000006DFB8200F8FFFFFF00000000DFB68600DFB6\n" 
+"860000000000000000000000000000000000B5EA8200BF\n" 
+"EA8200C9EA8200D3EA8200DDEA8200E1EA8200EBEA8200\n" 
+"7270635F656E67696E652E6370700000000000001F0000\n" 
+"0000100B4020100B4040100B4060100B4080100B40A010\n" 
+"0B40C0100B4000110B40200000002300000000200B4020\n" 
+"200B4040200B4060200B4080200B40A0200B40C0200B40\n" 
+"00210B406D63755F7265712E6300000000040B40000000\n" 
+"00F19403A065860000040B400400000000040B40080000\n" 
+"0000040B400C00000000040B401000000000040B401400\n" 
+"000000040B401800000000040B401C00000004040B4000\n" 
+"00000004040B400400000004040B400800000004040B40\n" 
+"0C00000004040B401000000004040B401400000004040B\n" 
+"401800000004040B401C00000008040B40000000000804\n" 
+"0B400400000008040B400800000008040B400C00000008\n" 
+"040B401000000008040B401400000008040B4018000000\n" 
+"08040B401C0000000C040B40000000000C040B40040000\n" 
+"000C040B40080000000C040B400C0000000C040B401000\n" 
+"00000C040B40140000000C040B40180000000C040B401C\n" 
+"00000010040B400000000010040B400400000010040B40\n" 
+"0800000010040B400C0000006D73735F6170692E630000\n" 
+"00706D2E63000000007379735F636C6F636B2E63005000\n" 
+"0B407000000050000B400007000050000B400070000050\n" 
+"000B400100000050000B400000030050000B4000000030\n" 
+"54000B400000300054000B40000003005C000B40000000\n" 
+"3058000B400700000054000B40000000705C000B400300\n" 
+"00005C000B40300000005C000B400003000060000B4000\n" 
+"0000305C000B40030000005C000B40300000005C000B40\n" 
+"0003000060000B400000010050000B400000100060000B\n" 
+"400010000050000B400000100060000B40001000005800\n" 
+"0B407000000058000B400007000058000B400070000054\n" 
+"000B406000000054000B400060000060000B4000060000\n" 
+"58000B400000007060000B400000600060000B40000060\n" 
+"0040000BC0FFFFFFFF40000B40A002000044000BC0FFFF\n" 
+"FFFF44000B400000100040000BC08801000040000B4001\n" 
+"00030048000BC0FFFFEFFE48000B400000000044000BC0\n" 
+"FFFFFF7F44000B400000000054000BC0F8F8FCFF54000B\n" 
+"400000000060000BC08FFFFEFF60000B40000000005800\n" 
+"0BC0FFFF88FF58000B400000350018000BC0FFFFFFFF18\n" 
+"000B403F00000010000BC0FFFFFFFF10000B4003000000\n" 
+"24000BC0FFFF00FF24000B400000180040000BC0FFFFFF\n" 
+"FF40000B408801000044000BC0FFFFFBFF44000B400000\n" 
+"000040000BC0FFFEFFFF40000B400000000040000BC0FF\n" 
+"FFFFFF40000B408801000044000BC0FFFFFFFF44000B40\n" 
+"0000040040000BC0F7FFFFFF40000B400000000040000B\n" 
+"C0FFFFFFFF40000B40A002000044000BC0FFFFEFFF4400\n" 
+"0B400000000040000BC0FFFDFFFF40000B400000000040\n" 
+"000BC0FFFFFFFF40000B40A002000044000BC0FFFFFFFF\n" 
+"F194033069860044000B400000100040000BC0DFFFFFFF\n" 
+"40000B400000000048000BC0FFF8FFFF48000B40001000\n" 
+"0044000BC0F3FFFFFF44000B400C00000040000BC0FFFF\n" 
+"FFFF40000B400200000044000BC0FFFFFFFF44000B4000\n" 
+"00010044000BC0FFFFFEFF44000B400000000040000BC0\n" 
+"FDFFFFFF40000B400000000048000BC0FFEFFFFF48000B\n" 
+"400000000048000BC0F8FFFFFF48000B40100000004400\n" 
+"0BC0FCFFFFFF44000B400300000018000BC0FFFFFFFF18\n" 
+"000B400100000044000BC0FCFFFFFF44000B4001000000\n" 
+"18000BC0FFFFFFFF18000B400100000044000BC0FCFFFF\n" 
+"FF44000B400200000018000BC0FEFFFFFF18000B400000\n" 
+"00007574696C5F6D61696E2E63007370696D5F64726976\n" 
+"65722E6300000000000040000000000000000000000000\n" 
+"696E765F656E61626C655F666173745F6E6F6D6F740000\n" 
+"00433A5C50726F6A6563745C654D445C48515C496E7665\n" 
+"6E53656E73655C6D706C5C666173745F6E6F5F6D6F7469\n" 
+"6F6E2E63000000696E765F67656E65726174655F6E6F5F\n" 
+"6779726F5F667573696F6E00433A5C50726F6A6563745C\n" 
+"654D445C48515C496E76656E53656E73655C6D706C5C6E\n" 
+"6F5F6779726F5F667573696F6E2E63000000696E765F65\n" 
+"6E61626C655F6E6F5F6779726F5F667573696F6E000000\n" 
+"696E765F696E69745F6D706C00000000433A5C50726F6A\n" 
+"6563745C654D445C48515C496E76656E53656E73655C6D\n" 
+"6C6C6974655C6D706C2E63000000696E765F7374617274\n" 
+"5F6D706C0000004F535F4572726F722E6300007379735F\n" 
+"657863657074696F6E2E6300004D9AD77934E3AEF2BF68\n" 
+"258BC6115CA9E4337ED09D4A075B16C18C226FB8F51F52\n" 
+"85C8662BFCB1EDA0773A94D90E43B6FB2C61CF82551844\n" 
+"09DE933D70A7EA3E73A4E9470ADD90CC81561BB5F82F62\n" 
+"97DA0D40EEA374396528FFB21C5186CB216CBBF65815C2\n" 
+"8FD39E4904AAE7307D88C5125FF1BC6B267A37E0AD034E\n" 
+"99D47C31E6AB05489FD28EC31459F7BA6D20D5984F02AC\n" 
+"E1367B276ABDF05E13C489632EF9B41A5780CD91DC0B46\n" 
+"E8A5723FCA87501DB3FE29643875A2EF410CDB96420FD8\n" 
+"953B76A1ECB0FD2A67C984531EEBA6713C92DF08451954\n" 
+"83CE602DFAB75D10C78A2469BEF3AFE23578D69B4C01F4\n" 
+"B96E238DC0175A064B9CD17F32E5A80000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"00000000000000000000000000000000000000000000F1\n" 
+"9403C06C86000000000000000000000000000000000000\n" 
+"0000000000000000000000000000000000000000000000\n" 
+"A570830000000000BF70830000000000E9708300000000\n" 
+"002F718300000000000000000000000000000000007371\n" 
+"8300000000008D71830000000000B571830000000000FD\n" 
+"7183000000000000000000000000000000000000000000\n" 
+"00000000000000007472616E73706F72745F6C61796572\n" 
+"2E63707000646C6973742E630068775F74696D65722E63\n" 
+"000000010800020900030A00040B01010C01020D01030E\n" 
+"01040F0201100202110203120204130301140302150303\n" 
+"16030417506D6148616E6C6465547843616C6C6261636B\n" 
+"000A0A2121212121202020202025733A2063625F706172\n" 
+"616D3D307825582C207374617475733D307825582C2078\n" 
+"6665725F6C656E3D30782558202020202021212121210A\n" 
+"0A000000506D6148616E6C6465527843616C6C6261636B\n" 
+"00706D615F6472697665722E6300000000636D642E6300\n" 
+"0000756172745F6472697665722E6300000029CF8200CB\n" 
+"D2820003D382003FD482008BD48200CFD4820041D58200\n" 
+"9BD5820045D68200004D9AD77934E3AEF2BF68258BC611\n" 
+"5CA9E4337ED09D4A075B16C18C226FB8F51F5285C8662B\n" 
+"FCB1EDA0773A94D90E43B6FB2C61CF8255184409DE933D\n" 
+"70A7EA3E73A4E9470ADD90CC81561BB5F82F6297DA0D40\n" 
+"EEA374396528FFB21C5186CB216CBBF65815C28FD39E49\n" 
+"04AAE7307D88C5125FF1BC6B267A37E0AD034E99D47C31\n" 
+"E6AB05489FD28EC31459F7BA6D20D5984F02ACE1367B27\n" 
+"6ABDF05E13C489632EF9B41A5780CD91DC0B46E8A5723F\n" 
+"CA87501DB3FE29643875A2EF410CDB96420FD8953B76A1\n" 
+"ECB0FD2A67C984531EEBA6713C92DF0845195483CE602D\n" 
+"FAB75D10C78A2469BEF3AFE23578D69B4C01F4B96E238D\n" 
+"C0175A064B9CD17F32E5A868616C5F74696D65722E6300\n" 
+"506D6148616E646C65496E74720000000A0A2D2D2D2D2D\n" 
+"2020202020504D415F415353455254203A2046696C6520\n" 
+"2573203A2046756E6374696F6E2025732829203A204C69\n" 
+"6E652023202025642020202D2D2D2D2D0A0A00706D615F\n" 
+"636F6D6D6F6E5F6C69622E6300000000506D6147657446\n" 
+"6400000000506D61496E697443686E6C000A2D2D2D2020\n" 
+"2025732829203A204552524F523A2073746174653D2564\n" 
+"2C2020706D615F63625F7074722D3E696E666F2E737461\n" 
+"74653D25642C20786665725F636F6D706C6574653D2564\n" 
+"2C2072656D61696E5F6C656E3D307825582C207265F194\n" 
+"0350708600715F6C656E3D307825582020202D2D2D0A0A\n" 
+"0000506D61436865636B52785374617475730000000050\n" 
+"6D61476574526376644461746100000A2A2A2A20202025\n" 
+"732829203A20626173655F616464723D30782558203A20\n" 
+"777261705F6269745F657175616C3D25642C206375725F\n" 
+"73775F6F66667365743D307825582C206375725F68775F\n" 
+"6F66667365743D307825582C20726376645F6C656E3D30\n" 
+"7825582C206E6578745F73775F7074723D307825582C20\n" 
+"707265765F68775F7074723D307825582020202A2A2A0A\n" 
+"0A00706D615F6C69622E630000000A2D2D2D2020204552\n" 
+"524F523A20746F74616C5F7866657265645F6C656E3D25\n" 
+"64206E6F7420657175616C20746F207265715F6C656E3D\n" 
+"307825582020202D2D2D0A0A00506D6147657444617461\n" 
+"00000A0A2D2D2D20202025733A2072633D2569203A2046\n" 
+"61696C656420746F20636F6D706C65746520504D412052\n" 
+"7820586665723A20706D615F66643D25642C2061646472\n" 
+"3D307825582C206C656E3D307825580A000A0A2B2B2B20\n" 
+"202025733A2072633D2569203A20205375636365737366\n" 
+"756C6C7920436F6D706C6574656420504D412052782058\n" 
+"6665723A20706D615F66643D25642C20616464723D3078\n" 
+"25582C206C656E3D307825580A00000000696E69745F6D\n" 
+"61696E2E63004C6F775072696F726974795461736B0000\n" 
+"00000000000000000000000000000033F98200BBEC8200\n" 
+"E3B68600F8FFFFFF000000000000000000000000B9EC82\n" 
+"00E5B68600000000000000000000000000000000002DF4\n" 
+"820013ED82004BED820083ED82008BED820093ED820097\n" 
+"ED82009FED8200A3ED8200C9ED8200DFED8200F8FFFFFF\n" 
+"00000000000000000000000011ED820049ED820081ED82\n" 
+"0089ED820091ED820095ED82009DED8200A1ED8200C7ED\n" 
+"8200DDED8200000000000000000000000000000000008D\n" 
+"F7820005EE82000FEE82001BEE82006DEE8200B1EE8200\n" 
+"F8FFFFFF00000000000000000000000003EE82000DEE82\n" 
+"0019EE82006BEE8200AFEE820000000000000000000000\n" 
+"0000000000006DFB8200FDEE820021EF8200F8FFFFFF00\n" 
+"000000FBEE82001FEF8200686F73745F636F6D5F72782E\n" 
+"637070005270634C6F6767696E67526571756573743A3A\n" 
+"5365744C6F67676572436F6E6669672873697A653D256C\n" 
+"75202D2069676E6F7265642C207468726573686F6C643D\n" 
+"2575202D2069676E6F726564290A005270634C6F676769\n" 
+"6E67526571756573743A3A5365744C6F6767696EF19403\n" 
+"E073860067436F6E666967286F75747075743D2563202D\n" 
+"2069676E6F7265642C207072696F3D253032782C206661\n" 
+"633D25303878290A00006175746F5F626175642E630023\n" 
+"BE820045BE82006DBE82000000000007BF82004572726F\n" 
+"72202D20556E6B6E6F776E20636F6D6D616E640A000000\n" 
+"006932636D2E6300004932636D57616974446F6E653A20\n" 
+"74696D6564206F75740A000000004932532D4D434C4B00\n" 
+"000000A7DE82005FDF8200A3E082002FE08200C3DF8200\n" 
+"00000000000000003FE382008BE382007373695F647269\n" 
+"7665722E6300000000A9C58200F7C58200FBC68200B1C6\n" 
+"82006FC682000000000000000000C3C782002DC8820010\n" 
+"B5DFF8D44520620C220021201DD1F76EF904F124002061\n" 
+"04F13C00606104F15400A06104F16C00E06100202070FF\n" 
+"206070A07010BD00002DE9F0472DED068B86B00C464FF0\n" 
+"000ADFF88C55016869604168A9608068E860D046404601\n" 
+"90049003900290052205F10C01286900F045FA052205F1\n" 
+"0801686900F03FFA0522291DA86900F03AFA052301AA03\n" 
+"21286900F049FAB0EE408A052304AA0321686900F041FA\n" 
+"F0EE408A052303AA0321A86900F039FAB0EE409A052203\n" 
+"21286900F06EFAF0EE080AC0EE209A95ED02AAD5ED01AA\n" 
+"F5EE40AAF1EE10FA0FD1B5EE40AAF1EE10FA0AD195ED03\n" 
+"0AB5EE400AF1EE10FA03D100F0FEF94FF00108564695F8\n" 
+"019095ED030A6AEEAA0A4AEE0A0A40EE000A10EE900AD2\n" 
+"F754F941EC100BE3F744FA51EC100BD2F774F900900522\n" 
+"00A9E86900F0E3F99DED000ADFEDA20AB4EE600AF1EE10\n" 
+"FA7DD4DFEDA00AB4EE600AF1EE10FA76DA052302AA0321\n" 
+"E86900F0E2F9F0EE0C0AB4EE600AF1EE10FA69D59FED97\n" 
+"0AB4EE408AF1EE10FA62D59FED940AF4EE409AF1EE10FA\n" 
+"06D59FED920AF4EE409AF1EE10FA51DA19EE900AD2F710\n" 
+"F921F000413246DFF83434DFF761F811D2B0EE000AF4EE\n" 
+"408AF1EE10FA17D4F4EE408AF1EE10FA3CDAB4EE409AF1\n" 
+"EE10FA0EDB36E0052301AA1946286900F0A2F9F7EE000A\n" 
+"B4EE600AF1EE10FA29D5B04695ED030ADDED000A80EE20\n" 
+"0A10EE100AD2F7DEF841EC100BF0F78CF953EC102B4FF0\n" 
+"0040DFF8C813D2F700F841EC100B00F022FA51EC100BDF\n" 
+"F7DCF80746B8F1000F5AD1E6F7D4FD3D280DDB6878FF28\n" 
+"03D100F056F9304674E0FF2068704FF0FF30207001206D\n" 
+"E0A868D2F7B1F841EC110BB0EE418AF0EE618A95ED010A\n" 
+"B1EE400A10EE100AD2F7A3F841EC100BB0EE481AF0EE68\n" 
+"1A00F085FA53EC102B4FF00040D449D1F7C2FFF1940370\n" 
+"77860041EC100B00F0E4F951EC100BDFF79EF8060001D5\n" 
+"06F5B47606F12D005A2190FBF1F8B8F1040F00D1D04638\n" 
+"4600F03BF8002806D03A463146404600F039F8002802D1\n" 
+"00F00AF904E0A878404501D085F80280A878484502D1B9\n" 
+"F1FF0F1DD195F8201011F0060F01D0012604E03A463146\n" 
+"00F066F806463846E6F766FD3D280CDA002E0AD0A87869\n" 
+"78814206D0687020704FF0010AFF2800D02870504606B0\n" 
+"BDEC068BBDE8F0873C3079288041C00F704718B4A34C23\n" 
+"7894F8204014F0060F01D018BC3DE02FD4984208D05A1C\n" 
+"541002EB9474A410A2EB840290420ED15A224243283A00\n" 
+"2807D1B1F59D7F06DD02F5B472914202DA15E0914213DB\n" 
+"984208D0DA1C531002EB93739B10A2EB830290420AD15A\n" 
+"2242432832002801D12E2903DA8A4201DA002000E00120\n" 
+"12BC7047DD0CFB40A7493C416766E63F3E1B3041D7B409\n" 
+"412DE9F04391B004460D4691467C4E96F8008000274846\n" 
+"E6F7F7FC002804D44846E6F7F2FC1E2822DB4846E6F7ED\n" 
+"FC1E2806DB4846E6F7E8FC282801DA012716E04846E6F7\n" 
+"E1FC282806DB4846E6F7DCFC322801DA02270AE04846E6\n" 
+"F7D5FC32280ADB4846E6F7D0FC3D2805DA0327B8F1000F\n" 
+"45D4002C01D5002042E0444509D008F10100411000EB91\n" 
+"718910A0EB8100844217D100A80FF278114022C2F7E0FC\n" 
+"3801002C00A908D141588D420ADA00A940184068A84205\n" 
+"DA2BE0401850F82400854226DB444509D008F103004110\n" 
+"00EB91718910A0EB8100844211D100A80FF270114022C2\n" 
+"F7BCFC3801002C00A90BD14158A94204DA00A94018C068\n" 
+"854208DB012011B0BDE8F083401850F82400A842F6DAFF\n" 
+"20B0700020F3E73948FF21817070470388934201D30023\n" 
+"038003885B1C03809BB2934201D300220280028800EB82\n" 
+"00096841600120704700002DE9F8432DED028B04460D46\n" 
+"16461F469FED278A4FF00008B4F9009000EE105AF8EEC0\n" 
+"8A3A4600F027F880EE280A86ED000A05E0A7F101090FFA\n" 
+"89F908F101080FFA88F8A84511DA04EB890090ED010AD6\n" 
+"ED000A30EE600A00EE008AB9F1010FE8DBA9F101090FFA\n" 
+"89F9E7E788EE280ABDEC028BBDE8F18330B49FED0D0A00\n" 
+"23B0F900400EE024B2250006D400EB8505D5ED010A30EE\n" 
+"200A641E24B2002C00D5541E5B1C1BB28B42EDDB30BC70\n" 
+"470000000000001058880000001040DCA54C40DCA54CC0\n" 
+"4A0100003C00000096000000F00000004F010000410000\n" 
+"009B000000F50000005401000046000000A0000000FA00\n" 
+"00005E01000050000000AA00000004010000F19403007B\n" 
+"86001E00000078000000D20000002C0100001900000073\n" 
+"000000CD00000027010000140000006E000000C8000000\n" 
+"220100000A00000064000000BE0000001801000000B583\n" 
+"B001218DED000B00A8FDF7DEF9401E012811D9002100A8\n" 
+"FDF7D7F960B10198DDE90023002847BF00200549002005\n" 
+"49E2F711FFCDE900019DED000B03B000BD00000000F0BF\n" 
+"0000F03F38B50FB4DDE9020100F074F80546DDE9000100\n" 
+"F06FF8012DB8BF012830DA0198002807D5DDE9000181F0\n" 
+"0041CDE90001082400E000240398002807D5DDE9020181\n" 
+"F00041CDE9020184F00604DDE90201DDE90023DEF7B2FD\n" 
+"04D2DEF755FF41EC100B29E0002D08D5DDE90001DDE902\n" 
+"23DEF74AFF41EC100B20E09FED150B1DE0022808BFDDE9\n" 
+"000120D0022D08BFDDE902011BD085420CBF9FED0F0B9F\n" 
+"ED0C0B019900294CBF082400240399002948BF84F00604\n" 
+"012801D184F00204224605B0BDE8304051EC100BF9F7A4\n" 
+"BD05B030BD0000000000000000000000000000F03F80B5\n" 
+"53EC112B51EC100BFFF789FF41EC100B01BD03B4DDE900\n" 
+"23C3F30A5140F2FF72914206D001B10CE0190350EA1130\n" 
+"06D00BE0190350EA113014BF0220012002B070474FF0FF\n" 
+"3002B070476FF0010002B07047DFF81404002101604160\n" 
+"8160C160016141618161C161016241628162C162084602\n" 
+"4610E0DFF8F41341F8202001EB80018A620A65DFF8E813\n" 
+"41F8202001EB80018A620A65401C0A28ECDB70472DE9F8\n" 
+"432DED028B4FF00009DFF8BC4320680A2806DB0A382060\n" 
+"6068002801D1012060602568DFF8A86306EB850080ED00\n" 
+"0A06EB8507F0EE601AC7ED0A1A87ED141A606828430DD1\n" 
+"691C2160DFF884034A4640F8212000EB81001146816201\n" 
+"650846A6E1691E00D50A31DFF8680306EB850292ED000A\n" 
+"06EB8102D2ED000A30EE600A00EB850282ED000A00EB85\n" 
+"0806EB810197ED0A0AD1ED0A0A30EE600A88ED0A0A97ED\n" 
+"140AD1ED140A30EE600A88ED140AA168002952D150F825\n" 
+"00D1F766FD21F000414FF03332DFF80C33DEF7B6FC3AD2\n" 
+"D8F82800D1F759FD21F000414FF03332BD4BDEF7AAFC2E\n" 
+"D2D8F85000D1F74DFD21F000414A46B84BDEF79FFC23D2\n" 
+"06EB850090ED000ADFEDAC0AB4EE600AF1EE10FA18DBB8\n" 
+"6AD1F738FD21F000414A464FF08043DEF789FC0DD2386D\n" 
+"D1F72DFD21F000414A46A94BDEF77FFC03D2E068401CE0\n" 
+"6001E04846E060E0680428C0F2FA800120A06048462062\n" 
+"F4E0012940F0A380216A012901DB491C21622169002924\n" 
+"D150F8250000EE100ADFED900AB4EE600AF19403907E86\n" 
+"00F1EE10FA09DB4FF0FF302061A069401CA061206A401C\n" 
+"206236E0DFED890AB4EE600AF1EE10FA2FD501202061A0\n" 
+"69401CA061206A401C206226E0012911D100EB850090ED\n" 
+"000ADFED7D0AB4EE600AF1EE10FA19DB4FF0FF302061A0\n" 
+"69401CA06112E011F1010F0FD100EB850090ED000ADFED\n" 
+"730AB4EE600AF1EE10FA04D501202061A069401CA06160\n" 
+"69002827D198ED140AF7EE000AB4EE600AF1EE10FA0CDB\n" 
+"4FF0FF306061E069401CE061206A002840F08880012020\n" 
+"6284E0DFED620AB4EE600AF1EE10FA7DD501206061E069\n" 
+"401CE061206A002875D10120206272E001280FD198ED14\n" 
+"0AF7EE000AB4EE600AF1EE10FA67DB4FF0FF306061E069\n" 
+"401CE06160E010F1010F5DD198ED140ADFED4D0AB4EE60\n" 
+"0AF1EE10FA54D501206061E069401CE0614EE002294CD1\n" 
+"216A481C206294ED090A06EB8501D1ED000A30EE200A84\n" 
+"ED090AD4ED0A0A97ED0A1A70EE810AC4ED0A0A94ED0B1A\n" 
+"D7ED141A31EE211A84ED0B1A0A282DD1F2EE041A80EE21\n" 
+"0AC0EEA10A81EE218AB2EE081AB4EE410AF1EE10FA1ED5\n" 
+"9FED2C1AB4EE410AF1EE10FA17DB10EE900AD1F736FC21\n" 
+"F000414A462F4BDEF788FB0CD218EE100AD1F72BFC21F0\n" 
+"00414A462A4BDEF77DFB01D24FF00109216AB42923DAA0\n" 
+"69042802DAE269042A1DDB03281BDB1F290ADB00202062\n" 
+"A061E0610220A06000206062A062E06218E00FF27000C8\n" 
+"F796F9A069042801DB801EA061E06904280CDB801EE061\n" 
+"09E0B42907DB0020A060E06020616061A061E061206220\n" 
+"68401C20604846BDEC028BBDE8F28300000100A0409A99\n" 
+"193F999919BFFEFF7FBF8C5988009C5888001459880033\n" 
+"33E33F0000F03F00001440000008400000184044545020\n" 
+"6661696C202564007D480021017041608160704738B52D\n" 
+"ED068B0546002495ED020AD5ED010A95ED001A21EE011A\n" 
+"00EEA01A00EE001A11EE100AD1F7AFFB41EC100BE2F79F\n" 
+"FC51EC100BD1F7CFFB09EE100A9FED698B95ED000A80EE\n" 
+"090A10EE100AD1F79BFB41EC100BEFF749FC53EC102B51\n" 
+"EC180BD1F7BFFAD1F7B7FB09EE900A95ED010A80EE090A\n" 
+"10EE100AD1F785FB41EC100BEFF733FC53EC102B51EC18\n" 
+"0BD1F7A9FAD1F7A1FB0AEE100A95ED020A80EE090A10EE\n" 
+"100AD1F76FFB41EC100BEFF71DFC53EC102B51EC180BD1\n" 
+"F793FAD1F78BFB08EE100A494D287800282BD119EE900A\n" 
+"D1F759FB21F000412246454BDEF7ABFA17D21AEE100AD1\n" 
+"F74EFB21F000412246404BDEF7A0FA0CD29FED3D0AB4EE\n" 
+"408AF1EE10FA05DB6868401C68601046F1940320828600\n" 
+"A86004E0A868401CA860104668606868052853DB27E002\n" 
+"282BD119EE900AD1F72BFB21F0004122462E4BDEF77DFA\n" 
+"15D21AEE100AD1F720FB21F000412246294BDEF772FA0A\n" 
+"D29FED260AB4EE408AF1EE10FA03DB6868401C686001E0\n" 
+"104668606868052832DB012420462870104668602CE001\n" 
+"282AD119EE900AD1F7FDFA21F000410122174BDEF767FA\n" 
+"11D91AEE100AD1F7F2FA21F000410122124BDEF75CFA06\n" 
+"D99FED110AB4EE408AF1EE10FA03D5A868401CA86001E0\n" 
+"2046A860A868052804DB0224204628700020A8602046BD\n" 
+"EC068B32BD46DF617EDCA54C40BC5988000100A0420000\n" 
+"14400000A04210B586B000F05AF912E000A80021016002\n" 
+"220DF10701CCF765FB02220DF105010DF10200CCF75EFB\n" 
+"042100A8D9F7C7FE01A9664800F05CF99DF8070010F003\n" 
+"0403D0022C01D0E0D3F2E7BDF80500011DDDF80D00D9F7\n" 
+"B3FE022C01D1CAF7ADFBDDF80D000028E3D0CCF72AFB00\n" 
+"20CDF80D00DDE7F8B50C461646554D2878012806D1A88A\n" 
+"864203D000202870A882E8822878002873D1092E04D26C\n" 
+"210FF23C10D0F7D9F909222146281DCCF71BFB0146093E\n" 
+"E87910F0030002D0012816D057E000202870A882E88229\n" 
+"1D424800F030F9002805D00FF27810BDE8F240D1F760B9\n" 
+"3D490820BDE8F440C6F754BFB5F80500A8820020E882B5\n" 
+"F8050000281ED001202870324800F014F9B5F80500001D\n" 
+"CCF7BFFAC5F80D000FF24010C046C046D5F80D00001DA8\n" 
+"61002E08D00746324604F10901CCF7D7FAEE82F019A861\n" 
+"E88AA98A884241D100202870A882E882291D214800F0EE\n" 
+"F8002805D00FF2F400BDE8F240D1F71EB91C490820BDE8\n" 
+"F440C6F712BFB0210FF26800BDE8F440D0F76AB9002E08\n" 
+"D0AF693846CCF7ADFAE88A3018E882F019A861E88AA98A\n" 
+"884215D100202870A882E882291D0B4800F0C2F8002805\n" 
+"D00FF29C00BDE8F240D1F7F2B806490820BDE8F440C6F7\n" 
+"E6BEF1BD0000388A8800D4618800208A8800509E880044\n" 
+"3A5C4D43555C53454E534F525F6B616C6D6961615F5452\n" 
+"454C54455F4252434D5F4E6F746550435C4D43555C5072\n" 
+"6F6A6563745C5353505F53656E736F724875625C53485F\n" 
+"4F454D5C42434D343737585C7372635C4D43555F42434D\n" 
+"343737585F7472616E73706F72745F6C617965722E6300\n" 
+"5075744D61696C00416C6C6F636174654D61696C000000\n" 
+"000168E1EE101A7047A0EC108BA0EC100BF1EE101A80E8\n" 
+"020070470000B0EC108BB0EC100B90E80200E1EE101A70\n" 
+"4700001149096811F4700F1CBF8438F19403B0858600FF\n" 
+"F7E4BF70470D49096811F4700F1CBF8438FFF7E5BF7047\n" 
+"00B581B00FF22400BFF786FB0548006810F4700F04D001\n" 
+"B05DF804EB0248C5E701B000BD88ED00E03CEF00E0A585\n" 
+"8600B785860030B504460D480D460178491C81B00170BF\n" 
+"F7F8F8A06840B940212046CEF71EFEBFF7F0F8A0680028\n" 
+"F6D029462046DDF730FD01B0BDE83040BFF725BA1C2788\n" 
+"00F0B50E4F05463878401C81B00E4601243870BFF7D7F8\n" 
+"A868E968884204D231462846DDF7F1FC0024787808B9BF\n" 
+"F7C4F8BFF709FA204601B0F0BD00BF1C27880000200246\n" 
+"09E0D04941F8202001EB8001C1F8F020C1F8E021401C3C\n" 
+"28F3DBCB481146016041608160704700002DE9F84F2DED\n" 
+"0A8B86B000208DF80800C34C20683C2806DB3C38206060\n" 
+"68002801D1012060602568DFF8F09209EB850080ED000A\n" 
+"09EB8506F0EE601AC6ED3C1A86ED781A59F82500D1F7D2\n" 
+"F821F000410022B64BDEF724F80AD359F82500D1F7C7F8\n" 
+"21F000410122AE4BDEF731F802D8002049F82500D6F8F0\n" 
+"00D1F7B9F821F000410022A84BDEF70BF80AD3D6F8F000\n" 
+"D1F7AEF821F000410122A54BDEF718F802D80020C6F8F0\n" 
+"00D6F8E001D1F7A0F821F0004100229D4BDDF7F2FF0AD3\n" 
+"D6F8E001D1F795F821F000410122984BDDF7FFFF02D800\n" 
+"20C6F8E00159F82500D1F787F821F0004100221346F3F7\n" 
+"57F819D1D6F8F000D1F77CF821F0004100221346F3F74C\n" 
+"F80ED1D6F8E001D1F771F821F0004100221346F3F741F8\n" 
+"03D1A068401CA06001E01046A060A0680528C0F2ED809F\n" 
+"ED808A9FED7F9ADFED7E8A1646104604900390DFED7B9A\n" 
+"9FED7ABA00E0761C372E80F289806768002F01D1B24602\n" 
+"E0701900F1010ABAF13C0F01DBAAF13C0A59F82A0000EE\n" 
+"100AF4EE409AF1EE10FA02D5F0EE409A049609EB8A0898\n" 
+"ED780AB4EE40BAF1EE10FA02D5B0EE40BA03969FED65AB\n" 
+"9FED66CB18EE100AD1F720F8CDE9000159F82A00D1F71A\n" 
+"F853EC1C2BD0F744FF53EC1A2BD0F740FF00225E4BDEF7\n" 
+"0CF9DDE90023E2F78AF8D1F730F808EE100A19EE100AD1\n" 
+"F702F882468B46D8F8F000D0F7FCFF53EC1C2BD0F726FF\n" 
+"53EC1A2BD0F722FF00224F4BDEF7EEF852465B46E2F76C\n" 
+"F8D1F712F809EE100A18EE900AD0F7E4FF82468B46D8F8\n" 
+"E001D0F7DEFF53EC1C2BD0F708FF53EC1A2BD0F704FF00\n" 
+"22404BDEF7D0F852465B46E2F74EF8D0F7F4FF08EE900A\n" 
+"002F7FF476AFAE427FF473AF18EE100AD0F7C0FF41EC1A\n" 
+"0B21F000410122374BDDF728FF43D851EC1A0B21F00041\n" 
+"00222F4BDDF707FF3AD219EE100AF1940340898600D0F7\n" 
+"AAFF41EC190B21F0004101222A4BDDF712FF2DD851EC19\n" 
+"0B21F000410022264BDDF7F1FE24D218EE900AD0F794FF\n" 
+"41EC190B21F000410122214BDDF7FCFE17D851EC190B21\n" 
+"F0004100221D4BDDF7DBFE0ED203980499401AE5F78DFC\n" 
+"142807DAB5EE408AF1EE10FA02DD01208DF80800681C20\n" 
+"609DF8080006B0BDEC0A8BBDE8F28FD46F8800A4728800\n" 
+"000022400000E03F0000F03F0000244000000000000000\n" 
+"0000003440E6C1631ADCA54C4000408F4000005E400000\n" 
+"344000805B4000003E40004060409748002141608160C1\n" 
+"60016141618161017001214170704770B52DED068BF0EE\n" 
+"608AB0EE419A00248D4D2878012800F010816878002852\n" 
+"D12E69002E00F0A880D5ED010A30EE600A10EE100AD0F7\n" 
+"20FF21F00041D0F744FF09EE900AB0EE680AD5ED020A30\n" 
+"EE600A10EE100AD0F710FF21F00041D0F734FF0AEE100A\n" 
+"B0EE490AD5ED030A30EE600A10EE100AD0F700FF21F000\n" 
+"41D0F724FF00EE100AF0EE040AF4EE609AF1EE10FA16D5\n" 
+"B4EE60AAF1EE10FA11D5B4EE600AF1EE10FA0CD5701C28\n" 
+"610728C0F2C58020466860A860E860286101206870BCE0\n" 
+"20462861B9E0686900284CD12869002852D0D5ED010A30\n" 
+"EE600A10EE100AD0F7CBFE21F00041D0F7EFFE09EE900A\n" 
+"B0EE680AD5ED020A30EE600A10EE100AD0F7BBFE21F000\n" 
+"41D0F7DFFE0AEE100AB0EE490AD5ED030A30EE600A10EE\n" 
+"100AD0F7ABFE21F00041D0F7CFFE00EE100A2046DFED44\n" 
+"0AF4EE609AF1EE10FA00DB0120B4EE60AAF1EE10FA00DB\n" 
+"401CB4EE600AF1EE10FA00DB401C02286EDB0120686120\n" 
+"46286169E0012867D12E69322E02DA701C286161E00DD1\n" 
+"85ED010AB0EE680A85ED020AB0EE490A85ED030A286940\n" 
+"1C286152E0AE69322E4ADAD5ED010A30EE600A10EE100A\n" 
+"D0F767FE21F00041D0F78BFE09EE900AB0EE680AD5ED02\n" 
+"0A30EE600A10EE100AD0F757FE21F00041D0F77BFE0AEE\n" 
+"100AB0EE490AD5ED030A30EE600A10EE100AD0F747FE21\n" 
+"F00041D0F76BFE00EE100A2046711CA961DFED110AF4EE\n" 
+"609AF1EE10FA00DB0120B4EE60AAF1EE10FA00DB401CB4\n" 
+"EE600AF1EE10FA00DB401C022808DB01202870044604E0\n" 
+"204628616861A86168702046BDEC068B70BD0000010020\n" 
+"40B07288000FB480B5072200210846D0F7FBFA022801D1\n" 
+"022004E09DF80800FEF727FC012002BC5DF814FB80B507\n" 
+"2200210120D0F7E9FA032801D1032002BD012002BD10B5\n" 
+"82B000208DF80000314C00A96068FEF729FC002806D001\n" 
+"2000F03BF89DF8000020706070F19403D08C8600012016\n" 
+"BD10B5294CD0F7C8FAA060C9F7A7FA606000202070A068\n" 
+"2549C0F8681100F5B47023494160234981600FF20D01C1\n" 
+"600FF241010161012010BD014600201A4A926892F85121\n" 
+"002A02D0002900D109E0704780B5154800210170084600\n" 
+"F006F8012002BD154890F90000704713490870704718B4\n" 
+"40F249120B7812FB030301241C700B7812FB03035C700B\n" 
+"7812FB030307249C700B7812FB0300034A1278C2700878\n" 
+"401C087011BCD3E7607888006D8C8600938C8600AB8C86\n" 
+"00608889000FB480B50FF22C20C7F70EFB814800218170\n" 
+"0121C17001710021417181710170C7F78DFA007C000601\n" 
+"D4012000E0012002BC5DF814FB80B50FF20020C7F7F4FA\n" 
+"C7F77DFA007C000616D57248002181700121C170017100\n" 
+"2141718171417801290AD1002141700E220A210120D0F7\n" 
+"38FA032801D1032002BD012002BD38B566488169497AC0\n" 
+"69407A4518C7F758FA007C000631D55F4CA078002802D1\n" 
+"0120A07032BD6078EDB2002D06D0012824D10120E07000\n" 
+"2060701FE0002811D1E078012806D10E220A210120D0F7\n" 
+"0AFA0020E0700E220A210020D0F703FA0120607032BD94\n" 
+"F90000002802D0022803D004E000F005F801E000F034F8\n" 
+"012032BD38B5454CE06890F968502079012809D1512D07\n" 
+"DA00202071012000F07AF8002000F06AF8B4F908209542\n" 
+"17DBA079401CA07140B2022813DB022020700020A07129\n" 
+"460FF20410C7F771FA78202081012000F05FF8012000F0\n" 
+"4FF801E00020A071012032BD38B52C4CE06890F9685050\n" 
+"2D16DA6079401C607140B2022812DB00202070012000F0\n" 
+"45F8002000F035F800206071502229460FF2BC00C7F747\n" 
+"FA01E000206071012032BD10B51B4CD0F798F92061C9F7\n" 
+"77F9E0600020207020691849C0F8B81200F52E70164941\n" 
+"60164981600FF20D01C16015490161012010BD00000146\n" 
+"00200C4A126992F8A122002A02D0002900D109E070470D\n" 
+"49012802D10120087070470020087070470A4890F90000\n" 
+"7047084908707047C8028800EC038800918D8600C78D86\n" 
+"000D8E8600C19583006288890061888900537461727400\n" 
+"000053746F7000000000436C6F7365202564202564004F\n" 
+"70656E20256420256400000FB480B52A2200210846D0F7\n" 
+"3BF9022805D10FF22810C7F7D9F9022002E0FEF759FE01\n" 
+"2002BC5DF814FB80B52A2200210120D0F727F9032805D1\n" 
+"0FF20C10C7F7C5F9032002BD012002BD10B58CB000A8D0\n" 
+"F777F900A890EC030AFEF761FE0446012C0ED1FEF736FE\n" 
+"2F480470416891F8E0170029F194036090860001D00121\n" 
+"4170012000F034F803E0022C01D1FEF725FE01200CB010\n" 
+"BD80B5D0F7F5F8244948602449C0F8F81700F2F8702249\n" 
+"4160224981600FF20D01C1600FF23D010161012002BD1A\n" 
+"48406890F8E107002801D10020704708E080B515480021\n" 
+"0170084600F006F8012002BD154890F900007047134908\n" 
+"707047000018B440F249120B7812FB030301241C700B78\n" 
+"12FB03035C700B7812FB03032A249C700B7812FB030003\n" 
+"4A1278C2700878401C087011BCD2E748818800ED8F8600\n" 
+"179086003790860063888900445420414343206661696C\n" 
+"0044542041434332206661696C000000000FB480B51522\n" 
+"00210846D0F78FF8022801D1022002E0FEF7D3FF012002\n" 
+"BC5DF814FB80B5152200210120D0F77FF8032801D10320\n" 
+"02BD012002BD80B530484068FEF7C4FF40B2002804D000\n" 
+"F03AF8012000F034F8012002BD10B5294CD0F764F8A060\n" 
+"C9F743F8606000202070A0682549C0F8081400F2084023\n" 
+"494160234981600FF20D01C1600FF241010161012010BD\n" 
+"1B48806890F8F103002801D10020704708E080B5164800\n" 
+"210170084600F006F8012002BD164890F9000070471449\n" 
+"087070470F490870704718B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB030315249C700B78\n" 
+"12FB0300034A1278C2700878401C087011BCD0E7508188\n" 
+"0045918600679186007F918600658889000FB480B50FF2\n" 
+"1010C7F7AAF80F2201210020D0F701F8022805D10FF20C\n" 
+"10C7F79FF8022000E0012002BC5DF814FB80B50FF20010\n" 
+"C7F794F80F2201210846CFF7EBFF032805D10FF2FC00C7\n" 
+"F789F8032002BD012002BD80B5012000F031F8002000F0\n" 
+"27F8012002BD80B5CFF7D3FF244908602449C0F8E81200\n" 
+"F53A7022494160224981600FF20D01C1600FF23D010161\n" 
+"012002BD1A48006890F8D102002801D10020704708E080\n" 
+"B5002000F009F8012002BD174908707047164890F90000\n" 
+"7047144908707047000018B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB03030F249C700B78\n" 
+"12FB0300074A1278C2700878401C087011BCD2E7C88188\n" 
+"005992860087928600AF92860068888900678889005374\n" 
+"617274204779726F2054656D7000537461727420466169\n" 
+"6C00004779726F2054656D702053746F70000053746F70\n" 
+"204661696C0000000FB480B5202200210846CFF75DFF02\n" 
+"2801D1022005E0FFF723FB304800210170012002BC5DF8\n" 
+"14FB80B5202200210120CFF74AFF022801D1022002BD27\n" 
+"4800210170012002BD70B5F19403F09386008CB0254844\n" 
+"6BA069E168451800A8CFF796FF204E3078012801D10020\n" 
+"0BE000A890EC030AFFF704FB012803D128700120A07730\n" 
+"7001200CB070BD80B5CFF71EFF164908601649C0F81816\n" 
+"00F2186015494160154981600FF21101C1600FF2510101\n" 
+"61012002BD00000C48006890F80106002801D100207047\n" 
+"05E080B5002000F006F8012002BD094890F90000704707\n" 
+"49087070476C888900EC038800E8818800A9938600D193\n" 
+"8600EF9386006B88890018B440F249120B7812FB030301\n" 
+"241C700B7812FB03035C700B7812FB030320249C700B78\n" 
+"12FB03000022C2700878401C087011BCC9E700000FB480\n" 
+"B5212200210846CFF7C5FE022801D102200EE021220121\n" 
+"0020CFF7BCFE022801D1022005E02120C7F753FF00F0BF\n" 
+"F8012002BC5DF814FB80B5212200210120CFF7A9FE0228\n" 
+"01D1022002BD212201210846CFF7A0FE022801D1022002\n" 
+"BD012002BDF0B58BB04848846BA069E1684518002600A8\n" 
+"CFF7EEFE0398D0F7A0F9434A444BDDF79AFADDF7ACF928\n" 
+"800498D0F796F93E4A3F4BDDF790FADDF7A2F968800598\n" 
+"D0F78CF9394A3A4BDDF786FADDF798F9A880384F387800\n" 
+"2809D1381D03A9D1EC031A00A991EC030A00F09EF80646\n" 
+"012E02D10120387006E03878002803D10020B880F88038\n" 
+"810020E880288168810120A0770BB0F0BD80B5CFF74AFE\n" 
+"264908602649C0F8481600F2486025494160254981600F\n" 
+"F21101C1600FF235010161012002BD00001C48006890F8\n" 
+"3106002801D10020704705E080B5002000F006F8012002\n" 
+"BD194890F90000704717490870704718B440F249120B78\n" 
+"12FB030301241C700B7812FB03035C700B7812FB030321\n" 
+"249C700B7812FB03000022C2700878401C087011BCD7E7\n" 
+"0000EC03880089AD84FA0A74513F0482880000828800D9\n" 
+"948600139586003D95860071888900CF490022CA630A64\n" 
+"01F148024A6201F1C4028A6201F5A072CA6201F5DE720A\n" 
+"6301F50E724A6301F52D728A630B2802DA1E2048647047\n" 
+"152802DA1920486470473D2802DA142048647047B52802\n" 
+"DA0F20486470470A20486470470000F8B52DED068B84B0\n" 
+"04460026B54DE86B00286CD185ED000AB0EE603A85ED01\n" 
+"3A85ED021AB0EE610A85ED030AB0EE420A85ED050AB0EE\n" 
+"620A85ED040A30460290019000901E222946E86A00F0DA\n" 
+"F81E22291DA86A00F0D5F81E2205F10801686A00F0CFF8\n" 
+"1E2205F10C01A86B00F0C9F81E2205F11001686B00F0C3\n" 
+"F81E2205F11401286B00F0BDF8696C286C81422ADA1E23\n" 
+"00AA09B2E86A00F0C8F8F1940380978600B0EE408A1E23\n" 
+"01AA696C09B2A86A00F0BFF8F0EE408A1E2302AA696C09\n" 
+"B2686A00F0B6F8DFED860AB4EE608AF1EE10FA0BD5F4EE\n" 
+"608AF1EE10FA06D5B4EE600AF1EE10FA01D50120E86328\n" 
+"6C401C286484E0AE6B6F6C1E22394609B2304600F0D3F8\n" 
+"F0EE408A1E22394609B2304600F0F1F8B0EE409A1E2239\n" 
+"4609B2304600F00EF9B81E00EE900AB8EEE08A78EEC90A\n" 
+"30EEC00AC0EE088AC5ED068A6E6B1E22394609B2304600\n" 
+"F0AFF8B0EE409A1E22394609B2304600F0CDF8F0EE409A\n" 
+"1E22394609B2304600F0EAF879EE690A30EEC00A80EE08\n" 
+"9A85ED079A2E6B1E22394609B2304600F090F8F0EE409A\n" 
+"1E22394609B2304600F0AEF8B0EE40AA1E22394609B230\n" 
+"4600F0CBF879EECA0A30EEC00A80EE088A85ED088A18EE\n" 
+"900ACFF7FCFF4A4A4B4BDDF7F6F8DDF708F8208019EE10\n" 
+"0ACFF7F1FF454A454BDDF7EBF8DCF7FDFF608018EE100A\n" 
+"CFF7E6FF3F4A404BDDF7E0F8DCF7F2FFA0800126304604\n" 
+"B0BDEC068BF2BD0388934201D30023038003885B1C0380\n" 
+"9BB2934201D300220280028800EB820009684160012070\n" 
+"4700002DE9F8432DED028B04460D4616461F469FED288A\n" 
+"4FF00008B4F9009000EE105AF8EEC08A3A4600F027F880\n" 
+"EE280A86ED000A05E0A7F101090FFA89F908F101080FFA\n" 
+"88F8A84511DA04EB890090ED010AD6ED000A30EE600A00\n" 
+"EE008AB9F1010FE8DBA9F101090FFA89F9E7E788EE280A\n" 
+"BDEC028BBDE8F18330B49FED0E0A0023B0F900400EE024\n" 
+"B2250006D400EB8505D5ED010A30EE200A641E24B2002C\n" 
+"00D5541E5B1C1BB28B42EDDB30BC704700006F12033B00\n" 
+"000000F8CB880089AD84FA0A74513F2DE9F04104460D46\n" 
+"164694ED010A0027B4F9008014E00FFA88F84046002807\n" 
+"D404EB8000D0ED010A00F03CF8A8F101080FFA88F8B8F1\n" 
+"000F01D5A6F101087F1C3FB2AF42E7DBBDE8F0812DE9F0\n" 
+"4104460D46164694ED010A0027B4F9008014E00FFA88F8\n" 
+"4046002807D404EB8000D0ED010A00F00FF8A8F101080F\n" 
+"FA88F8B8F1000F01D5A6F101087F1C3FB2AF42E7DBBDE8\n" 
+"F081B4EE600AF1EE10FA01D4B0EE600A7047F4EE400AF1\n" 
+"EE10FA01D4B0EE600A70470FB480B5102201210020CFF7\n" 
+"EDFB022801D1022002E000F08BF8012002BC5DF814FB80\n" 
+"B5102201210846CFF7DDFB032801D1032002BD012002BD\n" 
+"30B58BB000A8CFF731FC03A890EC030A00F077F8044632\n" 
+"4D2878A0420FD0012C05D1012000F03DF80120687006E0\n" 
+"022C04D1012000F035F8022068702C7001200BB030BD80\n" 
+"B5CFF7B0FB25494860F19403109B860000224A702449C0\n" 
+"F8181300F5467023494160234981600FF21101C1600FF2\n" 
+"3D010161012002BD00001A48406890F80103002801D100\n" 
+"20704708E080B5154800214170084600F006F8012002BD\n" 
+"154890F900007047134908707047000018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"10249C700B7812FB0300034A5278C2700878401C087011\n" 
+"BCD2E7C4848800899A8600AB9A8600C39A860072888900\n" 
+"834800210160416081607047F8B52DED0C8BB0EE408AF0\n" 
+"EE608AB0EE419A0027B0EE680A10EE100ACFF75AFE41EC\n" 
+"1A0BB0EE480A10EE100ACFF752FE41EC1C0B734E21F000\n" 
+"413A46724BDCF7A1FD18D251EC1A0B21F00041DCF79AFD\n" 
+"11D2B0EE490A10EE100ACFF73BFE21F000413A46684BDC\n" 
+"F78DFD04D2104630607060B060C3E09FED65BB9FED66DB\n" 
+"3068CFF728FE04460D4653EC1C2B51EC1D0BCFF74EFD53\n" 
+"EC1B2BCFF74AFD3A465F4BDCF716FF22462B46E0F794FE\n" 
+"CFF73AFE09EE900AC6ED009A7068CFF70BFE04460D4653\n" 
+"EC1A2B51EC1D0BCFF731FD53EC1B2BCFF72DFD3A46504B\n" 
+"DCF7F9FE22462B46E0F777FECFF71DFE0AEE100A86ED01\n" 
+"AAB068CFF7EEFD04460D46B0EE490A10EE100ACFF7E6FD\n" 
+"53EC1D2BCFF710FD53EC1B2BCFF70CFD3A46404BDCF7D8\n" 
+"FE22462B46E0F756FECFF7FCFD09EE100A86ED029A19EE\n" 
+"900ACFF7CCFD21F0004141EC1B0B1AEE100ACFF7C4FD41\n" 
+"EC180B21F0004141EC1C0B19EE100ACFF7BAFD41EC1A0B\n" 
+"53EC1B2B51EC1C0BE0F732FE53EC1A2B23F00043E0F72C\n" 
+"FECFF7D2FD00EE100ADFED260AB4EE600AF1EE10FA2EDB\n" 
+"51EC1A0B21F000410122214BDCF709FD25D8BBEE090AF4\n" 
+"EE409AF1EE10FA0BD551EC180B21F0004153EC1A2B23F0\n" 
+"0043DCF7DFFC00D201279FED170AF4EE409AF1EE10FA0B\n" 
+"DB51EC180B21F0004153EC1A2B23F00043DCF7CCFC00D2\n" 
+"0227002F03D0002030607060B0603846BDEC0C8BF2BD20\n" 
+"C888000000E03F0000000000004E40E6C1631ADCA54C40\n" 
+"00408F4001004842000044400100C8410FB480B5292201\n" 
+"210020CFF739FA022801D1022002E0FEF739FC012002BC\n" 
+"5DF814FB80B5292201210846CFF729FA032801D1032002\n" 
+"BD012002BD00B58BB000A8CFF77DFA03A890EC030AFEF7\n" 
+"35FC012807D12B4801210170084600F031F8FEF715FC01\n" 
+"200BB000BD80B5CFF707FA254908602549C0F8C81700F2\n" 
+"C87023494160234981600FF20D01C1600FF23D01016101\n" 
+"2002BD1B48006890F8B107002801D10020704708E080B5\n" 
+"1548002101700846F19403A09E860000F006F8012002BD\n" 
+"164890F900007047144908707047000018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"29249C700B7812FB0300034A1278C2700878401C087011\n" 
+"BCD2E774888900CC848800F19D8600139E86002B9E8600\n" 
+"738889000FB400B5AFB00020019000900D220146CFF7AA\n" 
+"F9022801D102204BE0764A01201060BDF8C30001909DF8\n" 
+"C2000090012803D14FF48070009015E0022803D14FF400\n" 
+"7000900FE0032803D14FF48060009009E0042803D14FF4\n" 
+"0060009003E0052801D11020009000A901A8FBF771F9AA\n" 
+"208DF866003C208DF8670001208DF8680000208DF80800\n" 
+"03208DF809000DF10B0019A95522C0F7A8F90A208DF80A\n" 
+"000020ADF8600002A8CFF747FA002801D1022000E00120\n" 
+"2FB05DF814FB00B5ADB0AA208DF802003C208DF8030001\n" 
+"208DF804008DF8580003208DF859000DF15B0000A95522\n" 
+"C0F781F90A208DF85A000020ADF8B00016A8CFF720FA00\n" 
+"2801D1032002E0FBF708FA01202DB000BD30B597B000A8\n" 
+"CFF789F90BA8E6F7BDFA374CBDF83A002071204600A991\n" 
+"EC030AFBF70FFA0546607A85420ED0022D05D1012000F0\n" 
+"3CF80120207206E0012D04D1012000F034F80220207265\n" 
+"72012017B030BD80B5CFF701F92549C86000220A722449\n" 
+"C0F8881200F5227022494160224981600FF20D01C1600F\n" 
+"F23D010161012002BD1A48C06890F87102002801D10020\n" 
+"704708E080B5154800210172084600F006F8012002BD15\n" 
+"4890F900007047134908707047000018B440F249120B78\n" 
+"12FB030301241C700B7812FB03035C700B7812FB03030D\n" 
+"249C700B7812FB0300034A127AC2700878401C087011BC\n" 
+"D2E7D0848800099F8600C39F860013A08600758889000F\n" 
+"B480B52E2200210846CFF7A7F8022801D1022006E00FF2\n" 
+"4810C6F743F900F0B9F8012002BC5DF814FB80B52E2200\n" 
+"210120CFF793F8022801D1022002BD4FF0FF3300221421\n" 
+"1620C6F73AFF002803D10FF21810C6F726F9012002BD70\n" 
+"B58CB02B48846DA069E168451800A8CFF7D5F800A890EC\n" 
+"030A00F097F8060019D0607A00280ED14FF0FF30009003\n" 
+"46002214211620C6F775FE002803D10FF2DC00C6F701F9\n" 
+"2E7031460FF2DC00C6F7FBF80120A07701200CB070BD80\n" 
+"B5CFF74DF8154908601549C0F8B81800F6B80013494160\n" 
+"134981600FF20D01C1600FF24D010161012002BD0B4800\n" 
+"6890F8A108002801D10020704705E080B5002000F006F8\n" 
+"012002BD084890F900007047064908707047EC038800E0\n" 
+"84880015A18600F1940330A286003FA1860071A1860076\n" 
+"88890018B440F249120B7812FB030301241C700B7812FB\n" 
+"03035C700B7812FB03032E249C700B7812FB03000022C2\n" 
+"700878401C087011BCCBE70000414444205368616B6500\n" 
+"0000524D205353204661696C0000414444205353204661\n" 
+"696C005368616B652053656E736F72202564005C480021\n" 
+"8160C16041604161816101617047000038B52DED028B00\n" 
+"24B0EE418AF0EE601A20EE000A01EEA10A08EE080A10EE\n" 
+"100ACFF7DCFA41EC100BE0F7CCFB51EC100BCFF7FCFA00\n" 
+"EE100A494D2878002801D0022860D12869012801DB401C\n" 
+"2861A868002828D19FED3E0AB4EE408AF1EE10FA0DDB4F\n" 
+"F0FF30A860E868401CE8602869401C286185ED050A3A48\n" 
+"A86132E09FED350AB4EE408AF1EE10FA2BD50120A860E8\n" 
+"68401CE8602869401C28613248A861324868611EE00128\n" 
+"0DD195ED050AB4EE408AF1EE10FA15DB4FF0FF30A860E8\n" 
+"68401CE8600EE010F1010F0BD195ED060AB4EE480AF1EE\n" 
+"10FA04DB0120A860E868401CE86028691F2801DBFFF77F\n" 
+"FFE868032824DB28691F2821DA012420462870FFF774FF\n" 
+"1BE0012819D1DFED130AB4EE600AF1EE10FA0ADBDFED10\n" 
+"0AB4EE600AF1EE10FA03D56868401C686001E020466860\n" 
+"68680B2802DB022420462870002C01D0002068602046BD\n" 
+"EC028B32BD000000008C41FFFF8BC1DE0CFB40A6493C41\n" 
+"28C388000000F0C000008CC10000F0400FB480B5172200\n" 
+"210846CEF71BFF022801D1022002E000F07FF8012002BC\n" 
+"5DF814FB80B5172200210120CEF70BFF032801D1032002\n" 
+"BD012002BD10B53148406800F072F8044664B2002C05D0\n" 
+"012000F037F8204600F037F8012010BD10B5294CCEF7EE\n" 
+"FEA060C7F7CDFE606000202070A0682549C0F8681400F2\n" 
+"684023494160234981600FF20D01C1600FF24101016101\n" 
+"2010BD1B48806890F85104002801D10020704708E080B5\n" 
+"164800210170084600F006F8012002BD164890F9000070\n" 
+"471449087070470F490870704718B440F249120B7812FB\n" 
+"030301241C700B7812FB03035C700B7812FB030317249C\n" 
+"700B7812FB0300034A1278C2700878401C087011BCD0E7\n" 
+"F48488002DA486004FA4860067A4860078888900DFF884\n" 
+"030021017041608160C160704770B52DED068B04460025\n" 
+"94ED020AD4ED010A94ED001A21EE011A00EEA01A00EE00\n" 
+"1A11EE100ACFF78DF941EC100BE0F77DFA51EC100BCFF7\n" 
+"ADF909EE100A9FEDCC8B94ED000A80EE090A10EE100ACF\n" 
+"F779F941EC100BEDF727FA53EC102B51EC180BCFF79DF8\n" 
+"CFF795F90AEEF19403C0A58600100A94ED010A80EE090A\n" 
+"10EE100ACFF763F941EC100BEDF711FA53EC102B51EC18\n" 
+"0BCFF787F8CFF77FF909EE900A94ED020A80EE090A10EE\n" 
+"100ACFF74DF941EC100BEDF7FBF953EC102B51EC180BCF\n" 
+"F771F8CFF769F908EE100AAC4E3078002853D11AEE100A\n" 
+"CFF737F941EC1A0B21F000412A46A84BDCF787F81CD219\n" 
+"EE900ACFF72AF921F000412A46A34BDCF77CF811D218EE\n" 
+"100ACFF71FF921F0004101229C4BDCF789F806D8706840\n" 
+"1C70602846B060F0601CE051EC1A0B21F000412A46954B\n" 
+"DCF761F80DD29FED910AF4EE409AF1EE10FA06D5B06840\n" 
+"1CB06010467060F06005E0F068401CF06010467060B060\n" 
+"7068052880F2F280B068052880F29880F0680528C0F2FA\n" 
+"80DFE0032845D11AEE100ACFF7E1F841EC1A0B21F00041\n" 
+"2A467D4BDCF731F81BD219EE900ACFF7D4F821F000412A\n" 
+"46784BDCF726F810D218EE100ACFF7C9F821F000410122\n" 
+"714BDCF733F805D87068401C70602846B06018E051EC1A\n" 
+"0B21F000412A466B4BDCF70CF80CD29FED670AF4EE409A\n" 
+"F1EE10FA05D5B068401CB0601046706002E01046B06070\n" 
+"607068052848DBA0E0012801D002284CD11AEE100ACFF7\n" 
+"97F841EC1A0B21F000412A46584BDBF7E7FF0CD29FED54\n" 
+"0AF4EE409AF1EE10FA05D5B068401CB0601046F06026E0\n" 
+"51EC1A0B21F000410122DBF7EAFF15D919EE900ACFF775\n" 
+"F821F000410122484BDBF7DFFF0AD918EE100ACFF76AF8\n" 
+"21F000412A46424BDBF7BCFF05D2F068401CF0602846B0\n" 
+"6002E01046F060B060F06805284FDAB068052865DB0425\n" 
+"284630700020B0605FE004285DD11AEE100ACFF748F841\n" 
+"EC1A0B21F000412A46314BDBF798FF1BD219EE900ACFF7\n" 
+"3BF821F000412A462B4BDBF78DFF10D218EE100ACFF730\n" 
+"F821F000410122254BDBF79AFF05D87068401C70602846\n" 
+"F06018E051EC1A0B21F0004101221E4BDBF78BFF06D99F\n" 
+"ED1D0AF4EE409AF1EE10FA05DBF068401CF06028467060\n" 
+"02E02846F0607060F068052805DB0325284630700020F0\n" 
+"6012E0706805280FDB94ED020AB5EE400AF1EE10FA03DD\n" 
+"01252846307002E0022528463070002070602846BDEC06\n" 
+"8B70BD46DF617EDCA54C40CCC8880000009CC200805340\n" 
+"00002440FFFF9BC20FB480B5192200210846CEF7C1FC02\n" 
+"2801D102200DE0BDF80E309DF90D209DF90C10BDF80A00\n" 
+"00F089F83F4800214170012002BC5DF814FB80B5192200\n" 
+"210120CEF7A6FC032801D1032002BD012002BD38B50024\n" 
+"344D95F90100002803D1686800F0ACF8044664B2002C07\n" 
+"D0012000F0F1940350A9860039F8204600F039F8012068\n" 
+"70012032BD10B5294CCEF782FCA060C7F761FC60600020\n" 
+"2070A0682549C0F8C81400F2C84023494160234981600F\n" 
+"F20D01C1600FF241010161012010BD1B48806890F8B104\n" 
+"002801D10020704708E080B5164800210170084600F006\n" 
+"F8012002BD164890F9000070471449087070470F490870\n" 
+"704718B440F249120B7812FB030301241C700B7812FB03\n" 
+"035C700B7812FB030319249C700B7812FB0300034A1278\n" 
+"C2700878401C087011BCD0E700858800E1A8860019A986\n" 
+"0031A986007988890070B52DED028B82B00C46154608EE\n" 
+"103A9C4E0021F1604FF47A7148433C2190FBF1F0CEF741\n" 
+"FE41EC100BFDF77BF851EC100BDBF735FF30617461B561\n" 
+"06F12C00F06106F13C00306206F14C007062B8EEC80ADF\n" 
+"ED8A0A80EE200A86ED0A0A10EE100ACEF70BFFCDE90001\n" 
+"B369726931690FF21820C5F792FC02B0BDEC028B70BD38\n" 
+"B52DED028B84B000247E4D01682960416869608068A860\n" 
+"204602900190009003222946E86900F07DF80322291D28\n" 
+"6A00F078F8032205F10801686A00F072F895ED020AD5ED\n" 
+"010A95ED001A21EE011A00EEA01A00EE001A11EE100ACE\n" 
+"F7CEFE41EC100BDFF7BEFF51EC100BCEF7EEFE00EE100A\n" 
+"D5ED020A80EE800A10EE100ACEF7BCFE41EC100BECF76A\n" 
+"FF53EC102B4FF000405C49CEF7DFFD41EC100BFDF701F8\n" 
+"51EC100BDBF7BBFE696988422DDBA96981422ADB032300\n" 
+"AA1946E86900F045F8B0EE408A032301AA1946286A00F0\n" 
+"3DF8F0EE408A032302AA1946686A00F035F8D5ED0A0AB4\n" 
+"EE608AF1EE10FA0DD5F4EE608AF1EE10FA08D5B4EE600A\n" 
+"F1EE10FA03D5E868401CE86001E02046E860E868296988\n" 
+"4200DB0124204604B0BDEC028B32BD0388934201D30023\n" 
+"038003885B1C03809BB2934201D300220280028800EB82\n" 
+"0009684160012070472DE9F8432DED028B04460D461646\n" 
+"1F469FED288A4FF00008B4F9009000EE105AF8EEC08A3A\n" 
+"4600F027F880EE280A86ED000A05E0A7F101090FFA89F9\n" 
+"08F101080FFA88F8A84511DA04EB890090ED010AD6ED00\n" 
+"0A30EE600A00EE008AB9F1010FE8DBA9F101090FFA89F9\n" 
+"E7E788EE280ABDEC028BBDE8F18330B49FED0E0A0023B0\n" 
+"F900400EE024B2250006D400EB8505D5ED010A30EE200A\n" 
+"641E24B2002C00D5541E5B1C1BB28B42EDDB30BC704700\n" 
+"0000401C460000000000C98800DCA54C4053504120696E\n" 
+"69743A2025642C2025642C2025642C202566000000000F\n" 
+"B410B53C4C012020700020607027220146CEF7CBFA0228\n" 
+"01D10220F19403E0AC860006E000206060A060E06000F0\n" 
+"7DF8012010BC5DF814FB10B5304C002020702722014601\n" 
+"20CEF7B4FA032805D10FF2C800C5F752FB032010BD0020\n" 
+"6070012010BD0120704780B5CEF7A1FA254908602549C0\n" 
+"F8681700F2687023494160234981600FF20D01C1600FF2\n" 
+"3D010161012002BD1B48006890F85107002801D1002070\n" 
+"4708E080B5002000F009F8194800210170012002BD1748\n" 
+"90F900007047154908707047000018B440F249120B7812\n" 
+"FB030301241C700B7812FB03035C700B7812FB03032724\n" 
+"9C700B7812FB0300094A1278C2700878401C087011BCD2\n" 
+"E7108588000C858800C5AC8600F7AC860021AD86007B88\n" 
+"89007A88890053532041434332206661696C0000000010\n" 
+"B5084C4FF0FF30A061182200212046CDF7E5FC08220021\n" 
+"04F11C00BDE81040CDF7DDBCDCC888000FB410B5AEB09D\n" 
+"F8C2005D49087001208DF8C400AA208DF8C2003C208DF8\n" 
+"C30000208DF8580003208DF859000DF15B0030A95522BF\n" 
+"F754FA0A208DF85A0016A8CEF7F6FA002805D10FF28010\n" 
+"C5F7ACFA022014E000A8DFF7CCF84A4C582200212046CD\n" 
+"F7A8FC0021E1652166582200A9C9F7B6FD0FF26810C5F7\n" 
+"96FA01202EB010BC5DF814FB80B50A210320C6F71CFD03\n" 
+"2801D1032002BD0FF25010C5F784FA012002BD80B5CEF7\n" 
+"D9F9364988653649C0F8381100F59C70344941600FF26D\n" 
+"0181600FF21101C1600FF2C5010161012002BD000010B5\n" 
+"94B02A49886D90F8210100281BD0264C2078002817D001\n" 
+"201390129084B068465822BFF702FA0FBCD2F73FFBC0B2\n" 
+"2178884208DB01460FF2E800C5F74AFA00F005F8012000\n" 
+"E0002014B010BD1748002101700120704700B597B000A8\n" 
+"DFF75EF81348C16D491CC165012902D10099016618E033\n" 
+"2916D30021C165016E009A914204D1582200A9C9F740FD\n" 
+"0BE0BDF84A10002907D1582200A9C9F737FD0FF29800C5\n" 
+"F717FA012017B000BD7C8889008C85880011AE860097AE\n" 
+"860010B50C4640F24911227811FB020201231370227811\n" 
+"FB02025370227811FB020206239370227811FB02000121\n" 
+"C170FFF7B0FF2078401C207010BD000050443A20506564\n" 
+"6F4F70656E4661696C2053530050443A20534320535441\n" 
+"000050443A2053432053544F000050443A204469666653\n" 
+"7465704F7665722025640050443A205343205245534554\n" 
+"2D53544F500000000FB410B52D2200210846CEF719F902\n" 
+"2801D102200AE0BDF80A40204600F098F821460FF21810\n" 
+"C5F7AFF9012010BC5DF814FB80B52D2200210120CEF701\n" 
+"F90328F1940370B0860001D1032002BD012002BD00B58B\n" 
+"B000A8CEF755F900A890EC030A00F088F840B201460129\n" 
+"01D0022904D100F03AF8012000F030F801200BB000BD80\n" 
+"B5CEF7DEF8194908601949C0F8881800F6880018494160\n" 
+"184981600FF21101C1600FF261010161012002BD00000F\n" 
+"48006890F87108002801D10020704708E080B50E480021\n" 
+"0170084600F006F8012002BD0B4890F900007047094908\n" 
+"707047074890F900007047054908707047F087880031B0\n" 
+"860063B086007BB086007E8889007D88890038B50C4640\n" 
+"F24911227811FB020201231370227811FB020253702278\n" 
+"11FB02022D239370227811FB0205FFF7D6FFE870207840\n" 
+"1C2070BDE83140BEE7232353535020544D207374617274\n" 
+"202564000000BF4B002119709962D96219633C2190FBF1\n" 
+"F0586324220021181DCDF714BB70B50024B74D286B0321\n" 
+"90FBF1F101EB4101401A286305EB800181ED010A05EB80\n" 
+"00F0EE601AC0ED041A80ED071A00F068F8064600F0EDF8\n" 
+"2978002920D1012E07D1012805D1A86A401CA8622046E8\n" 
+"6204E0E86A401CE8622046A862A86A062805DB2046A862\n" 
+"E8620320287044E0E86A062841DB2046A862E862042028\n" 
+"703BE003290FD1002E03D1A86A401CA86201E02046A862\n" 
+"A86A03282EDB2046A8620220287029E0042901D0022913\n" 
+"D1012E05D1012803D1A86A401CA86201E02046A862686B\n" 
+"A96A884217DA2046A86201202870044611E001290FD100\n" 
+"2E03D1A86A401CA86201E02046A862A86A042804DB2046\n" 
+"A862022028700446286B401C2863204670BD38B52DED06\n" 
+"8B00247548016B00EB810595ED070AD5ED040A95ED011A\n" 
+"21EE011A00EEA01A00EE001A11EE100ACEF7E4FA41EC10\n" 
+"0BDFF7D4FB51EC100BCEF704FB09EE100A9FED678B95ED\n" 
+"010A80EE090A10EE100ACEF7D0FA41EC100BECF77EFB53\n" 
+"EC102B51EC180BCEF7F4F9CEF7ECFA09EE900A95ED040A\n" 
+"80EE090A10EE100ACEF7BAFA41EC100BECF768FB53EC10\n" 
+"2B51EC180BCEF7DEF9CEF7D6FA0AEE100A95ED070A80EE\n" 
+"090A10EE100ACEF7A4FA41EC100BECF752FB53EC102B51\n" 
+"EC180BCEF7C8F9CEF7C0FA08EE100A19EE900ACEF792FA\n" 
+"21F000412246444BDBF7E4F912D21AEE100ACEF787FA21\n" 
+"F0004122463E4BDBF7D9F907D29FED3E0AB4EE408AF1EE\n" 
+"10FA00DB01242046BDEC068B32BD38B52DED028B002431\n" 
+"48056B2946204600F018F8B0EE408A2946012000F012F8\n" 
+"DFED310AB4EE608AF1EE10FA05D5B4EE600AF1EE10FA00\n" 
+"D501242046BDEC028B32BD000030B49FED260ADFED250A\n" 
+"0022F1940300B486001F4D13E0CC1CE31A032493FBF4F4\n" 
+"04EB44041B1B1BB200EB400405EB840404EB830393ED01\n" 
+"1A30EE010A521C12B21346032BE7DBB0EE081A80EE010A\n" 
+"002215E0CC1CE31A032493FBF4F404EB44041B1B1BB200\n" 
+"EB400405EB840404EB830393ED011A31EE401A41EE010A\n" 
+"521C12B21346032BE5DBB0EE080A80EE800A30BC7047C0\n" 
+"CB8800E6C1631ADCA54C4000001440000000000100AA42\n" 
+"CDCCCC3D0FB480B5182208210020CDF7E3FE022801D102\n" 
+"200CE03C48002101709DF8091041609DF80A1081609DF8\n" 
+"0B10C160012002BC5DF814FB80B5334800210170182208\n" 
+"210120CDF7C6FE032801D1032002BD012002BD10B52C4C\n" 
+"2078012801D1002010BD642061684143E268012A0FD101\n" 
+"291CDAA1684843002818D4012000F041F8012020700FF2\n" 
+"D000C4F748FF0EE0012903DAA1684843002808D5012000\n" 
+"F031F8012020700FF2B800C4F738FF012010BD80B5CDF7\n" 
+"8DFE154908601549C0F8981400F2984013494160134981\n" 
+"600FF20D01C1600FF24D010161012002BD0B48006890F8\n" 
+"8104002801D10020704705E080B5002000F006F8012002\n" 
+"BD084890F900007047064908707047F8878800F4878800\n" 
+"9DB48600D3B48600F1B486007F88890018B440F249120B\n" 
+"7812FB030301241C700B7812FB03035C700B7812FB0303\n" 
+"18249C700B7812FB03000122C2700878401C087011BCCB\n" 
+"E7000054656D7020496E0054656D70204F757400000000\n" 
+"70B504460D461646E06818B915210548CDF7A1F82A4631\n" 
+"462069E368BDE87040184700BFE06086003B2202490368\n" 
+"9B69184700BF0062860010B51148C16A21B1012180F830\n" 
+"10417111E0016A491C0162426A891A5CBF0121417190F8\n" 
+"281031B1491E80F82810C9B209B9012101710548046824\n" 
+"B1606880472468002CFAD110BD1C278800C8D2880010B5\n" 
+"0446044979440E31044878440C30C4F7D4FA204610BD18\n" 
+"0000000400000021E5FBFFBD69FDFF91A7FBFF65ACFBFF\n" 
+"00000000000000000000000010B50446C4F709FC204610\n" 
+"BD0838FFF795BFE9F7EDBB70470838FFF7FCBF816807E0\n" 
+"02681168536889185B18C36008320260C2689142F4D04A\n" 
+"1C82600878704738B504460D46A068E168884212D12068\n" 
+"6168884208BFE9F7CBFB2068227C016802B14944A16042\n" 
+"685218E260083020609142ECD0A068401CA06000F8015D\n" 
+"31BD2DE9F04589B000F1080105910168059A490802EBC1\n" 
+"0106910021079108910168490800EBC101083100910179\n" 
+"01F001018DF8101040680099400801EBC0000190002002\n" 
+"90F1940390B78600039088E005A8FFF7A8FF044614F003\n" 
+"0503D105A8FFF7A1FFC51C26090F2E1BD105A8FFF79AFF\n" 
+"00F10F0615E00598016808180599079049680818089005\n" 
+"9808300590079808998842F0D0401C079010F8011D00A8\n" 
+"FFF792FF6D1EF2D1002E55D005A8FFF77AFF0546A00800\n" 
+"F00300032804BF05A8FFF771FF009C0299DDF80C8005EB\n" 
+"002008E0083C801A54F8041C54F8082C01EB0208414654\n" 
+"F8082C8A1A8242F1D3404247180025B61C2FD0474507D1\n" 
+"54F8047B54F8040B00EB07084745F7D00298039917F801\n" 
+"AB884217D100980199884208BFE9F72AFB009800689DF8\n" 
+"1010029009B148440290009902984968009A0918083203\n" 
+"9100928842E7D00298401C02906D1C00F801ADB542CFD1\n" 
+"0298039988427FF477AF0198009981427FF472AF09B0BD\n" 
+"E8F08500005BCAFBFFCC5A0100D02D88000000000085FE\n" 
+"FFFF0200000002000000280000006A02000000008800C0\n" 
+"2D000083CBFBFF0C000000D4FDFFFFC02D880000000000\n" 
+"99FDFFFF520001F30E0100011002503F00FF07F206271F\n" 
+"F2060318F00904A0A1A2A3AAABA4A5A9A7A62010048083\n" 
+"8C8D8F9009200AFF00600B110000898B9D9E9F6F527821\n" 
+"4001FF3C410940058B00848586878115F00118FFFE00BA\n" 
+"F18220520604F18903F2440C56F33D803F0415FE6B0401\n" 
+"013109B27870511B820512F33DE80304F131C4E10421C9\n" 
+"F002B50101010001300160048804F1FF01F5FF11F9FF21\n" 
+"FDFF3103FDFF4104FDFF5105FDFF6106FDFF7107FDCB4C\n" 
+"083001C40D8804F1FF01F5FF11F9FF21FDFF3103FDFF41\n" 
+"04FDFF5105FDFF6106FDFF7107FDFF8108FDFF9109FDFF\n" 
+"A10AFDFFB10BFDFFC10CFDFFD10DFDFFE10EFDFFF10FFD\n" 
+"FF0111FDFF1112FDFF2113FDFF3114FDABEC144C01E40D\n" 
+"E5F514FE09021015F206011FF2024728F20A104412C804\n" 
+"FE7204E015920104F11BF0A120F12F0360062D431CEBE2\n" 
+"361A3F08F20A14A8F11303120A04520704F30E0500C1F1\n" 
+"FF1BF13661F21BFF8EF2064018F0010FCA9A3B3BA9C02D\n" 
+"0E262D5403400880A20000C924840080A8081004F56800\n" 
+"00E12308427008A1011221105001B8278886C00D803FFF\n" 
+"CAA3BFF986F43EFBB54A3D7E67F1FF03F5FF13F9FF23FD\n" 
+"E013037C05BB6D8200736E827C06610370052BB1820091\n" 
+"B1821010035FC38200CD043C03EFBEADDE629C06BE90AC\n" 
+"288004D38482002585308F0002C10610033C6E86005804\n" 
+"F10F011201346D1805F11734120234216AF21202349EF3\n" 
+"5407100337BF82008904121A0C1264043001F112000C2D\n" 
+"F14C0020BB8600E40852F20C12908952F30C1E20F42920\n" 
+"02F412E03D0C23800C30A00124000F5D7308080BF0040A\n" 
+"807486009C74BC2002A00C407420431BB70461028E061C\n" 
+"2C12B420F20AD0440000F11400F0438200C47C0715687B\n" 
+"040000408200EFBEADDE>\n" 
diff --git a/drivers/sensors/brcm/sensors_core.c b/drivers/sensors/brcm/sensors_core.c
new file mode 100644 (file)
index 0000000..a3dd9cf
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+ *  Universal sensors core class
+ *
+ *  Author : Ryunkyun Park <ryun.park@samsung.com>
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/fs.h>
+#include <linux/err.h>
+#include <linux/input.h>
+
+struct class *sensors_class;
+EXPORT_SYMBOL_GPL(sensors_class);
+struct class *sensors_event_class;
+EXPORT_SYMBOL_GPL(sensors_event_class);
+static atomic_t sensor_count;
+static struct device *symlink_dev;
+
+/*
+ * Create sysfs interface
+ */
+static void set_sensor_attr(struct device *dev,
+       struct device_attribute *attributes[])
+{
+       int i;
+
+       for (i = 0; attributes[i] != NULL; i++)
+               if ((device_create_file(dev, attributes[i])) < 0)
+                       pr_err("[SENSOR CORE] fail device_create_file"\
+                               "(dev, attributes[%d])\n", i);
+}
+
+int sensors_create_symlink(struct input_dev *inputdev)
+{
+       int err = 0;
+
+       if (symlink_dev == NULL) {
+               pr_err("%s, symlink_dev is NULL!!!\n", __func__);
+               return -ENODEV;
+       }
+
+       err = sysfs_create_link(&symlink_dev->kobj, &inputdev->dev.kobj, inputdev->name);
+
+       if (err < 0) {
+               pr_err("%s, %s failed!(%d)\n", __func__, inputdev->name, err);
+               return err;
+       }
+
+       return err;
+}
+EXPORT_SYMBOL_GPL(sensors_create_symlink);
+
+void sensors_remove_symlink(struct input_dev *inputdev)
+{
+
+       if (symlink_dev == NULL) {
+               pr_err("%s, symlink_dev is NULL!!!\n", __func__);
+               return;
+       }
+
+       sysfs_delete_link(&symlink_dev->kobj, &inputdev->dev.kobj, inputdev->name);
+}
+EXPORT_SYMBOL_GPL(sensors_remove_symlink);
+
+
+int sensors_register(struct device *dev, void *drvdata,
+       struct device_attribute *attributes[], char *name)
+{
+       int ret = 0;
+
+       if (!sensors_class) {
+               sensors_class = class_create(THIS_MODULE, "sensors");
+               if (IS_ERR(sensors_class))
+                       return PTR_ERR(sensors_class);
+       }
+
+       dev = device_create(sensors_class, NULL, 0, drvdata, "%s", name);
+
+       if (IS_ERR(dev)) {
+               ret = PTR_ERR(dev);
+               pr_err("[SENSORS CORE] device_create failed!"\
+                       "[%d]\n", ret);
+               return ret;
+       }
+
+       set_sensor_attr(dev, attributes);
+       atomic_inc(&sensor_count);
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(sensors_register);
+
+void sensors_unregister(struct device *dev,
+       struct device_attribute *attributes[])
+{
+       int i;
+
+       for (i = 0; attributes[i] != NULL; i++)
+               device_remove_file(dev, attributes[i]);
+}
+EXPORT_SYMBOL_GPL(sensors_unregister);
+
+void destroy_sensor_class(void)
+{
+       if (sensors_class) {
+               class_destroy(sensors_class);
+               sensors_class = NULL;
+       }
+
+       if (sensors_event_class) {
+               device_destroy(sensors_event_class, symlink_dev->devt);
+               class_destroy(sensors_event_class);
+               symlink_dev = NULL;
+               sensors_event_class = NULL;
+       }
+}
+EXPORT_SYMBOL_GPL(destroy_sensor_class);
+
+static int __init sensors_class_init(void)
+{
+       pr_info("[SENSORS CORE] sensors_class_init\n");
+       sensors_class = class_create(THIS_MODULE, "sensors");
+       if (IS_ERR(sensors_class)) {
+               pr_err("%s, create sensors_class is failed.(err=%ld)\n",
+                       __func__, IS_ERR(sensors_class));
+               return PTR_ERR(sensors_class);
+       }
+
+       /* For symbolic link */
+       sensors_event_class = class_create(THIS_MODULE, "sensor_event");
+       if (IS_ERR(sensors_event_class)) {
+               pr_err("%s, create sensors_class is failed.(err=%ld)\n",
+                       __func__, IS_ERR(sensors_event_class));
+               class_destroy(sensors_class);
+               return PTR_ERR(sensors_event_class);
+       }
+
+       symlink_dev = device_create(sensors_event_class, NULL, 0, NULL,
+               "%s", "symlink");
+       if (IS_ERR(symlink_dev)) {
+               pr_err("[SENSORS CORE] symlink_dev create failed!"\
+                       "[%ld]\n", IS_ERR(symlink_dev));
+               class_destroy(sensors_class);
+               class_destroy(sensors_event_class);
+               return PTR_ERR(symlink_dev);
+       }
+
+       atomic_set(&sensor_count, 0);
+       sensors_class->dev_uevent = NULL;
+       pr_info("[SENSORS CORE] sensors_class_init succcess\n");
+
+       return 0;
+}
+
+static void __exit sensors_class_exit(void)
+{
+       if (sensors_class || sensors_event_class) {
+               class_destroy(sensors_class);
+               sensors_class = NULL;
+               class_destroy(sensors_event_class);
+               sensors_event_class = NULL;
+       }
+}
+
+subsys_initcall(sensors_class_init);
+module_exit(sensors_class_exit);
+
+MODULE_DESCRIPTION("Universal sensors core class");
+MODULE_AUTHOR("Ryunkyun Park <ryun.park@samsung.com>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/sensors/brcm/ssp.h b/drivers/sensors/brcm/ssp.h
new file mode 100644 (file)
index 0000000..fba7656
--- /dev/null
@@ -0,0 +1,711 @@
+/*
+ *  Copyright (C) 2011, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#ifndef __SSP_PRJ_H__
+#define __SSP_PRJ_H__
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/uaccess.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/workqueue.h>
+#include <linux/gpio.h>
+#ifdef CONFIG_HAS_EARLYSUSPEND
+#include <linux/earlysuspend.h>
+#endif
+#include <linux/wakelock.h>
+#include <linux/miscdevice.h>
+#include <linux/delay.h>
+#include <linux/firmware.h>
+#include <linux/timer.h>
+#include <linux/list.h>
+#include <linux/rtc.h>
+#include <linux/time.h>
+#include <linux/regulator/consumer.h>
+#include <linux/ssp_platformdata.h>
+#include <linux/spi/spi.h>
+#include "bbdpl1/bbd.h"
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+#include "ssp_sensorhub.h"
+#endif
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+#undef CONFIG_HAS_EARLYSUSPEND
+#endif
+
+#define SSP_DBG                1
+
+#define SUCCESS                1
+#define FAIL           0
+#define ERROR          -1
+
+#define FACTORY_DATA_MAX       99
+
+#if SSP_DBG
+#define SSP_FUNC_DBG 1
+#define SSP_DATA_DBG 0
+
+/* ssp mcu device ID */
+#define DEVICE_ID                      0x55
+
+#define ssp_dbg(format, ...) do { \
+       printk(KERN_INFO format, ##__VA_ARGS__); \
+       } while (0)
+#else
+#define ssp_dbg(format, ...)
+#endif
+
+#if SSP_FUNC_DBG
+#define func_dbg() do { \
+       printk(KERN_INFO "[SSP]: %s\n", __func__); \
+       } while (0)
+#else
+#define func_dbg()
+#endif
+
+#if SSP_DATA_DBG
+#define data_dbg(format, ...) do { \
+       printk(KERN_INFO format, ##__VA_ARGS__); \
+       } while (0)
+#else
+#define data_dbg(format, ...)
+#endif
+
+#define SSP_SW_RESET_TIME      3000
+#define DEFUALT_POLLING_DELAY  (200 * NSEC_PER_MSEC)
+#define PROX_AVG_READ_NUM      80
+#define DEFAULT_RETRIES                3
+#define DATA_PACKET_SIZE       960
+
+/* SSP Binary Type */
+enum {
+       KERNEL_BINARY = 0,
+       KERNEL_CRASHED_BINARY,
+       UMS_BINARY,
+};
+
+/*
+ * SENSOR_DELAY_SET_STATE
+ * Check delay set to avoid sending ADD instruction twice
+ */
+enum {
+       INITIALIZATION_STATE = 0,
+       NO_SENSOR_STATE,
+       ADD_SENSOR_STATE,
+       RUNNING_SENSOR_STATE,
+};
+
+/* for MSG2SSP_AP_GET_THERM */
+enum {
+       ADC_BATT = 0,
+       ADC_CHG,
+};
+
+enum {
+    SENSORS_BATCH_DRY_RUN               = 0x00000001,
+    SENSORS_BATCH_WAKE_UPON_FIFO_FULL   = 0x00000002
+};
+
+enum {
+    META_DATA_FLUSH_COMPLETE = 1,
+};
+
+#define SSP_INVALID_REVISION           99999
+#define SSP_INVALID_REVISION2          0xFFFFFF
+
+/* Gyroscope DPS */
+#define GYROSCOPE_DPS250               250
+#define GYROSCOPE_DPS500               500
+#define GYROSCOPE_DPS2000              2000
+
+/* Gesture Sensor Current */
+#define DEFUALT_IR_CURRENT             100
+
+/* kernel -> ssp manager cmd*/
+#define SSP_LIBRARY_SLEEP_CMD  (1 << 5)
+#define SSP_LIBRARY_LARGE_DATA_CMD     (1 << 6)
+#define SSP_LIBRARY_WAKEUP_CMD (1 << 7)
+
+/* AP -> SSP Instruction */
+#define MSG2SSP_INST_BYPASS_SENSOR_ADD 0xA1
+#define MSG2SSP_INST_BYPASS_SENSOR_REMOVE      0xA2
+#define MSG2SSP_INST_REMOVE_ALL                0xA3
+#define MSG2SSP_INST_CHANGE_DELAY              0xA4
+#define MSG2SSP_INST_LIBRARY_ADD               0xB1
+#define MSG2SSP_INST_LIBRARY_REMOVE            0xB2
+#define MSG2SSP_INST_LIB_NOTI          0xB4
+#define MSG2SSP_INST_LIB_DATA          0xC1
+
+#define MSG2SSP_AP_MCU_SET_GYRO_CAL            0xCD
+#define MSG2SSP_AP_MCU_SET_ACCEL_CAL           0xCE
+#define MSG2SSP_AP_STATUS_SHUTDOWN             0xD0
+#define MSG2SSP_AP_STATUS_WAKEUP               0xD1
+#define MSG2SSP_AP_STATUS_SLEEP                0xD2
+#define MSG2SSP_AP_STATUS_RESUME               0xD3
+#define MSG2SSP_AP_STATUS_SUSPEND              0xD4
+#define MSG2SSP_AP_STATUS_RESET                0xD5
+#define MSG2SSP_AP_STATUS_POW_CONNECTED        0xD6
+#define MSG2SSP_AP_STATUS_POW_DISCONNECTED     0xD7
+#define MSG2SSP_AP_TEMPHUMIDITY_CAL_DONE       0xDA
+#define MSG2SSP_AP_MCU_SET_DUMPMODE            0xDB
+#define MSG2SSP_AP_MCU_DUMP_CHECK              0xDC
+#define MSG2SSP_AP_MCU_BATCH_FLUSH             0xDD
+#define MSG2SSP_AP_MCU_BATCH_COUNT             0xDF
+
+#define MSG2SSP_AP_WHOAMI                      0x0F
+#define MSG2SSP_AP_FIRMWARE_REV                0xF0
+#define MSG2SSP_AP_SENSOR_FORMATION            0xF1
+#define MSG2SSP_AP_SENSOR_PROXTHRESHOLD        0xF2
+#define MSG2SSP_AP_SENSOR_BARCODE_EMUL 0xF3
+#define MSG2SSP_AP_SENSOR_SCANNING             0xF4
+#define MSG2SSP_AP_SET_MAGNETIC_HWOFFSET       0xF5
+#define MSG2SSP_AP_GET_MAGNETIC_HWOFFSET       0xF6
+#define MSG2SSP_AP_SENSOR_GESTURE_CURRENT      0xF7
+#define MSG2SSP_AP_GET_THERM           0xF8
+#define MSG2SSP_AP_GET_BIG_DATA                0xF9
+#define MSG2SSP_AP_SET_BIG_DATA                0xFA
+#define MSG2SSP_AP_START_BIG_DATA              0xFB
+#define MSG2SSP_AP_SET_MAGNETIC_STATIC_MATRIX  0xFD
+#define MSG2SSP_AP_SENSOR_TILT                 0xEA
+#define MSG2SSP_AP_MCU_SET_TIME                        0xFE
+#define MSG2SSP_AP_MCU_GET_TIME                        0xFF
+#define MSG2SSP_AP_MOBEAM_DATA_SET             0x31
+#define MSG2SSP_AP_MOBEAM_REGISTER_SET         0x32
+#define MSG2SSP_AP_MOBEAM_COUNT_SET            0x33
+#define MSG2SSP_AP_MOBEAM_START                        0x34
+#define MSG2SSP_AP_MOBEAM_STOP                 0x35
+#define MSG2SSP_AP_SENSOR_LPF                  0x37
+
+#define MSG2SSP_AP_FUSEROM                     0X01
+
+/* voice data */
+#define TYPE_WAKE_UP_VOICE_SERVICE                     0x01
+#define TYPE_WAKE_UP_VOICE_SOUND_SOURCE_AM             0x01
+#define TYPE_WAKE_UP_VOICE_SOUND_SOURCE_GRAMMER        0x02
+
+/* Factory Test */
+#define ACCELEROMETER_FACTORY  0x80
+#define GYROSCOPE_FACTORY              0x81
+#define GEOMAGNETIC_FACTORY            0x82
+#define PRESSURE_FACTORY               0x85
+#define GESTURE_FACTORY                0x86
+#define TEMPHUMIDITY_CRC_FACTORY       0x88
+#define GYROSCOPE_TEMP_FACTORY 0x8A
+#define GYROSCOPE_DPS_FACTORY  0x8B
+#define MCU_FACTORY            0x8C
+#define MCU_SLEEP_FACTORY              0x8D
+
+/* Factory data length */
+#define ACCEL_FACTORY_DATA_LENGTH              1
+#define GYRO_FACTORY_DATA_LENGTH               36
+#define MAGNETIC_FACTORY_DATA_LENGTH           26
+#define PRESSURE_FACTORY_DATA_LENGTH           1
+#define MCU_FACTORY_DATA_LENGTH                5
+#define        GYRO_TEMP_FACTORY_DATA_LENGTH   2
+#define        GYRO_DPS_FACTORY_DATA_LENGTH    1
+#define TEMPHUMIDITY_FACTORY_DATA_LENGTH       1
+#define MCU_SLEEP_FACTORY_DATA_LENGTH  FACTORY_DATA_MAX
+#define GESTURE_FACTORY_DATA_LENGTH            4
+
+#define DEFUALT_HIGH_THRESHOLD         185
+#define DEFUALT_LOW_THRESHOLD          145
+
+/* SSP -> AP ACK about write CMD */
+#define MSG_ACK                0x80    /* ACK from SSP to AP */
+#define MSG_NAK                0x70    /* NAK from SSP to AP */
+
+#define MAX_GYRO               32767
+#define MIN_GYRO               -32768
+
+#define MAX_COMP_BUFF 60
+
+/* temphumidity sensor*/
+struct shtc1_buffer {
+       u16 batt[MAX_COMP_BUFF];
+       u16 chg[MAX_COMP_BUFF];
+       s16 temp[MAX_COMP_BUFF];
+       u16 humidity[MAX_COMP_BUFF];
+       u16 baro[MAX_COMP_BUFF];
+       u16 gyro[MAX_COMP_BUFF];
+       char len;
+};
+
+/* SSP_INSTRUCTION_CMD */
+enum {
+       REMOVE_SENSOR = 0,
+       ADD_SENSOR,
+       CHANGE_DELAY,
+       GO_SLEEP,
+       REMOVE_LIBRARY,
+       ADD_LIBRARY,
+};
+
+/* SENSOR_TYPE */
+enum {
+       ACCELEROMETER_SENSOR = 0,
+       GYROSCOPE_SENSOR,
+       GEOMAGNETIC_UNCALIB_SENSOR,
+       GEOMAGNETIC_RAW,
+       GEOMAGNETIC_SENSOR,
+       PRESSURE_SENSOR,
+       GESTURE_SENSOR,
+       PROXIMITY_SENSOR,
+       TEMPERATURE_HUMIDITY_SENSOR,
+       LIGHT_SENSOR,
+       PROXIMITY_RAW,
+       ORIENTATION_SENSOR,
+       STEP_DETECTOR = 12,
+       SIG_MOTION_SENSOR,
+       GYRO_UNCALIB_SENSOR,
+       GAME_ROTATION_VECTOR = 15,
+       ROTATION_VECTOR,
+       STEP_COUNTER,
+       BIO_HRM_RAW,
+       BIO_HRM_RAW_FAC,
+       BIO_HRM_LIB,
+       SHAKE_CAM = 22,
+       SENSOR_MAX,
+};
+
+struct meta_data_event {
+       s32 what;
+       s32 sensor;
+} __attribute__((__packed__));
+
+struct sensor_value {
+       union {
+               struct {
+                       s16 x;
+                       s16 y;
+                       s16 z;
+               };
+               struct {                /*calibrated mag, gyro*/
+                       s16 cal_x;
+                       s16 cal_y;
+                       s16 cal_z;
+                       u8 accuracy;
+               };
+               struct {                /*uncalibrated mag, gyro*/
+                       s16 uncal_x;
+                       s16 uncal_y;
+                       s16 uncal_z;
+                       s16 offset_x;
+                       s16 offset_y;
+                       s16 offset_z;
+               };
+               struct {                /* rotation vector */
+                       s32 quat_a;
+                       s32 quat_b;
+                       s32 quat_c;
+                       s32 quat_d;
+                       u8 acc_rot;
+               };
+               struct {
+                       u16 r;
+                       u16 g;
+                       u16 b;
+                       u16 w;
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+                       u8 a_time;
+                       u8 a_gain;
+#endif
+               };
+               u8 step_det;
+               u8 sig_motion;
+               u8 prox[4];
+               u8 data[20];
+               s32 pressure[3];
+               u32 step_diff;
+               struct meta_data_event meta_data;
+       };
+       u64 timestamp;
+} __attribute__((__packed__));
+
+extern struct class *sensors_event_class;
+
+struct calibraion_data {
+       s16 x;
+       s16 y;
+       s16 z;
+};
+
+struct hw_offset_data {
+       char x;
+       char y;
+       char z;
+};
+
+/* ssp_msg options bit*/
+#define SSP_SPI                0       /* read write mask */
+#define SSP_RETURN     2       /* write and read option */
+#define SSP_GYRO_DPS   3       /* gyro dps mask */
+#define SSP_INDEX      3       /* data index mask */
+
+#define SSP_SPI_MASK           (3 << SSP_SPI)  /* read write mask */
+#define SSP_GYRO_DPS_MASK      (3 << SSP_GYRO_DPS)
+#define SSP_INDEX_MASK         (8191 << SSP_INDEX)     /* dump index mask. Index is up to 8191 */
+
+struct ssp_msg {
+       u8 cmd;
+       u16 length;
+       u16 options;
+       u32 data;
+
+       struct list_head list;
+       struct completion *done;
+       char *buffer;
+       u8 free_buffer;
+       bool *dead_hook;
+       bool dead;
+} __attribute__((__packed__));
+
+enum {
+       AP2HUB_READ = 0,
+       AP2HUB_WRITE,
+       HUB2AP_WRITE,
+       AP2HUB_READY,
+       AP2HUB_RETURN
+};
+
+enum {
+       BIG_TYPE_DUMP = 0,
+       BIG_TYPE_READ_LIB,
+       /*+snamy.jeong 0706 for voice model download & pcm dump*/
+       BIG_TYPE_VOICE_NET,
+       BIG_TYPE_VOICE_GRAM,
+       BIG_TYPE_VOICE_PCM,
+       /*-snamy.jeong 0706 for voice model download & pcm dump*/
+       BIG_TYPE_TEMP,
+       BIG_TYPE_MAX,
+};
+
+enum {
+       BATCH_MODE_NONE = 0,
+       BATCH_MODE_RUN,
+};
+
+struct ssp_time_diff {
+       u16 batch_count;
+       u16 batch_mode;
+       u64 time_diff;
+       u64 irq_diff;
+       u16 batch_count_fixed;
+};
+
+struct ssp_data {
+       struct iio_dev *accel_indio_dev;
+       struct iio_dev *gyro_indio_dev;
+       struct iio_dev *uncal_gyro_indio_dev;
+       struct iio_dev *mag_indio_dev;
+       struct iio_dev *uncal_mag_indio_dev;
+       struct iio_dev *rot_indio_dev;
+       struct iio_dev *game_rot_indio_dev;
+       struct iio_dev *step_det_indio_dev;
+       struct iio_dev *pressure_indio_dev;
+       struct iio_trigger *accel_trig;
+       struct iio_trigger *gyro_trig;
+       struct iio_trigger *rot_trig;
+       struct iio_trigger *game_rot_trig;
+       struct iio_trigger *step_det_trig;
+       struct iio_trigger *pressure_det_trig;
+
+       struct input_dev *light_input_dev;
+       struct input_dev *prox_input_dev;
+       struct input_dev *temp_humi_input_dev;
+       struct input_dev *gesture_input_dev;
+
+       struct input_dev *sig_motion_input_dev;
+       struct input_dev *step_cnt_input_dev;
+       struct input_dev *meta_input_dev;
+       struct spi_device *spi;
+       struct workqueue_struct *bbd_on_packet_wq;
+       struct work_struct work_bbd_on_packet;
+       struct workqueue_struct *bbd_mcu_ready_wq;
+       struct work_struct work_bbd_mcu_ready;
+
+#ifdef SSP_BBD_USE_SEND_WORK
+       struct workqueue_struct *bbd_send_packet_wq;
+       struct work_struct work_bbd_send_packet;
+       struct ssp_msg *bbd_send_msg;
+       unsigned short bbd_msg_options;
+#endif /* SSP_BBD_USE_SEND_WORK  */
+       struct i2c_client *client;
+       struct wake_lock ssp_wake_lock;
+       struct timer_list debug_timer;
+       struct workqueue_struct *debug_wq;
+       struct work_struct work_debug;
+       struct calibraion_data accelcal;
+       struct calibraion_data gyrocal;
+       struct hw_offset_data magoffset;
+       struct sensor_value buf[SENSOR_MAX];
+       struct device *sen_dev;
+       struct device *mcu_device;
+       struct device *acc_device;
+       struct device *gyro_device;
+       struct device *mag_device;
+       struct device *prs_device;
+       struct device *prox_device;
+       struct device *light_device;
+       struct device *ges_device;
+       struct device *temphumidity_device;
+#ifdef CONFIG_SENSORS_SSP_MOBEAM
+       struct device *mobeam_device;
+#endif
+       struct miscdevice batch_io_device;
+/*snamy.jeong@samsung.com temporary code for voice data sending to mcu*/
+       struct device *voice_device;
+
+       bool bSspShutdown;
+       bool bAccelAlert;
+       bool bProximityRawEnabled;
+       bool bGeomagneticRawEnabled;
+       bool bGeomagneticLogged;
+       bool bBarcodeEnabled;
+       bool bMcuDumpMode;
+       bool bBinaryChashed;
+       bool bProbeIsDone;
+       bool bDumping;
+       bool bTimeSyncing;
+       bool bHandlingIrq;
+
+       unsigned int uProxCanc;
+       unsigned int uCrosstalk;
+       unsigned int uProxCalResult;
+       unsigned int uProxHiThresh;
+       unsigned int uProxLoThresh;
+       unsigned int uProxHiThresh_default;
+       unsigned int uProxLoThresh_default;
+       unsigned int uIr_Current;
+       unsigned char uFuseRomData[3];
+       unsigned char uMagCntlRegData;
+       char *pchLibraryBuf;
+       char chLcdLdi[2];
+       int iLibraryLength;
+       int aiCheckStatus[SENSOR_MAX];
+
+       unsigned int uComFailCnt;
+       unsigned int uResetCnt;
+       unsigned int uTimeOutCnt;
+       unsigned int uIrqCnt;
+       unsigned int uDumpCnt;
+
+       int sealevelpressure;
+       unsigned int uGyroDps;
+       unsigned int uSensorState;
+       unsigned int uCurFirmRev;
+       unsigned int uFactoryProxAvg[4];
+       char uLastResumeState;
+       char uLastAPState;
+       s32 iPressureCal;
+       u64 step_count_total;
+
+       atomic_t aSensorEnable;
+       int64_t adDelayBuf[SENSOR_MAX];
+       u64 lastTimestamp[SENSOR_MAX];
+       s32 batchLatencyBuf[SENSOR_MAX];
+       s8 batchOptBuf[SENSOR_MAX];
+       bool reportedData[SENSOR_MAX];
+
+       int (*wakeup_mcu)(void);
+       int (*set_mcu_reset)(int);
+       void (*get_sensor_data[SENSOR_MAX])(char *, int *,
+               struct sensor_value *);
+       void (*report_sensor_data[SENSOR_MAX])(struct ssp_data *,
+               struct sensor_value *);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       struct early_suspend early_suspend;
+#endif
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+       struct ssp_sensorhub_data *hub_data;
+#endif
+       int ap_rev;
+       int accel_position;
+       int mag_position;
+       u8 mag_matrix_size;
+       u8 *mag_matrix;
+       struct mutex comm_mutex;
+       struct mutex pending_mutex;
+       struct mutex enable_mutex;
+
+#if defined(CONFIG_SENSORS_SSP_YAS532)
+       s16 *static_matrix;
+#endif
+       struct list_head pending_list;
+       void (*ssp_big_task[BIG_TYPE_MAX])(struct work_struct *);
+       u64 timestamp;
+};
+
+struct ssp_big {
+       struct ssp_data* data;
+       struct work_struct work;
+       u32 length;
+       u32 addr;
+};
+
+#ifdef CONFIG_SENSORS_SSP_MOBEAM
+struct reg_index_table {
+       unsigned char reg;
+       unsigned char index;
+};
+#endif
+
+int ssp_iio_configure_ring(struct iio_dev *);
+void ssp_iio_unconfigure_ring(struct iio_dev *);
+int ssp_iio_probe_trigger(struct ssp_data *, struct iio_dev *, struct iio_trigger *);
+void ssp_iio_remove_trigger(struct iio_trigger *);
+
+void ssp_enable(struct ssp_data *, bool);
+int ssp_spi_async(struct ssp_data *, struct ssp_msg *);
+int ssp_spi_sync(struct ssp_data *, struct ssp_msg *, int);
+void clean_pending_list(struct ssp_data *);
+void toggle_mcu_reset(struct ssp_data *);
+int initialize_mcu(struct ssp_data *);
+int initialize_input_dev(struct ssp_data *);
+int initialize_sysfs(struct ssp_data *);
+void initialize_function_pointer(struct ssp_data *);
+void initialize_accel_factorytest(struct ssp_data *);
+void initialize_prox_factorytest(struct ssp_data *);
+void initialize_light_factorytest(struct ssp_data *);
+void initialize_gyro_factorytest(struct ssp_data *);
+void initialize_pressure_factorytest(struct ssp_data *);
+void initialize_magnetic_factorytest(struct ssp_data *);
+void initialize_gesture_factorytest(struct ssp_data *data);
+void initialize_temphumidity_factorytest(struct ssp_data *data);
+void remove_accel_factorytest(struct ssp_data *);
+void remove_gyro_factorytest(struct ssp_data *);
+void remove_prox_factorytest(struct ssp_data *);
+void remove_light_factorytest(struct ssp_data *);
+void remove_pressure_factorytest(struct ssp_data *);
+void remove_magnetic_factorytest(struct ssp_data *);
+void remove_gesture_factorytest(struct ssp_data *data);
+void remove_temphumidity_factorytest(struct ssp_data *data);
+#ifdef CONFIG_SENSORS_SSP_MOBEAM
+void initialize_mobeam(struct ssp_data *data);
+void remove_mobeam(struct ssp_data *data);
+#endif
+void sensors_remove_symlink(struct input_dev *);
+void destroy_sensor_class(void);
+int initialize_event_symlink(struct ssp_data *);
+int sensors_create_symlink(struct input_dev *);
+int accel_open_calibration(struct ssp_data *);
+int gyro_open_calibration(struct ssp_data *);
+int pressure_open_calibration(struct ssp_data *);
+int proximity_open_calibration(struct ssp_data *);
+int check_fwbl(struct ssp_data *);
+void remove_input_dev(struct ssp_data *);
+void remove_sysfs(struct ssp_data *);
+void remove_event_symlink(struct ssp_data *);
+int ssp_send_cmd(struct ssp_data *, char, int);
+int send_instruction(struct ssp_data *, u8, u8, u8 *, u8);
+int send_instruction_sync(struct ssp_data *, u8, u8, u8 *, u8);
+int flush(struct ssp_data *, u8);
+int get_batch_count(struct ssp_data *, u8);
+int select_irq_msg(struct ssp_data *);
+int get_chipid(struct ssp_data *);
+int set_big_data_start(struct ssp_data *, u8 , u32);
+int mag_open_hwoffset(struct ssp_data *);
+int mag_store_hwoffset(struct ssp_data *);
+int set_hw_offset(struct ssp_data *);
+int get_hw_offset(struct ssp_data *);
+int set_gyro_cal(struct ssp_data *);
+int set_accel_cal(struct ssp_data *);
+int initialize_magnetic_sensor(struct ssp_data *data);
+int set_sensor_position(struct ssp_data *);
+int set_magnetic_static_matrix(struct ssp_data *);
+void sync_sensor_state(struct ssp_data *);
+void set_proximity_threshold(struct ssp_data *, unsigned int, unsigned int);
+void set_proximity_barcode_enable(struct ssp_data *, bool);
+void set_gesture_current(struct ssp_data *, unsigned char);
+int get_msdelay(int64_t);
+unsigned int get_sensor_scanning_info(struct ssp_data *);
+unsigned int get_firmware_rev(struct ssp_data *);
+int forced_to_download_binary(struct ssp_data *, int);
+int parse_dataframe(struct ssp_data *, char *, int);
+void enable_debug_timer(struct ssp_data *);
+void disable_debug_timer(struct ssp_data *);
+int initialize_debug_timer(struct ssp_data *);
+void get_proximity_threshold(struct ssp_data *);
+void report_meta_data(struct ssp_data *, struct sensor_value *);
+void report_acc_data(struct ssp_data *, struct sensor_value *);
+void report_gyro_data(struct ssp_data *, struct sensor_value *);
+void report_mag_data(struct ssp_data *, struct sensor_value *);
+void report_mag_uncaldata(struct ssp_data *, struct sensor_value *);
+void report_rot_data(struct ssp_data *, struct sensor_value *);
+void report_game_rot_data(struct ssp_data *, struct sensor_value *);
+void report_step_det_data(struct ssp_data *, struct sensor_value *);
+void report_gesture_data(struct ssp_data *, struct sensor_value *);
+void report_pressure_data(struct ssp_data *, struct sensor_value *);
+void report_light_data(struct ssp_data *, struct sensor_value *);
+void report_prox_data(struct ssp_data *, struct sensor_value *);
+void report_prox_raw_data(struct ssp_data *, struct sensor_value *);
+void report_geomagnetic_raw_data(struct ssp_data *, struct sensor_value *);
+void report_sig_motion_data(struct ssp_data *, struct sensor_value *);
+void report_uncalib_gyro_data(struct ssp_data *, struct sensor_value *);
+void report_step_cnt_data(struct ssp_data *, struct sensor_value *);
+int print_mcu_debug(char *, int *, int);
+void report_temp_humidity_data(struct ssp_data *, struct sensor_value *);
+void report_shake_cam_data(struct ssp_data *, struct sensor_value *);
+void report_bulk_comp_data(struct ssp_data *data);
+unsigned int get_module_rev(struct ssp_data *data);
+void reset_mcu(struct ssp_data *);
+void convert_acc_data(s16 *);
+int sensors_register(struct device *, void *,
+       struct device_attribute*[], char *);
+void sensors_unregister(struct device *,
+       struct device_attribute*[]);
+ssize_t mcu_reset_show(struct device *, struct device_attribute *, char *);
+ssize_t mcu_dump_show(struct device *, struct device_attribute *, char *);
+ssize_t mcu_revision_show(struct device *, struct device_attribute *, char *);
+ssize_t mcu_update_ums_bin_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_update_kernel_bin_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_update_kernel_crashed_bin_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_factorytest_store(struct device *, struct device_attribute *,
+       const char *, size_t);
+ssize_t mcu_factorytest_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_model_name_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_sleep_factorytest_show(struct device *,
+       struct device_attribute *, char *);
+ssize_t mcu_sleep_factorytest_store(struct device *,
+       struct device_attribute *, const char *, size_t);
+unsigned int ssp_check_sec_dump_mode(void);
+
+void ssp_dump_task(struct work_struct *work);
+void ssp_read_big_library_task(struct work_struct *work);
+void ssp_send_big_library_task(struct work_struct *work);
+void ssp_pcm_dump_task(struct work_struct *work);
+void ssp_temp_task(struct work_struct *work);
+
+int callback_bbd_on_control(void *ssh_data, char *str_ctrl);
+int callback_bbd_on_mcu_ready(void *ssh_data, bool ready);
+int callback_bbd_on_packet_alarm(void *ssh_data);
+void bbd_on_packet_work_func(struct work_struct *work);
+void bbd_mcu_ready_work_func(struct work_struct *work);
+#ifdef SSP_BBD_USE_SEND_WORK
+void bbd_send_packet_work_func(struct work_struct *work);
+#endif /* SSP_BBD_USE_SEND_WORK  */
+int set_time(struct ssp_data *);
+int get_time(struct ssp_data *);
+#endif
diff --git a/drivers/sensors/brcm/ssp_bbd.c b/drivers/sensors/brcm/ssp_bbd.c
new file mode 100644 (file)
index 0000000..8af8ddf
--- /dev/null
@@ -0,0 +1,406 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#include "ssp.h"
+
+
+bool ssp_dbg;
+bool ssp_pkt_dbg;
+
+#define dprint(fmt, args...) \
+               if (unlikely(ssp_dbg))   printk(KERN_INFO "[SSPBBD]:(%s:%d): " fmt, __func__,__LINE__, ##args)
+
+#define DEBUG_SHOW_HEX_SEND(msg, len) \
+               if (unlikely(ssp_pkt_dbg))      print_hex_dump(KERN_INFO, "SSP->MCU: ", DUMP_PREFIX_NONE, 16, 1, (msg), (len), true);
+#define DEBUG_SHOW_HEX_RECV(msg, len) \
+               if (unlikely(ssp_pkt_dbg))      print_hex_dump(KERN_INFO, "SSP<-MCU: ", DUMP_PREFIX_NONE, 16, 1, (msg), (len), true);
+
+extern void clean_msg(struct ssp_msg *msg);
+
+/**
+ * transfer ssp data to mcu thru bbd driver.
+ *
+ * @data:      ssp data pointer
+ * @msg:       ssp message
+ * @done:      completion
+ * @timeout:   wait response time (ms)
+ *
+ * @return:     1 = success, -1 = failed to send data to bbd
+ *             -2 = failed to get response from mcu
+ */
+int bbd_do_transfer(struct ssp_data *data, struct ssp_msg *msg,
+               struct completion *done, int timeout) {
+       int status = 0;
+       bool msg_dead = false, ssp_down = false;
+       bool use_no_irq = false;
+
+       if(data == NULL || msg == NULL) {
+               pr_err("%s():[SSPBBD] data or msg is NULL\n", __func__);
+               return -1;
+       }
+
+       ssp_down = data->bSspShutdown;
+
+       if (ssp_down) {
+               pr_err("[SSPBBD]: ssp_down == true. returning\n");
+               clean_msg(msg);
+               mdelay(5);
+               return -1;
+       }
+
+       msg->dead_hook = &msg_dead;
+       msg->dead = false;
+       msg->done = done;
+       use_no_irq = (msg->length == 0);
+
+       mutex_lock(&data->comm_mutex);
+
+       mutex_lock(&data->pending_mutex);
+
+       if (bbd_send_packet((unsigned char *)msg, 9) > 0) {
+               status = 1;
+               DEBUG_SHOW_HEX_SEND(msg, 9)
+       } else {
+               pr_err("[SSP]: %s bbd_send_packet fail!!\n", __func__);
+               data->uTimeOutCnt++;
+               clean_msg(msg);
+               mutex_unlock(&data->pending_mutex);
+               mutex_unlock(&data->comm_mutex);
+               return -1;
+       }
+
+       if (!use_no_irq) {
+               list_add_tail(&msg->list, &data->pending_list);
+       }
+
+       mutex_unlock(&data->pending_mutex);
+
+       if (status == 1 && done != NULL) {
+               dprint("waiting completion ...\n");
+               if (wait_for_completion_timeout(done, msecs_to_jiffies(timeout)) == 0) {
+                       pr_err("[SSPBBD] : %s() : completion is timeout !\n", __func__);
+                       status = -2;
+                       if (!use_no_irq && !msg_dead) {
+                               mutex_lock(&data->pending_mutex);
+                               if (msg->list.next!=NULL && msg->list.next!=LIST_POISON1)
+                                       list_del(&msg->list);
+                               mutex_unlock(&data->pending_mutex);
+                       }
+               }else{
+                       dprint("completion is cleared !\n");
+               }
+       }
+
+       mutex_lock(&data->pending_mutex);
+       if (msg != NULL && !msg_dead) {
+               msg->done = NULL;
+               msg->dead_hook = NULL;
+
+               if (status != 1)
+                       msg->dead = true;
+               if (status == -2)
+                       data->uTimeOutCnt++;
+       }
+       mutex_unlock(&data->pending_mutex);
+
+       if (use_no_irq)
+               clean_msg(msg);
+
+       mutex_unlock(&data->comm_mutex);
+
+       return status;
+}
+
+/****************************************************************
+ *
+ * Callback fucntios
+ *
+ ****************************************************************/
+
+/**
+ * callback function:
+ *     called this function by bbdpl when packet comes from MCU
+ *
+ * @ssh_data:  ssh data pointer
+ *
+ * @return:    0 = success, -1 = failure
+ *
+ */
+int callback_bbd_on_packet_alarm(void *ssh_data)
+{
+       struct ssp_data *data = (struct ssp_data *)ssh_data;
+
+       if(ssh_data == NULL)
+               return -1;
+       if(queue_work(data->bbd_on_packet_wq, &data->work_bbd_on_packet)){
+               /* in case of adding the work to queue */
+               dprint("queue_work ok!!\n");
+               return 0;
+       }
+
+       return 0;
+}
+
+/**
+ * callback function
+ *     called this function by bbdpl whenever mcu is(not) ready
+ *
+ * @ssh_data:  ssh data pointer
+ * @ready:     true = ready, false = not ready
+ *
+ * @return:    0 = success, -1 = failure
+ */
+int callback_bbd_on_mcu_ready(void *ssh_data, bool ready)
+{
+       struct ssp_data *data = (struct ssp_data *)ssh_data;
+
+       if(data == NULL)
+               return -1;
+
+       if(ready == true) {
+               /* Start queue work for initializing MCU */
+               queue_work(data->bbd_mcu_ready_wq, &data->work_bbd_mcu_ready);
+       }else{
+               /* Disable SSP */
+               ssp_enable(data, false);        
+               dprint("MCU is not ready and disabled SSP\n");
+       }
+
+       return 0;
+}
+
+/**
+ * callback function
+ *     called this function by bbdpl when received control command from LHD
+ *
+ * @ssh_data:  ssh data pointer
+ * @str_ctrl:  string type control command
+ *
+ * @return:    0 = success, -1 = failure
+ */
+int callback_bbd_on_control(void *ssh_data, char *str_ctrl)
+{
+       if(!ssh_data || !str_ctrl)
+               return -1;
+
+       dprint("Received string command from LHD(=%s)\n", str_ctrl);
+
+       return 0;
+}
+
+/****************************************************************
+ *
+ * Work queue fucntios
+ *
+ ****************************************************************/
+
+/**
+ * Work queue function for MCU ready 
+ *     This is called by bbdpl when MCU is ready and then
+ *     initialize MCU
+
+ * @work:      work structure
+ *
+ * @return:    none
+ */
+void bbd_mcu_ready_work_func(struct work_struct *work)
+{
+       struct ssp_data *data = container_of(work, struct ssp_data, work_bbd_mcu_ready);
+       int ret = 0;
+       int retries = 0;
+
+       msleep(1000);
+       dprint("MCU is ready.(work_queue)\n");
+
+       clean_pending_list(data);
+
+       ssp_enable(data, true);
+retries:
+       ret = initialize_mcu(data);
+       if (ret != SUCCESS) {
+               data->uResetCnt++;
+               mdelay(100);
+               if(++retries > 3) {
+                       pr_err("[SSPBBD] fail to initialize mcu\n");
+                       ssp_enable(data, false);
+                       return;
+               }
+               goto retries;
+       }
+       dprint("mcu is initiialized (retries=%d)\n", retries);
+
+       /* recover previous state */
+       sync_sensor_state(data);
+       ssp_sensorhub_report_notice(data, MSG2SSP_AP_STATUS_RESET);
+
+       if (data->uLastAPState != 0)
+               ssp_send_cmd(data, data->uLastAPState, 0);
+       if (data->uLastResumeState != 0)
+               ssp_send_cmd(data, data->uLastResumeState, 0);
+}
+
+/**
+ * This work queue fucntion starts from alarm callback function
+ *
+ * @work:      work structure
+ *
+ * @return:    none
+ */
+#define BBD_PULL_TIMEOUT       1000    /* the timeout for getting data from bbdpl */
+
+unsigned char rBuff[BBD_MAX_DATA_SIZE] = {-1};
+
+void bbd_on_packet_work_func(struct work_struct *work)
+{
+       struct ssp_data *data = container_of(work, struct ssp_data, work_bbd_on_packet);
+       unsigned short chLength = 0, msg_options = 0;
+       unsigned char msg_type = 0;
+       int iRet = 0;
+       unsigned char *pData = NULL, *p, *q;
+       int nDataLen = 0;
+       struct timespec ts;
+       ts = ktime_to_timespec(ktime_get_boottime());
+       data->timestamp = ts.tv_sec * 1000000000ULL + ts.tv_nsec;
+
+       iRet = bbd_pull_packet(rBuff, sizeof(rBuff), BBD_PULL_TIMEOUT);
+       if (iRet <= 0) {
+               pr_err("[SSP]: %s bbd_pull_packet fail!! (iRet=%d)\n", __func__, iRet);
+               return;
+       }
+
+       p = rBuff;
+       q = rBuff + iRet;
+
+process_one:
+       DEBUG_SHOW_HEX_RECV(p, 4)
+
+       memcpy(&msg_options, p, 2); p+=2;
+       msg_type = msg_options & SSP_SPI_MASK;
+       memcpy(&chLength, p, 2); p+=2;
+       pData = p;      /* pData points current frame's data */
+       if (msg_type == AP2HUB_READ || msg_type == HUB2AP_WRITE)
+               p += chLength;  /* now p points next frame */
+       nDataLen = q - pData;
+
+       switch (msg_type) {
+       case AP2HUB_READ:
+       case AP2HUB_WRITE:
+               mutex_lock(&data->pending_mutex);
+               if (!list_empty(&data->pending_list)) {
+                       struct ssp_msg *msg, *n;
+                       bool found = false;
+
+                       list_for_each_entry_safe(msg, n, &data->pending_list, list)
+                       {
+                               if (msg->options == msg_options) {
+                                       list_del(&msg->list);
+                                       found = true;
+                                       break;
+                               }
+                       }
+
+                       if (!found) {
+                               pr_err("[SSP]: %s %d - Not match error\n", __func__, msg_options);
+                               goto exit;
+                       }
+
+                       if (msg->dead && !msg->free_buffer) {
+                               msg->buffer = (char*) kzalloc(msg->length, GFP_KERNEL);
+                               msg->free_buffer = 1;
+                       } /* For dead msg, make a temporary buffer to read. */
+
+                       if(msg->buffer == NULL) {
+                               pr_err("[SSPBBD]: %s() : msg->buffer is NULL\n", __func__);
+                               goto exit;
+                       }
+                       if (msg_type == AP2HUB_READ) {
+                               if(nDataLen <= 0) {
+                                       dprint("Waiting 2nd message...(msg=%p, length=%d)\n",
+                                               msg, msg->length);
+                                       iRet = bbd_pull_packet(msg->buffer, msg->length, 
+                                                               BBD_PULL_TIMEOUT);
+                                       dprint("Received 2nd message. (iRet=%d)\n",  iRet);
+                               }else{
+                                       memcpy(msg->buffer, pData, msg->length);
+                                       nDataLen -= msg->length;
+                               }
+                               DEBUG_SHOW_HEX_RECV(msg->buffer, msg->length)
+                       }
+                       if (msg_type == AP2HUB_WRITE) {
+                               iRet = bbd_send_packet(msg->buffer, msg->length);
+                               if(iRet <= 0) {
+                                       pr_err("[SSP]: %s bbd_send_packet fail!!(AP2HUB_WRITE)\n",
+                                                __func__);
+                                       goto exit;
+                               }
+
+                               DEBUG_SHOW_HEX_SEND(msg->buffer, msg->length)
+
+                               if (msg_options & AP2HUB_RETURN) {
+                                       msg->options = AP2HUB_READ | AP2HUB_RETURN;
+                                       msg->length = 1;
+                                       list_add_tail(&msg->list, &data->pending_list);
+                                       goto exit;
+                               }
+                       }
+                       if (msg->done != NULL && !completion_done(msg->done)){
+                               dprint("complete(mg->done)\n");
+                               complete(msg->done);
+                       }
+                       if (msg->dead_hook != NULL)
+                               *(msg->dead_hook) = true;
+
+                       clean_msg(msg);
+               } else
+                       pr_err("[SSP]List empty error(%d)\n", msg_type);
+exit:
+               mutex_unlock(&data->pending_mutex);
+               break;
+       case HUB2AP_WRITE:
+               {
+               char* buffer = (char*) kzalloc(chLength, GFP_KERNEL);
+               if (buffer == NULL) {
+                       pr_err("[SSP] %s, failed to alloc memory for buffer\n", __func__);
+                       iRet = -ENOMEM;
+                       break;
+               }
+               if(nDataLen <= 0) {
+                       dprint("Waiting 2nd message...(chLength=%d)\n", chLength);
+                       iRet = bbd_pull_packet(buffer, chLength, BBD_PULL_TIMEOUT);
+                       dprint("Received 2nd message. (iRet=%d)\n",  iRet);
+               }else{
+                       memcpy(buffer, pData, chLength);
+                       iRet = chLength;
+               }
+               DEBUG_SHOW_HEX_RECV(buffer, chLength)
+               if (iRet < 0)
+                       pr_err("[SSP] %s bbd_pull_packet fail.(iRet=%d)\n", __func__,iRet);
+               else
+                       parse_dataframe(data, buffer, chLength);
+               kfree(buffer);
+               break;
+               }
+       default:
+               pr_err("[SSP]No type error(%d)\n", msg_type);
+               break;
+       }
+
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - MSG2SSP_SSD error %d\n", __func__, iRet);
+       }
+
+       if (p<q)
+               goto process_one;
+}
diff --git a/drivers/sensors/brcm/ssp_c12sd.c b/drivers/sensors/brcm/ssp_c12sd.c
new file mode 100644 (file)
index 0000000..5ee20c1
--- /dev/null
@@ -0,0 +1,554 @@
+/*
+ * drivers/sensorhub/ssp_c12sd.c
+ * Copyright (c) 2012 SAMSUNG ELECTRONICS
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+
+#include <linux/module.h>
+#include <linux/wakelock.h>
+#include <linux/workqueue.h>
+#include <linux/delay.h>
+#include <linux/types.h>
+#include <linux/input.h>
+#include <linux/platform_device.h>
+#include <linux/errno.h>
+#include <linux/hrtimer.h>
+#include <linux/err.h>
+#include <linux/gpio.h>
+#include <linux/gpio_event.h>
+#include <linux/device.h>
+#include <linux/slab.h>
+#include <linux/earlysuspend.h>
+#include <linux/sensor/guva_c12sd.h>
+#include "ssp.h"
+
+#define VENDOR_NAME    "GENICOM"
+#define CHIP_NAME      "GUVA-C12SD"
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+/* early suspend */
+static void ssp_early_suspend(struct early_suspend *handler);
+static void ssp_late_resume(struct early_suspend *handler);
+#endif
+
+struct uv_info {
+       struct uv_platform_data *pdata;
+       struct workqueue_struct *uv_wq;
+       struct work_struct work_uv;
+       struct device *uv_dev;
+       struct hrtimer uv_timer;
+       struct mutex power_lock;
+       struct mutex read_lock;
+       struct input_dev *uv_input_dev;
+       struct platform_device *pdev_uv_adc;
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       struct early_suspend early_suspend;
+#endif
+       ktime_t uv_poll_delay;
+       int uv_raw_data;
+       bool onoff;
+};
+
+/* sysfs for input device */
+static ssize_t uv_poll_delay_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+       return snprintf(buf, PAGE_SIZE, "%lld\n",
+               ktime_to_ns(uv->uv_poll_delay));
+}
+
+static ssize_t uv_poll_delay_store(struct device *dev,
+       struct device_attribute *attr,
+       const char *buf, size_t size)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+       int64_t new_delay;
+       int err;
+
+       err = kstrtoll(buf, 10, &new_delay);
+       if (err < 0)
+               return err;
+
+       mutex_lock(&uv->power_lock);
+       if (uv->onoff) {
+               hrtimer_cancel(&uv->uv_timer);
+               cancel_work_sync(&uv->work_uv);
+       }
+
+       if (new_delay != ktime_to_ns(uv->uv_poll_delay)) {
+               uv->uv_poll_delay = ns_to_ktime(new_delay);
+               pr_info("%s, poll_delay = %lld\n", __func__, new_delay);
+       }
+
+       if (uv->onoff)
+               hrtimer_start(&uv->uv_timer, uv->uv_poll_delay,
+                       HRTIMER_MODE_REL);
+       mutex_unlock(&uv->power_lock);
+
+       return size;
+}
+
+static ssize_t uv_enable_store(struct device *dev,
+       struct device_attribute *attr,
+       const char *buf, size_t size)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+       bool new_value;
+
+       if (sysfs_streq(buf, "1")) {
+               new_value = true;
+       } else if (sysfs_streq(buf, "0")) {
+               new_value = false;
+       } else {
+               pr_err("%s: invalid value %d\n", __func__, *buf);
+               return -EINVAL;
+       }
+       pr_info("%s, old = %d, new = %d\n", __func__, uv->onoff, new_value);
+       mutex_lock(&uv->power_lock);
+       if (new_value && !uv->onoff) { /* Enable */
+               uv->onoff = new_value;
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(uv->onoff);
+               hrtimer_start(&uv->uv_timer, uv->uv_poll_delay,
+                       HRTIMER_MODE_REL);
+       } else if (!new_value && uv->onoff) { /* Disable */
+               hrtimer_cancel(&uv->uv_timer);
+               uv->onoff = new_value;
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(uv->onoff);
+       } else
+               pr_err("%s, new_enable = %d\n", __func__, new_value);
+       mutex_unlock(&uv->power_lock);
+
+       return size;
+}
+
+static ssize_t uv_enable_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+       return snprintf(buf, PAGE_SIZE, "%d\n", uv->onoff);
+}
+
+static DEVICE_ATTR(poll_delay, S_IRUGO | S_IWUSR | S_IWGRP,
+                  uv_poll_delay_show, uv_poll_delay_store);
+static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR | S_IWGRP,
+                  uv_enable_show, uv_enable_store);
+
+static struct attribute *uv_sysfs_attrs[] = {
+       &dev_attr_enable.attr,
+       &dev_attr_poll_delay.attr,
+       NULL
+};
+
+static struct attribute_group uv_attribute_group = {
+       .attrs = uv_sysfs_attrs,
+};
+
+/* sysfs for uv sensor class */
+static ssize_t get_vendor_name(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return snprintf(buf, PAGE_SIZE, "%s\n", VENDOR_NAME);
+}
+
+static ssize_t get_chip_name(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       return snprintf(buf, PAGE_SIZE, "%s\n", CHIP_NAME);
+}
+
+static ssize_t get_adc_value(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+       int adc = 0;
+        /* If power is not turned on, it won't work. */
+       if (!uv->onoff) {
+               mutex_lock(&uv->read_lock);
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(true);
+               mdelay(20);
+               adc = uv->pdata->get_adc_value();
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(false);
+               mutex_unlock(&uv->read_lock);
+       } else
+               adc = uv->uv_raw_data;
+       pr_info("%s: uv_adc = 0x%x, (%dmV)\n", __func__, adc, adc / 1000);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n", adc);
+}
+
+static ssize_t uv_power_on(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+
+       if (!uv->onoff && uv->pdata->power_on)
+               uv->pdata->power_on(true);
+       pr_info("%s\n", __func__);
+
+       return sprintf(buf, "%d\n", 1);
+}
+
+static ssize_t uv_power_off(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct uv_info *uv = dev_get_drvdata(dev);
+
+       if (!uv->onoff && uv->pdata->power_on)
+               uv->pdata->power_on(false);
+       pr_info("%s\n", __func__);
+
+       return sprintf(buf, "%d\n", 1);
+}
+
+static DEVICE_ATTR(vendor, S_IRUSR | S_IRGRP, get_vendor_name, NULL);
+static DEVICE_ATTR(name, S_IRUSR | S_IRGRP, get_chip_name, NULL);
+static DEVICE_ATTR(raw_data, S_IRUSR | S_IRGRP, get_adc_value, NULL);
+static DEVICE_ATTR(power_on, S_IRUSR | S_IRGRP, uv_power_on, NULL);
+static DEVICE_ATTR(power_off, S_IRUSR | S_IRGRP, uv_power_off, NULL);
+
+static struct device_attribute *uv_sensor_attrs[] = {
+       &dev_attr_vendor,
+       &dev_attr_name,
+       &dev_attr_raw_data,
+       &dev_attr_power_on,
+       &dev_attr_power_off,
+       NULL
+};
+
+/* timer function for uv sensor polling */
+static enum hrtimer_restart uv_timer_func(struct hrtimer *timer)
+{
+       struct uv_info *uv
+           = container_of(timer, struct uv_info, uv_timer);
+       queue_work(uv->uv_wq, &uv->work_uv);
+       hrtimer_forward_now(&uv->uv_timer, uv->uv_poll_delay);
+       return HRTIMER_RESTART;
+}
+
+static void work_func_uv(struct work_struct *work)
+{
+       struct uv_info *uv
+           = container_of(work, struct uv_info, work_uv);
+
+       mutex_lock(&uv->read_lock);
+       uv->uv_raw_data = uv->pdata->get_adc_value();
+       mutex_unlock(&uv->read_lock);
+
+       input_report_rel(uv->uv_input_dev, REL_MISC, uv->uv_raw_data+1);
+       input_sync(uv->uv_input_dev);
+}
+
+static int uv_probe(struct platform_device *pdev)
+{
+       struct uv_info *uv;
+       struct uv_platform_data *pdata = pdev->dev.platform_data;
+       int ret = 0;
+
+       pr_info("%s: is started\n", __func__);
+       if (!pdata) {
+               pr_err("%s: pdata is NULL\n", __func__);
+               return -ENODEV;
+       }
+
+       /* allocate memory */
+       uv = kzalloc(sizeof(struct uv_info), GFP_KERNEL);
+       if (uv == NULL) {
+               pr_err("%s: Failed to allocate memory\n", __func__);
+               return -ENOMEM;
+       }
+
+       uv->pdata = pdata;
+
+       /* Setup for ADC */
+       /* alloc platform device for adc client */
+       uv->pdev_uv_adc = platform_device_alloc("uv-adc", -1);
+       if (!uv->pdev_uv_adc) {
+               pr_err("%s: could not allocation uv-adc\n", __func__);
+               goto err_alloc_pdev;
+       }
+
+       if (pdata->adc_ap_init && pdata->adc_ap_exit) {
+               uv->pdata->adc_ap_init = pdata->adc_ap_init;
+               uv->pdata->adc_ap_exit = pdata->adc_ap_exit;
+               ret = pdata->adc_ap_init(uv->pdev_uv_adc);
+               if (!ret) {
+                       ret = -1;
+                       goto err_setup_adc;
+               }
+       }
+
+       if (pdata->power_on) {
+               uv->pdata->power_on = pdata->power_on;
+               uv->pdata->power_on(false);
+       }
+       uv->onoff = false;
+
+       if (pdata->get_adc_value)
+               uv->pdata->get_adc_value = pdata->get_adc_value;
+
+       mutex_init(&uv->power_lock);
+       mutex_init(&uv->read_lock);
+
+       /* allocate uv input device */
+       uv->uv_input_dev = input_allocate_device();
+       if (!uv->uv_input_dev) {
+               pr_err("%s: could not allocate input device\n",
+                       __func__);
+               goto err_input_allocate_device_uv;
+       }
+
+       input_set_drvdata(uv->uv_input_dev, uv);
+       uv->uv_input_dev->name = "uv_sensor";
+       input_set_capability(uv->uv_input_dev, EV_REL, REL_MISC);
+
+       ret = input_register_device(uv->uv_input_dev);
+       if (ret < 0) {
+               pr_err("%s: could not register input device\n",
+                       __func__);
+               input_free_device(uv->uv_input_dev);
+               goto err_input_register_device_uv;
+       }
+
+       ret = sysfs_create_group(&uv->uv_input_dev->dev.kobj,
+                               &uv_attribute_group);
+       if (ret) {
+               pr_err("%s: could not create sysfs group\n",
+                       __func__);
+               goto err_sysfs_create_group_uv;
+       }
+
+       /* timer init */
+       hrtimer_init(&uv->uv_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+       uv->uv_poll_delay = ns_to_ktime(200 * NSEC_PER_MSEC);
+       uv->uv_timer.function = uv_timer_func;
+
+       /* workqueue init */
+       uv->uv_wq = create_singlethread_workqueue("uv_wq");
+       if (!uv->uv_wq) {
+               ret = -ENOMEM;
+               pr_err("%s: could not create uv workqueue\n",
+                       __func__);
+               goto err_create_uv_workqueue;
+       }
+       INIT_WORK(&uv->work_uv, work_func_uv);
+
+       /* sysfs for uv sensor */
+       ret = sensors_register(uv->uv_dev, uv, uv_sensor_attrs,
+               "uv_sensor");
+       if (ret) {
+               pr_err("%s: could not register uv device(%d)\n",
+                       __func__, ret);
+               goto err_sensor_register_failed;
+       }
+
+       ret = sensors_create_symlink(uv->uv_input_dev);
+       if (ret < 0) {
+               pr_err("%s, sensors_create_symlinks failed!(%d)\n",
+                       __func__, ret);
+               goto err_uv_input__sysfs_create_link;
+       }
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       uv->early_suspend.suspend = ssp_early_suspend;
+       uv->early_suspend.resume = ssp_late_resume;
+       register_early_suspend(&uv->early_suspend);
+#endif
+
+       platform_set_drvdata(pdev, uv);
+
+       pr_info("%s, success\n", __func__);
+       return 0;
+err_uv_input__sysfs_create_link:
+       sensors_unregister(uv->uv_dev, uv_sensor_attrs);
+err_sensor_register_failed:
+       destroy_workqueue(uv->uv_wq);
+err_create_uv_workqueue:
+       sysfs_remove_group(&uv->uv_input_dev->dev.kobj,
+                          &uv_attribute_group);
+err_sysfs_create_group_uv:
+       input_unregister_device(uv->uv_input_dev);
+err_input_register_device_uv:
+err_input_allocate_device_uv:
+       mutex_destroy(&uv->read_lock);
+       mutex_destroy(&uv->power_lock);
+       if (uv->pdata->adc_ap_exit)
+               uv->pdata->adc_ap_exit(uv->pdev_uv_adc);
+err_setup_adc:
+       if (uv->pdev_uv_adc)
+               platform_device_put(uv->pdev_uv_adc);
+err_alloc_pdev:
+       kfree(uv);
+       return ret;
+}
+
+static int uv_remove(struct platform_device *pdev)
+{
+       struct uv_info *uv = dev_get_drvdata(&pdev->dev);
+
+       pr_info("%s+\n", __func__);
+       if (uv->onoff) {
+               hrtimer_cancel(&uv->uv_timer);
+               cancel_work_sync(&uv->work_uv);
+       }
+       destroy_workqueue(uv->uv_wq);
+       sensors_remove_symlink(uv->uv_input_dev);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       unregister_early_suspend(&uv->early_suspend);
+#endif
+       sensors_unregister(uv->uv_dev, uv_sensor_attrs);
+       sysfs_remove_group(&uv->uv_input_dev->dev.kobj,
+                          &uv_attribute_group);
+       input_unregister_device(uv->uv_input_dev);
+
+       if (uv->onoff && uv->pdata->power_on)
+               uv->pdata->power_on(false);
+       if (uv->pdata->adc_ap_exit)
+               uv->pdata->adc_ap_exit(uv->pdev_uv_adc);
+       if (uv->pdev_uv_adc)
+               platform_device_put(uv->pdev_uv_adc);
+       mutex_destroy(&uv->read_lock);
+       mutex_destroy(&uv->power_lock);
+       kfree(uv);
+       pr_info("%s-\n", __func__);
+       return 0;
+}
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+/* early suspend */
+static void ssp_early_suspend(struct early_suspend *handler)
+{
+       struct uv_info *uv;
+       uv = container_of(handler, struct uv_info, early_suspend);
+
+       if (uv->onoff) {
+               hrtimer_cancel(&uv->uv_timer);
+               cancel_work_sync(&uv->work_uv);
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(false);
+       }
+       pr_err("%s, enabled = %d\n", __func__, uv->onoff);
+}
+
+static void ssp_late_resume(struct early_suspend *handler)
+{
+       struct uv_info *uv;
+       uv = container_of(handler, struct uv_info, early_suspend);
+
+       if (uv->onoff) {
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(true);
+               hrtimer_start(&uv->uv_timer,
+                       uv->uv_poll_delay, HRTIMER_MODE_REL);
+       }
+       pr_err("%s, enabled = %d\n", __func__, uv->onoff);
+}
+#else
+static int uv_suspend(struct platform_device *pdev, pm_message_t state)
+{
+       struct uv_info *uv = dev_get_drvdata(&pdev->dev);
+
+       if (uv->onoff) {
+               hrtimer_cancel(&uv->uv_timer);
+               cancel_work_sync(&uv->work_uv);
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(false);
+       }
+       pr_err("%s, enabled = %d\n", __func__, uv->onoff);
+       return 0;
+}
+
+static int uv_resume(struct platform_device *pdev)
+{
+       struct uv_info *uv = dev_get_drvdata(&pdev->dev);
+
+       if (uv->onoff) {
+               if (uv->pdata->power_on)
+                       uv->pdata->power_on(true);
+               hrtimer_start(&uv->uv_timer,
+                       uv->uv_poll_delay, HRTIMER_MODE_REL);
+       }
+       pr_err("%s, enabled = %d\n", __func__, uv->onoff);
+       return 0;
+}
+#endif
+
+static void uv_shutdown(struct platform_device *pdev)
+{
+       struct uv_info *uv = dev_get_drvdata(&pdev->dev);
+
+       pr_info("%s+\n", __func__);
+       if (uv->onoff) {
+               hrtimer_cancel(&uv->uv_timer);
+               cancel_work_sync(&uv->work_uv);
+       }
+       destroy_workqueue(uv->uv_wq);
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       unregister_early_suspend(&uv->early_suspend);
+#endif
+       sensors_unregister(uv->uv_dev, uv_sensor_attrs);
+       sysfs_remove_group(&uv->uv_input_dev->dev.kobj,
+                          &uv_attribute_group);
+       input_unregister_device(uv->uv_input_dev);
+
+       if (uv->onoff && uv->pdata->power_on)
+               uv->pdata->power_on(false);
+       if (uv->pdata->adc_ap_exit)
+               uv->pdata->adc_ap_exit(uv->pdev_uv_adc);
+       if (uv->pdev_uv_adc)
+               platform_device_put(uv->pdev_uv_adc);
+       mutex_destroy(&uv->read_lock);
+       mutex_destroy(&uv->power_lock);
+       kfree(uv);
+       pr_info("%s-\n", __func__);
+}
+
+static struct platform_driver uv_driver = {
+       .probe      = uv_probe,
+       .remove     = uv_remove,
+#ifndef CONFIG_HAS_EARLYSUSPEND
+       .suspend    = uv_suspend,
+       .resume     = uv_resume,
+#endif
+       .shutdown   = uv_shutdown,
+       .driver = {
+               .name   = "uv_sensor",
+               .owner  = THIS_MODULE,
+       },
+};
+
+static int __init uv_init(void)
+{
+       return platform_driver_register(&uv_driver);
+}
+
+static void __exit uv_exit(void)
+{
+       platform_driver_unregister(&uv_driver);
+}
+
+module_init(uv_init);
+module_exit(uv_exit);
+
+MODULE_DESCRIPTION("UV sensor device driver");
+MODULE_AUTHOR("OHeon Kwon <koh82.kwon@samsung.com>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/sensors/brcm/ssp_data.c b/drivers/sensors/brcm/ssp_data.c
new file mode 100644 (file)
index 0000000..64bed04
--- /dev/null
@@ -0,0 +1,377 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+#include <linux/math64.h>
+#include <linux/sched.h>
+
+/* SSP -> AP Instruction */
+#define MSG2AP_INST_BYPASS_DATA                        0x37
+#define MSG2AP_INST_LIBRARY_DATA               0x01
+#define MSG2AP_INST_DEBUG_DATA                 0x03
+#define MSG2AP_INST_BIG_DATA                   0x04
+#define MSG2AP_INST_META_DATA                  0x05
+#define MSG2AP_INST_TIME_SYNC                  0x06
+#define MSG2AP_INST_RESET                      0x07
+
+/*************************************************************************/
+/* SSP parsing the dataframe                                             */
+/*************************************************************************/
+
+static void generate_data(struct ssp_data *data,
+       struct sensor_value *sensorsdata, int iSensorData, u64 timestamp)
+{
+       u64 move_timestamp = data->lastTimestamp[iSensorData];
+       if ((iSensorData != PROXIMITY_SENSOR) && (iSensorData != GESTURE_SENSOR)
+               && (iSensorData != STEP_DETECTOR) && (iSensorData != SIG_MOTION_SENSOR)
+               && (iSensorData != STEP_COUNTER)) {
+               while ((move_timestamp * 10 + data->adDelayBuf[iSensorData] * 15) < (timestamp * 10)) {
+                       move_timestamp += data->adDelayBuf[iSensorData];
+                       sensorsdata->timestamp = move_timestamp;
+                       data->report_sensor_data[iSensorData](data, sensorsdata);
+               }
+       }
+}
+
+static void get_timestamp(struct ssp_data *data, char *pchRcvDataFrame,
+               int *iDataIdx, struct sensor_value *sensorsdata,
+               struct ssp_time_diff *sensortime, int iSensorData)
+{
+       if (sensortime->batch_mode == BATCH_MODE_RUN) {
+               if (sensortime->batch_count == sensortime->batch_count_fixed) {
+                       if (sensortime->time_diff == data->adDelayBuf[iSensorData]) {
+                               generate_data(data, sensorsdata, iSensorData,
+                                               (data->timestamp - data->adDelayBuf[iSensorData] * (sensortime->batch_count_fixed - 1)));
+                       }
+                       sensorsdata->timestamp = data->timestamp - ((sensortime->batch_count - 1) * sensortime->time_diff);
+               } else {
+                       if (sensortime->batch_count > 1)
+                               sensorsdata->timestamp = data->timestamp - ((sensortime->batch_count - 1) * sensortime->time_diff);
+                       else
+                               sensorsdata->timestamp = data->timestamp;
+               }
+       } else {
+               if (((sensortime->irq_diff * 10) > (data->adDelayBuf[iSensorData] * 18))
+                       && ((sensortime->irq_diff * 10) < (data->adDelayBuf[iSensorData] * 100))) {
+                       generate_data(data, sensorsdata, iSensorData, data->timestamp);
+               }
+               sensorsdata->timestamp = data->timestamp;
+       }
+       *iDataIdx += 4;
+}
+
+static void get_3axis_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 6);
+       *iDataIdx += 6;
+}
+
+static void get_uncalib_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 12);
+       *iDataIdx += 12;
+}
+
+static void get_geomagnetic_uncaldata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 12);
+       *iDataIdx += 12;
+}
+
+static void get_geomagnetic_rawdata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 6);
+       *iDataIdx += 6;
+}
+
+static void get_geomagnetic_caldata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 7);
+       *iDataIdx += 7;
+}
+
+static void get_rot_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 17);
+       *iDataIdx += 17;
+}
+
+static void get_step_det_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 1);
+       *iDataIdx += 1;
+}
+
+static void get_light_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 10);
+       *iDataIdx += 10;
+#else
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 8);
+       *iDataIdx += 8;
+#endif
+}
+
+static void get_pressure_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       s16 temperature = 0;
+       memcpy(&sensorsdata->pressure[0], pchRcvDataFrame + *iDataIdx, 4);
+       memcpy(&temperature, pchRcvDataFrame + *iDataIdx + 4, 2);
+       sensorsdata->pressure[1] = temperature;
+       *iDataIdx += 6;
+}
+
+static void get_gesture_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 20);
+       *iDataIdx += 20;
+}
+
+static void get_proximity_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memset(&sensorsdata->prox[0], 0, 1);
+       memcpy(&sensorsdata->prox[0], pchRcvDataFrame + *iDataIdx, 2);
+       *iDataIdx += 2;
+}
+
+static void get_proximity_rawdata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(&sensorsdata->prox[0], pchRcvDataFrame + *iDataIdx, 1);
+       *iDataIdx += 1;
+}
+
+static void get_temp_humidity_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memset(&sensorsdata->data[2], 0, 2);
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 5);
+       *iDataIdx += 5;
+}
+
+static void get_sig_motion_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 1);
+       *iDataIdx += 1;
+}
+
+static void get_step_cnt_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(&sensorsdata->step_diff, pchRcvDataFrame + *iDataIdx, 4);
+       *iDataIdx += 4;
+}
+
+static void get_shake_cam_sensordata(char *pchRcvDataFrame, int *iDataIdx,
+       struct sensor_value *sensorsdata)
+{
+       memcpy(sensorsdata, pchRcvDataFrame + *iDataIdx, 1);
+       *iDataIdx += 1;
+}
+
+int handle_big_data(struct ssp_data *data, char *pchRcvDataFrame, int *pDataIdx) {
+       u8 bigType = 0;
+       struct ssp_big *big = kzalloc(sizeof(*big), GFP_KERNEL);
+       big->data = data;
+       bigType = pchRcvDataFrame[(*pDataIdx)++];
+       memcpy(&big->length, pchRcvDataFrame + *pDataIdx, 4);
+       *pDataIdx += 4;
+       memcpy(&big->addr, pchRcvDataFrame + *pDataIdx, 4);
+       *pDataIdx += 4;
+
+       if (bigType >= BIG_TYPE_MAX) {
+               kfree(big);
+               return FAIL;
+       }
+
+       INIT_WORK(&big->work, data->ssp_big_task[bigType]);
+       queue_work(data->debug_wq, &big->work);
+       return SUCCESS;
+}
+
+int parse_dataframe(struct ssp_data *data, char *pchRcvDataFrame, int iLength)
+{
+       int iDataIdx, iSensorData;
+       u16 length = 0;
+       struct sensor_value sensorsdata;
+       struct ssp_time_diff sensortime;
+
+       sensortime.time_diff = 0;
+       data->uIrqCnt++;
+
+       for (iDataIdx = 0; iDataIdx < iLength;) {
+               switch (pchRcvDataFrame[iDataIdx++]) {
+               case MSG2AP_INST_BYPASS_DATA:
+                       iSensorData = pchRcvDataFrame[iDataIdx++];
+                       if ((iSensorData < 0) || (iSensorData >= SENSOR_MAX)) {
+                               pr_err("[SSP]: %s - Mcu data frame1 error %d\n", __func__,
+                                               iSensorData);
+                               return ERROR;
+                       }
+
+                       memcpy(&length, pchRcvDataFrame + iDataIdx, 2);
+                       iDataIdx += 2;
+                       sensortime.batch_count = sensortime.batch_count_fixed = length;
+                       sensortime.batch_mode = length > 1 ? BATCH_MODE_RUN : BATCH_MODE_NONE;
+                       sensortime.irq_diff = data->timestamp - data->lastTimestamp[iSensorData];
+
+                       if (sensortime.batch_mode == BATCH_MODE_RUN) {
+                               if (data->reportedData[iSensorData] == true) {
+                                       u64 time;
+                                       sensortime.time_diff = div64_long((s64)(data->timestamp - data->lastTimestamp[iSensorData]), (s64)length);
+                                       if (length > 8)
+                                               time = data->adDelayBuf[iSensorData] * 18;
+                                       else if (length > 4)
+                                               time = data->adDelayBuf[iSensorData] * 25;
+                                       else if (length > 2)
+                                               time = data->adDelayBuf[iSensorData] * 50;
+                                       else
+                                               time = data->adDelayBuf[iSensorData] * 100;
+                                       if ((sensortime.time_diff * 10) > time) {
+                                               data->lastTimestamp[iSensorData] = data->timestamp - (data->adDelayBuf[iSensorData] * length);
+                                               sensortime.time_diff = data->adDelayBuf[iSensorData];
+                                       } else {
+                                               time = data->adDelayBuf[iSensorData] * 18;
+                                               if ((sensortime.time_diff * 10) > time)
+                                                       sensortime.time_diff = data->adDelayBuf[iSensorData];
+                                       }
+                               } else {
+                                       if (data->lastTimestamp[iSensorData] < (data->timestamp - (data->adDelayBuf[iSensorData] * length))) {
+                                               data->lastTimestamp[iSensorData] = data->timestamp - (data->adDelayBuf[iSensorData] * length);
+                                               sensortime.time_diff = data->adDelayBuf[iSensorData];
+                                       } else
+                                               sensortime.time_diff = div64_long((s64)(data->timestamp - data->lastTimestamp[iSensorData]), (s64)length);
+                               }
+                       } else {
+                               if (data->reportedData[iSensorData] == false)
+                                       sensortime.irq_diff = data->adDelayBuf[iSensorData];
+                       }
+
+                       do {
+                               data->get_sensor_data[iSensorData](pchRcvDataFrame, &iDataIdx, &sensorsdata);
+                               get_timestamp(data, pchRcvDataFrame, &iDataIdx, &sensorsdata, &sensortime, iSensorData);
+                               if (sensortime.irq_diff > 1000000)
+                                       data->report_sensor_data[iSensorData](data, &sensorsdata);
+                               else if ((iSensorData == PROXIMITY_SENSOR) || (iSensorData == PROXIMITY_RAW)
+                                               || (iSensorData == GESTURE_SENSOR) || (iSensorData == SIG_MOTION_SENSOR))
+                                       data->report_sensor_data[iSensorData](data, &sensorsdata);
+                               else
+                                       pr_err("[SSP]: %s irq_diff is under 1msec (%d)\n", __func__, iSensorData);
+                               sensortime.batch_count--;
+                       } while ((sensortime.batch_count > 0) && (iDataIdx < iLength));
+
+                       if (sensortime.batch_count > 0)
+                               pr_err("[SSP]: %s batch count error (%d)\n", __func__, sensortime.batch_count);
+
+                       data->lastTimestamp[iSensorData] = data->timestamp;
+                       data->reportedData[iSensorData] = true;
+                       break;
+               case MSG2AP_INST_DEBUG_DATA:
+                       iSensorData = print_mcu_debug(pchRcvDataFrame, &iDataIdx, iLength);
+                       if (iSensorData) {
+                               pr_err("[SSP]: %s - Mcu data frame3 error %d\n", __func__,
+                                               iSensorData);
+                               return ERROR;
+                       }
+                       break;
+               case MSG2AP_INST_LIBRARY_DATA:
+                       memcpy(&length, pchRcvDataFrame + iDataIdx, 2);
+                       iDataIdx += 2;
+                       ssp_sensorhub_handle_data(data, pchRcvDataFrame, iDataIdx,
+                                       iDataIdx + length);
+                       iDataIdx += length;
+                       break;
+               case MSG2AP_INST_BIG_DATA:
+                       handle_big_data(data, pchRcvDataFrame, &iDataIdx);
+                       break;
+               case MSG2AP_INST_META_DATA:
+                       sensorsdata.meta_data.what = pchRcvDataFrame[iDataIdx++];
+                       sensorsdata.meta_data.sensor = pchRcvDataFrame[iDataIdx++];
+                       report_meta_data(data, &sensorsdata);
+                       break;
+               case MSG2AP_INST_TIME_SYNC:
+                       data->bTimeSyncing = true;
+                       break;
+               }
+       }
+
+       return SUCCESS;
+}
+
+void initialize_function_pointer(struct ssp_data *data)
+{
+       data->get_sensor_data[ACCELEROMETER_SENSOR] = get_3axis_sensordata;
+       data->get_sensor_data[GYROSCOPE_SENSOR] = get_3axis_sensordata;
+       data->get_sensor_data[GEOMAGNETIC_UNCALIB_SENSOR] =
+               get_geomagnetic_uncaldata;
+       data->get_sensor_data[GEOMAGNETIC_RAW] = get_geomagnetic_rawdata;
+       data->get_sensor_data[GEOMAGNETIC_SENSOR] =
+               get_geomagnetic_caldata;
+       data->get_sensor_data[PRESSURE_SENSOR] = get_pressure_sensordata;
+       data->get_sensor_data[GESTURE_SENSOR] = get_gesture_sensordata;
+       data->get_sensor_data[PROXIMITY_SENSOR] = get_proximity_sensordata;
+       data->get_sensor_data[PROXIMITY_RAW] = get_proximity_rawdata;
+       data->get_sensor_data[LIGHT_SENSOR] = get_light_sensordata;
+       data->get_sensor_data[TEMPERATURE_HUMIDITY_SENSOR] =
+               get_temp_humidity_sensordata;
+       data->get_sensor_data[ROTATION_VECTOR] = get_rot_sensordata;
+       data->get_sensor_data[GAME_ROTATION_VECTOR] = get_rot_sensordata;
+       data->get_sensor_data[STEP_DETECTOR] = get_step_det_sensordata;
+       data->get_sensor_data[SIG_MOTION_SENSOR] = get_sig_motion_sensordata;
+       data->get_sensor_data[GYRO_UNCALIB_SENSOR] = get_uncalib_sensordata;
+       data->get_sensor_data[STEP_COUNTER] = get_step_cnt_sensordata;
+       data->get_sensor_data[SHAKE_CAM] = get_shake_cam_sensordata;
+
+       data->report_sensor_data[ACCELEROMETER_SENSOR] = report_acc_data;
+       data->report_sensor_data[GYROSCOPE_SENSOR] = report_gyro_data;
+       data->report_sensor_data[GEOMAGNETIC_UNCALIB_SENSOR] =
+               report_mag_uncaldata;
+       data->report_sensor_data[GEOMAGNETIC_RAW] = report_geomagnetic_raw_data;
+       data->report_sensor_data[GEOMAGNETIC_SENSOR] =
+               report_mag_data;
+       data->report_sensor_data[PRESSURE_SENSOR] = report_pressure_data;
+       data->report_sensor_data[GESTURE_SENSOR] = report_gesture_data;
+       data->report_sensor_data[PROXIMITY_SENSOR] = report_prox_data;
+       data->report_sensor_data[PROXIMITY_RAW] = report_prox_raw_data;
+       data->report_sensor_data[LIGHT_SENSOR] = report_light_data;
+       data->report_sensor_data[TEMPERATURE_HUMIDITY_SENSOR] =
+               report_temp_humidity_data;
+       data->report_sensor_data[ROTATION_VECTOR] = report_rot_data;
+       data->report_sensor_data[GAME_ROTATION_VECTOR] = report_game_rot_data;
+       data->report_sensor_data[STEP_DETECTOR] = report_step_det_data;
+       data->report_sensor_data[SIG_MOTION_SENSOR] = report_sig_motion_data;
+       data->report_sensor_data[GYRO_UNCALIB_SENSOR] = report_uncalib_gyro_data;
+       data->report_sensor_data[STEP_COUNTER] = report_step_cnt_data;
+       data->report_sensor_data[SHAKE_CAM] = report_shake_cam_data;
+
+       data->ssp_big_task[BIG_TYPE_DUMP] = ssp_dump_task;
+       data->ssp_big_task[BIG_TYPE_READ_LIB] = ssp_read_big_library_task;
+       data->ssp_big_task[BIG_TYPE_VOICE_NET] = ssp_send_big_library_task;
+       data->ssp_big_task[BIG_TYPE_VOICE_GRAM] = ssp_send_big_library_task;
+       data->ssp_big_task[BIG_TYPE_VOICE_PCM] = ssp_pcm_dump_task;
+       data->ssp_big_task[BIG_TYPE_TEMP] = ssp_temp_task;
+}
diff --git a/drivers/sensors/brcm/ssp_debug.c b/drivers/sensors/brcm/ssp_debug.c
new file mode 100644 (file)
index 0000000..1b6d000
--- /dev/null
@@ -0,0 +1,416 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+#include <linux/fs.h>
+
+
+
+#define SSP_DEBUG_TIMER_SEC            (10 * HZ)
+
+#define LIMIT_RESET_CNT                        40
+#define LIMIT_TIMEOUT_CNT              3
+
+#define DUMP_FILE_PATH "/data/log/MCU_DUMP"
+
+void ssp_dump_task(struct work_struct *work) {
+#ifdef CONFIG_SENSORS_SSP_BBD
+       pr_err("[SSPBBD]:TODO:%s()\n", __func__);
+#else
+
+       struct ssp_big *big;
+       struct file *dump_file;
+       struct ssp_msg *msg;
+       char *buffer;
+       char strFilePath[60];
+       struct timeval cur_time;
+       int iTimeTemp;
+       mm_segment_t fs;
+       int buf_len, packet_len, residue, iRet = 0, index = 0 ,iRetTrans=0 ,iRetWrite=0;
+
+       big = container_of(work, struct ssp_big, work);
+       pr_err("[SSP]: %s - start ssp dumping (%d)(%d)\n", __func__,big->data->bMcuDumpMode,big->data->uDumpCnt);
+       big->data->uDumpCnt++;
+       wake_lock(&big->data->ssp_wake_lock);
+
+       fs = get_fs();
+       set_fs(get_ds());
+
+       if(big->data->bMcuDumpMode == true)
+       {
+               do_gettimeofday(&cur_time);
+               iTimeTemp = (int) cur_time.tv_sec;
+
+               sprintf(strFilePath, "%s%d.txt", DUMP_FILE_PATH, iTimeTemp);
+
+               dump_file = filp_open(strFilePath, O_RDWR | O_CREAT | O_APPEND, 0666);
+               if (IS_ERR(dump_file)) {
+                       pr_err("[SSP]: %s - Can't open dump file\n", __func__);
+                       set_fs(fs);
+                       iRet = PTR_ERR(dump_file);
+                       wake_unlock(&big->data->ssp_wake_lock);
+                       kfree(big);
+                       return;
+               }
+       }
+       else
+               dump_file = NULL;
+
+       buf_len = big->length > DATA_PACKET_SIZE ? DATA_PACKET_SIZE : big->length;
+       buffer = kzalloc(buf_len, GFP_KERNEL);
+       residue = big->length;
+
+       while (residue > 0) {
+               packet_len = residue > DATA_PACKET_SIZE ? DATA_PACKET_SIZE : residue;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               msg->cmd = MSG2SSP_AP_GET_BIG_DATA;
+               msg->length = packet_len;
+               msg->options = AP2HUB_READ | (index++ << SSP_INDEX);
+               msg->data = big->addr;
+               msg->buffer = buffer;
+               msg->free_buffer = 0;
+
+               iRetTrans = ssp_spi_sync(big->data, msg, 1000);
+               if (iRetTrans != SUCCESS) {
+                       pr_err("[SSP]: %s - Fail to receive data %d (%d)\n", __func__, iRetTrans,residue);
+                       break;
+               }
+               if(big->data->bMcuDumpMode == true)
+               {
+                       iRetWrite = vfs_write(dump_file, (char __user *) buffer, packet_len,
+                                       &dump_file->f_pos);
+                       if (iRetWrite < 0) {
+                               pr_err("[SSP]: %s - Can't write dump to file\n", __func__);
+                               break;
+                       }
+               }
+               residue -= packet_len;
+       }
+
+       if(big->data->bMcuDumpMode == true && (iRetTrans != SUCCESS || iRetWrite < 0) )
+       {
+               char FAILSTRING[100];
+               sprintf(FAILSTRING,"FAIL OCCURED(%d)(%d)(%d)",iRetTrans,iRetWrite,big->length);
+               vfs_write(dump_file, (char __user *) FAILSTRING, strlen(FAILSTRING),&dump_file->f_pos);
+       }
+
+       big->data->bDumping = false;
+       if(big->data->bMcuDumpMode == true)
+               filp_close(dump_file, current->files);
+
+       set_fs(fs);
+
+       wake_unlock(&big->data->ssp_wake_lock);
+       kfree(buffer);
+       kfree(big);
+
+       pr_err("[SSP]: %s done\n", __func__);
+#endif
+}
+
+void ssp_temp_task(struct work_struct *work) {
+#ifdef CONFIG_SENSORS_SSP_BBD
+       pr_err("[SSPBBD]:TODO:%s()\n", __func__);
+#else
+       struct ssp_big *big;
+       struct ssp_msg *msg;
+       char *buffer;
+       int buf_len, packet_len, residue, iRet = 0, index = 0, i = 0, buffindex = 0;
+
+       big = container_of(work, struct ssp_big, work);
+       buf_len = big->length > DATA_PACKET_SIZE ? DATA_PACKET_SIZE : big->length;
+       buffer = kzalloc(buf_len, GFP_KERNEL);
+       residue = big->length;
+
+       while (residue > 0) {
+               packet_len = residue > DATA_PACKET_SIZE ? DATA_PACKET_SIZE : residue;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               msg->cmd = MSG2SSP_AP_GET_BIG_DATA;
+               msg->length = packet_len;
+               msg->options = AP2HUB_READ | (index++ << SSP_INDEX);
+               msg->data = big->addr;
+               msg->buffer = buffer;
+               msg->free_buffer = 0;
+
+               iRet = ssp_spi_sync(big->data, msg, 1000);
+               if (iRet != SUCCESS) {
+                       pr_err("[SSP]: %s - Fail to receive data %d\n", __func__, iRet);
+                       break;
+               }
+
+               i = 0;
+               while (packet_len - i >= 12) {
+                       ssp_dbg("[SSP]: %s %d %d %d %d %d %d", __func__,
+                                       *((s16 *) (buffer + i + 0)), *((s16 *) (buffer + i + 2)),
+                                       *((s16 *) (buffer + i + 4)), *((s16 *) (buffer + i + 6)),
+                                       *((s16 *) (buffer + i + 8)), *((s16 *) (buffer +i + 10)));
+                       buffindex++;
+                       i += 12;
+               }
+
+               residue -= packet_len;
+       }
+       kfree(buffer);
+       kfree(big);
+       ssp_dbg("[SSP]: %s done\n", __func__);
+#endif
+}
+
+/*************************************************************************/
+/* SSP Debug timer function                                              */
+/*************************************************************************/
+int print_mcu_debug(char *pchRcvDataFrame, int *pDataIdx,
+               int iRcvDataFrameLength)
+{
+       int iLength = pchRcvDataFrame[(*pDataIdx)++];
+       int cur = *pDataIdx;
+
+       if (iLength > iRcvDataFrameLength - *pDataIdx || iLength <= 0) {
+               ssp_dbg("[SSP]: MSG From MCU - invalid debug length(%d/%d/%d)\n",
+                               iLength, iRcvDataFrameLength, cur);
+               return iLength ? iLength : ERROR;
+       }
+
+       ssp_dbg("[SSP]: MSG From MCU - %s\n", &pchRcvDataFrame[*pDataIdx]);
+       *pDataIdx += iLength;
+       return 0;
+}
+
+void reset_mcu(struct ssp_data *data)
+{
+       func_dbg();
+       data->uResetCnt++;
+
+       ssp_enable(data, false);
+       clean_pending_list(data);
+
+       bbd_mcu_reset();
+}
+
+void sync_sensor_state(struct ssp_data *data)
+{
+       unsigned char uBuf[9] = {0,};
+       unsigned int uSensorCnt;
+       int iRet = 0;
+
+       iRet = set_gyro_cal(data);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__);
+
+       iRet = set_accel_cal(data);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - set_accel_cal failed\n", __func__);
+
+       udelay(10);
+
+       for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) {
+               mutex_lock(&data->enable_mutex);
+               if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) {
+                       s32 dMsDelay =
+                               get_msdelay(data->adDelayBuf[uSensorCnt]);
+                       memcpy(&uBuf[0], &dMsDelay, 4);
+                       memcpy(&uBuf[4], &data->batchLatencyBuf[uSensorCnt], 4);
+                       uBuf[8] = data->batchOptBuf[uSensorCnt];
+                       send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 9);
+                       udelay(10);
+               }
+               mutex_unlock(&data->enable_mutex);
+       }
+
+       if (data->bProximityRawEnabled == true) {
+               s32 dMsDelay = 20;
+               memcpy(&uBuf[0], &dMsDelay, 4);
+               send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 4);
+       }
+
+       set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh);
+
+       data->bMcuDumpMode = ssp_check_sec_dump_mode();
+       iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE,
+                       data->bMcuDumpMode);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n",
+                               __func__);
+}
+
+static void print_sensordata(struct ssp_data *data, unsigned int uSensor)
+{
+       switch (uSensor) {
+               case ACCELEROMETER_SENSOR:
+               case GYROSCOPE_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d (%ums, %dms)\n", uSensor,
+                                       data->buf[uSensor].x, data->buf[uSensor].y,
+                                       data->buf[uSensor].z,
+                                       get_msdelay(data->adDelayBuf[uSensor]),
+                                       data->batchLatencyBuf[uSensor]);
+                       break;
+               case GEOMAGNETIC_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].cal_x, data->buf[uSensor].cal_y,
+                                       data->buf[uSensor].cal_y, data->buf[uSensor].accuracy,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case GEOMAGNETIC_UNCALIB_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d, %d, %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].uncal_x, data->buf[uSensor].uncal_y,
+                                       data->buf[uSensor].uncal_z, data->buf[uSensor].offset_x,
+                                       data->buf[uSensor].offset_y, data->buf[uSensor].offset_z,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case PRESSURE_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d (%ums, %dms)\n", uSensor,
+                                       data->buf[uSensor].pressure[0],
+                                       data->buf[uSensor].pressure[1],
+                                       get_msdelay(data->adDelayBuf[uSensor]),
+                                       data->batchLatencyBuf[uSensor]);
+                       break;
+               case GESTURE_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].data[3], data->buf[uSensor].data[4],
+                                       data->buf[uSensor].data[5], data->buf[uSensor].data[6],
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case TEMPERATURE_HUMIDITY_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].x, data->buf[uSensor].y,
+                                       data->buf[uSensor].z,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case LIGHT_SENSOR:
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+                       ssp_dbg("[SSP] %u : %u, %u, %u, %u, %u, %u (%ums)\n", uSensor,
+                                       data->buf[uSensor].r, data->buf[uSensor].g,
+                                       data->buf[uSensor].b, data->buf[uSensor].w,
+                                       data->buf[uSensor].a_time, data->buf[uSensor].a_gain,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+#endif
+                       break;
+               case PROXIMITY_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].prox[0], data->buf[uSensor].prox[1],
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case STEP_DETECTOR:
+                       ssp_dbg("[SSP] %u : %u (%ums, %dms)\n", uSensor,
+                                       data->buf[uSensor].step_det,
+                                       get_msdelay(data->adDelayBuf[uSensor]),
+                                       data->batchLatencyBuf[uSensor]);
+                       break;
+               case GAME_ROTATION_VECTOR:
+               case ROTATION_VECTOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d, %d, %d (%ums, %dms)\n", uSensor,
+                                       data->buf[uSensor].quat_a, data->buf[uSensor].quat_b,
+                                       data->buf[uSensor].quat_c, data->buf[uSensor].quat_d,
+                                       data->buf[uSensor].acc_rot,
+                                       get_msdelay(data->adDelayBuf[uSensor]),
+                                       data->batchLatencyBuf[uSensor]);
+                       break;
+               case SIG_MOTION_SENSOR:
+                       ssp_dbg("[SSP] %u : %u(%ums)\n", uSensor,
+                                       data->buf[uSensor].sig_motion,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case GYRO_UNCALIB_SENSOR:
+                       ssp_dbg("[SSP] %u : %d, %d, %d, %d, %d, %d (%ums)\n", uSensor,
+                                       data->buf[uSensor].uncal_x, data->buf[uSensor].uncal_y,
+                                       data->buf[uSensor].uncal_z, data->buf[uSensor].offset_x,
+                                       data->buf[uSensor].offset_y,
+                                       data->buf[uSensor].offset_z,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               case STEP_COUNTER:
+                       ssp_dbg("[SSP] %u : %u(%ums)\n", uSensor,
+                                       data->buf[uSensor].step_diff,
+                                       get_msdelay(data->adDelayBuf[uSensor]));
+                       break;
+               default:
+                       ssp_dbg("[SSP] Wrong sensorCnt: %u\n", uSensor);
+                       break;
+       }
+}
+
+static void debug_work_func(struct work_struct *work)
+{
+       unsigned int uSensorCnt;
+       struct ssp_data *data = container_of(work, struct ssp_data, work_debug);
+
+       for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++)
+               if ((atomic_read(&data->aSensorEnable) & (1 << uSensorCnt))
+                               || data->batchLatencyBuf[uSensorCnt])
+                       print_sensordata(data, uSensorCnt);
+
+       if (((atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR))
+                               && (data->batchLatencyBuf[ACCELEROMETER_SENSOR] == 0)
+                               && (data->uIrqCnt == 0) && (data->uTimeOutCnt > 0))
+                       || (data->uTimeOutCnt > LIMIT_TIMEOUT_CNT)) {
+
+               if (data->uResetCnt < LIMIT_RESET_CNT) {
+                       pr_debug("[SSP] : %s - uTimeOutCnt(%u), pending(%u)\n",
+                                       __func__, data->uTimeOutCnt,
+                                       !list_empty(&data->pending_list));
+                       reset_mcu(data);
+               } else
+                       ssp_enable(data, false);
+
+               data->uTimeOutCnt = 0;
+               data->uComFailCnt = 0;
+       }
+
+       data->uIrqCnt = 0;
+}
+
+static void debug_timer_func(unsigned long ptr)
+{
+       struct ssp_data *data = (struct ssp_data *)ptr;
+
+       queue_work(data->debug_wq, &data->work_debug);
+       mod_timer(&data->debug_timer,
+                       round_jiffies_up(jiffies + SSP_DEBUG_TIMER_SEC));
+}
+
+void enable_debug_timer(struct ssp_data *data)
+{
+       mod_timer(&data->debug_timer,
+                       round_jiffies_up(jiffies + SSP_DEBUG_TIMER_SEC));
+}
+
+void disable_debug_timer(struct ssp_data *data)
+{
+       del_timer_sync(&data->debug_timer);
+       cancel_work_sync(&data->work_debug);
+}
+
+int initialize_debug_timer(struct ssp_data *data)
+{
+       setup_timer(&data->debug_timer, debug_timer_func, (unsigned long)data);
+
+       data->debug_wq = create_singlethread_workqueue("ssp_debug_wq");
+       if (!data->debug_wq)
+               return ERROR;
+
+       INIT_WORK(&data->work_debug, debug_work_func);
+       return SUCCESS;
+}
+
+unsigned int  ssp_check_sec_dump_mode()   /* if returns true dump mode on */
+{
+#ifdef CONFIG_SEC_DEBUG
+       if (sec_debug_level.en.kernel_fault == 1)
+               return 1;
+       else
+#endif
+               return 0;
+}
diff --git a/drivers/sensors/brcm/ssp_dev.c b/drivers/sensors/brcm/ssp_dev.c
new file mode 100644 (file)
index 0000000..3aab02f
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+#ifdef CONFIG_OF
+#include <linux/of_gpio.h>
+#endif
+
+#define DEBUG
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+static void ssp_early_suspend(struct early_suspend *handler);
+static void ssp_late_resume(struct early_suspend *handler);
+#endif
+#define NORMAL_SENSOR_STATE_K  0x3FEFF
+
+unsigned int bootmode;
+EXPORT_SYMBOL(bootmode);
+static int __init bootmode_setup(char *str)
+{
+        get_option(&str, &bootmode);
+       pr_info("[SSP] bootmode_setup = %d\n",bootmode);
+        return 1;
+}
+__setup("bootmode=", bootmode_setup);
+
+void ssp_enable(struct ssp_data *data, bool enable)
+{
+       if (enable == !data->bSspShutdown)
+               return;
+
+       pr_info("[SSP] %s, new enable = %d, old enable = %d\n",
+               __func__, enable, !data->bSspShutdown);
+
+       if (enable && data->bSspShutdown)
+               data->bSspShutdown = false;
+       else if (!enable && !data->bSspShutdown)
+               data->bSspShutdown = true;
+}
+
+/*************************************************************************/
+/* initialize sensor hub                                                */
+/*************************************************************************/
+
+static void initialize_variable(struct ssp_data *data)
+{
+       int iSensorIndex;
+
+       for (iSensorIndex = 0; iSensorIndex < SENSOR_MAX; iSensorIndex++) {
+               data->adDelayBuf[iSensorIndex] = DEFUALT_POLLING_DELAY;
+               data->batchLatencyBuf[iSensorIndex] = 0;
+               data->batchOptBuf[iSensorIndex] = 0;
+               data->aiCheckStatus[iSensorIndex] = INITIALIZATION_STATE;
+               data->lastTimestamp[iSensorIndex] = 0;
+               data->reportedData[iSensorIndex] = false;
+       }
+
+       atomic_set(&data->aSensorEnable, 0);
+       data->iLibraryLength = 0;
+       data->uSensorState = NORMAL_SENSOR_STATE_K;
+       data->uFactoryProxAvg[0] = 0;
+       data->uMagCntlRegData = 1;
+
+       data->uResetCnt = 0;
+       data->uTimeOutCnt = 0;
+       data->uComFailCnt = 0;
+       data->uIrqCnt = 0;
+
+       data->bSspShutdown = true;
+       data->bProximityRawEnabled = false;
+       data->bGeomagneticRawEnabled = false;
+       data->bBarcodeEnabled = false;
+       data->bAccelAlert = false;
+       data->bTimeSyncing = true;
+       data->bHandlingIrq = false;
+
+       data->accelcal.x = 0;
+       data->accelcal.y = 0;
+       data->accelcal.z = 0;
+
+       data->gyrocal.x = 0;
+       data->gyrocal.y = 0;
+       data->gyrocal.z = 0;
+
+       data->magoffset.x = 0;
+       data->magoffset.y = 0;
+       data->magoffset.z = 0;
+
+       data->iPressureCal = 0;
+       data->uProxCanc = 0;
+       data->uProxHiThresh = data->uProxHiThresh_default;
+       data->uProxLoThresh = data->uProxLoThresh_default;
+       data->uGyroDps = GYROSCOPE_DPS2000;
+       data->uIr_Current = DEFUALT_IR_CURRENT;
+
+       data->mcu_device = NULL;
+       data->acc_device = NULL;
+       data->gyro_device = NULL;
+       data->mag_device = NULL;
+       data->prs_device = NULL;
+       data->prox_device = NULL;
+       data->light_device = NULL;
+       data->ges_device = NULL;
+
+       data->voice_device = NULL;
+       data->bMcuDumpMode = ssp_check_sec_dump_mode();
+       INIT_LIST_HEAD(&data->pending_list);
+
+       data->bbd_on_packet_wq =
+               create_singlethread_workqueue("ssp_bbd_on_packet_wq");
+       INIT_WORK(&data->work_bbd_on_packet, bbd_on_packet_work_func);
+
+       data->bbd_mcu_ready_wq =
+               create_singlethread_workqueue("ssp_bbd_mcu_ready_wq");
+       INIT_WORK(&data->work_bbd_mcu_ready, bbd_mcu_ready_work_func);
+
+#ifdef SSP_BBD_USE_SEND_WORK
+       data->bbd_send_packet_wq =
+               create_singlethread_workqueue("ssp_bbd_send_packet_wq");
+       INIT_WORK(&data->work_bbd_send_packet, bbd_send_packet_work_func);
+#endif /* SSP_BBD_USE_SEND_WORK  */
+
+       data->step_count_total = 0;
+       data->sealevelpressure = 0;
+       initialize_function_pointer(data);
+}
+
+int initialize_mcu(struct ssp_data *data)
+{
+       int iRet = 0;
+
+       clean_pending_list(data);
+
+       iRet = get_chipid(data);
+       pr_info("[SSP] MCU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet);
+       if (iRet != DEVICE_ID) {
+               if (iRet < 0) {
+                       pr_err("[SSP]: %s - MCU is not working : 0x%x\n",
+                               __func__, iRet);
+               } else {
+                       pr_err("[SSP]: %s - MCU identification failed\n",
+                               __func__);
+                       iRet = -ENODEV;
+               }
+               goto out;
+       }
+
+       iRet = set_sensor_position(data);
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - set_sensor_position failed\n", __func__);
+               goto out;
+       }
+
+       data->uSensorState = get_sensor_scanning_info(data);
+       if (data->uSensorState == 0) {
+               pr_err("[SSP]: %s - get_sensor_scanning_info failed\n",
+                       __func__);
+               iRet = ERROR;
+               goto out;
+       }
+
+       iRet = initialize_magnetic_sensor(data);
+       if (iRet < 0)
+               pr_err("[SSP]: %s - initialize magnetic sensor failed\n",
+                       __func__);
+
+       data->uCurFirmRev = get_firmware_rev(data);
+       pr_info("[SSP] MCU Firm Rev : New = %8u\n",
+               data->uCurFirmRev);
+
+#ifndef CONFIG_SENSORS_SSP_BBD
+       iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_DUMP_CHECK, 0);
+#endif
+out:
+       return iRet;
+}
+
+static bbd_callbacks ssp_bbd_callbacks = {
+       .on_packet              = NULL,
+       .on_packet_alarm        = callback_bbd_on_packet_alarm,
+       .on_control             = callback_bbd_on_control,
+       .on_mcu_ready           = callback_bbd_on_mcu_ready,
+};
+
+static int ssp_parse_dt(struct device *dev,struct  ssp_data *data)
+{
+       struct device_node *np = dev->of_node;
+       int errorno = 0;
+#if defined(CONFIG_SENSORS_SSP_YAS532)
+       u32 len, temp;
+       int i;
+#endif
+
+       if (!np) {
+               pr_err("[SSP] NO dt node!!\n");
+               return errorno;
+       }
+
+       if (of_property_read_u32(np, "ssp-acc-position", &data->accel_position))
+               data->accel_position = 0;
+       if (of_property_read_u32(np, "ssp-mag-position", &data->mag_position))
+               data->mag_position = 0;
+
+       pr_info("[SSP] acc-posi[%d] mag-posi[%d]\n",
+               data->accel_position, data->mag_position);
+
+       if (of_property_read_u32(np, "ssp-ap-rev", &data->ap_rev))
+               data->ap_rev = 0;
+
+       if (of_property_read_u32(np, "ssp,prox-hi_thresh",
+                       &data->uProxHiThresh_default))
+               data->uProxHiThresh_default = DEFUALT_HIGH_THRESHOLD;
+
+       if (of_property_read_u32(np, "ssp,prox-low_thresh",
+                       &data->uProxLoThresh_default))
+               data->uProxLoThresh_default = DEFUALT_LOW_THRESHOLD;
+
+       pr_info("[SSP] hi-thresh[%u] low-thresh[%u]\n",
+               data->uProxHiThresh_default, data->uProxLoThresh_default);
+
+#if defined(CONFIG_SENSORS_SSP_YAS532)
+       if (!of_get_property(np, "ssp-mag-array", &len)) {
+               pr_info("[SSP] No static matrix at DT for YAS532!(%p)\n", data->static_matrix);
+               goto dt_exit;
+       }
+       if (len/4 != 9) {
+               pr_err("[SSP] Length/4:%d should be 9 for YAS532!\n", len/4);
+               goto dt_exit;
+       }
+       data->static_matrix = kzalloc(9*sizeof(s16), GFP_KERNEL);
+       pr_info("[SSP] static matrix Length:%d, Len/4=%d\n", len, len/4);
+
+       for (i = 0; i < 9; i++) {
+               if (of_property_read_u32_index(np, "ssp-mag-array", i, &temp)) {
+                       pr_err("[SSP] %s cannot get u32 of array[%d]!\n", __func__, i);
+                       goto dt_exit;
+               }
+               *(data->static_matrix+i) = (int)temp;
+       }
+#endif
+
+dt_exit:
+       return errorno;
+}
+
+static int ssp_probe(struct spi_device *spi)
+{
+       struct ssp_data *data;
+       struct ssp_platform_data *pdata;
+       int iRet = 0;
+
+       pr_info("[SSP] %s, is called\n", __func__);
+
+       data = kzalloc(sizeof(*data), GFP_KERNEL);
+       if (data == NULL) {
+               pr_err("[SSP] %s, failed to allocate memory for data\n", __func__);
+               iRet = -ENOMEM;
+               goto exit;
+       }
+
+       if (spi->dev.of_node) {
+               iRet = ssp_parse_dt(&spi->dev, data);
+               if (iRet) {
+                       pr_err("[SSP]: %s - Failed to parse DT\n", __func__);
+                       goto err_setup;
+               }
+       } else {
+               pdata = spi->dev.platform_data;
+               if (pdata == NULL) {
+                       pr_err("[SSP] %s, platform_data is null\n", __func__);
+                       iRet = -ENOMEM;
+                       goto err_setup;
+               }
+
+               /* AP system_rev */
+               if (pdata->check_ap_rev)
+                       data->ap_rev = pdata->check_ap_rev();
+               else
+                       data->ap_rev = 0;
+
+               /* Get sensor positions */
+               if (pdata->get_positions) {
+                       pdata->get_positions(&data->accel_position,
+                               &data->mag_position);
+               } else {
+                       data->accel_position = 0;
+                       data->mag_position = 0;
+               }
+               if (pdata->mag_matrix) {
+                       data->mag_matrix_size = pdata->mag_matrix_size;
+                       data->mag_matrix = pdata->mag_matrix;
+               }
+       }
+
+       spi->mode = SPI_MODE_3;
+       if (spi_setup(spi)) {
+               pr_err("[SSP] %s, failed to setup spi\n", __func__);
+               iRet = -ENODEV;
+               goto err_setup;
+       }
+
+       data->bProbeIsDone = false;
+       data->spi = spi;
+       spi_set_drvdata(spi, data);
+
+       mutex_init(&data->comm_mutex);
+       mutex_init(&data->pending_mutex);
+       mutex_init(&data->enable_mutex);
+
+       if (spi->dev.of_node == NULL) {
+               pr_err("[SSP] %s, function callback is null\n", __func__);
+               iRet = -EIO;
+               goto err_reset_null;
+       }
+
+       pr_info("\n#####################################################\n");
+
+       initialize_variable(data);
+       wake_lock_init(&data->ssp_wake_lock,
+               WAKE_LOCK_SUSPEND, "ssp_wake_lock");
+
+       iRet = initialize_input_dev(data);
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - could not create input device\n", __func__);
+               goto err_input_register_device;
+       }
+
+       iRet = initialize_debug_timer(data);
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - could not create workqueue\n", __func__);
+               goto err_create_workqueue;
+       }
+
+       iRet = initialize_sysfs(data);
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - could not create sysfs\n", __func__);
+               goto err_sysfs_create;
+       }
+
+       iRet = initialize_event_symlink(data);
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - could not create symlink\n", __func__);
+               goto err_symlink_create;
+       }
+
+       msleep(70);
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+       /* init sensorhub device */
+       iRet = ssp_sensorhub_initialize(data);
+       if (iRet < 0) {
+               pr_err("%s: ssp_sensorhub_initialize err(%d)", __func__, iRet);
+               ssp_sensorhub_remove(data);
+       }
+#endif
+
+       bbd_register(data, &ssp_bbd_callbacks);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       data->early_suspend.suspend = ssp_early_suspend;
+       data->early_suspend.resume = ssp_late_resume;
+       register_early_suspend(&data->early_suspend);
+#endif
+
+       pr_info("[SSP]: %s - probe success!\n", __func__);
+
+       enable_debug_timer(data);
+       data->bProbeIsDone = true;
+       iRet = 0;
+
+       goto exit;
+
+err_symlink_create:
+       remove_sysfs(data);
+err_sysfs_create:
+       destroy_workqueue(data->debug_wq);
+err_create_workqueue:
+       remove_input_dev(data);
+err_input_register_device:
+       wake_lock_destroy(&data->ssp_wake_lock);
+err_reset_null:
+       mutex_destroy(&data->comm_mutex);
+       mutex_destroy(&data->pending_mutex);
+
+err_setup:
+       kfree(data);
+       pr_err("[SSP] %s, probe failed!\n", __func__);
+exit:
+       pr_info("#####################################################\n\n");
+       return iRet;
+}
+
+static void ssp_shutdown(struct spi_device *spi)
+{
+       struct ssp_data *data = spi_get_drvdata(spi);
+
+       pr_err("[SSP] lpm recovery\n");
+       func_dbg();
+       if (data->bProbeIsDone == false)
+               goto exit;
+
+       disable_debug_timer(data);
+
+       if (SUCCESS != ssp_send_cmd(data, MSG2SSP_AP_STATUS_SHUTDOWN, 0))
+               pr_err("[SSP]: %s MSG2SSP_AP_STATUS_SHUTDOWN failed\n",
+                       __func__);
+
+       ssp_enable(data, false);
+       clean_pending_list(data);
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+       unregister_early_suspend(&data->early_suspend);
+#endif
+
+       bbd_register(NULL, NULL);
+
+       remove_event_symlink(data);
+       remove_sysfs(data);
+       remove_input_dev(data);
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+       ssp_sensorhub_remove(data);
+#endif
+
+       del_timer_sync(&data->debug_timer);
+       cancel_work_sync(&data->work_debug);
+       cancel_work_sync(&data->work_bbd_mcu_ready);
+       destroy_workqueue(data->debug_wq);
+       wake_lock_destroy(&data->ssp_wake_lock);
+       mutex_destroy(&data->comm_mutex);
+       mutex_destroy(&data->pending_mutex);
+       pr_info("[SSP] %s done\n", __func__);
+exit:
+       kfree(data);
+}
+
+#ifdef CONFIG_HAS_EARLYSUSPEND
+static void ssp_early_suspend(struct early_suspend *handler)
+{
+       struct ssp_data *data;
+       data = container_of(handler, struct ssp_data, early_suspend);
+
+       func_dbg();
+       disable_debug_timer(data);
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+       /* give notice to user that AP goes to sleep */
+       ssp_sensorhub_report_notice(data, MSG2SSP_AP_STATUS_SLEEP);
+       ssp_sleep_mode(data);
+       data->uLastAPState = MSG2SSP_AP_STATUS_SLEEP;
+#else
+       if (atomic_read(&data->aSensorEnable) > 0)
+               ssp_sleep_mode(data);
+#endif
+}
+
+static void ssp_late_resume(struct early_suspend *handler)
+{
+       struct ssp_data *data;
+       data = container_of(handler, struct ssp_data, early_suspend);
+
+       func_dbg();
+       enable_debug_timer(data);
+
+#ifdef CONFIG_SENSORS_SSP_SENSORHUB
+       /* give notice to user that AP goes to sleep */
+       ssp_sensorhub_report_notice(data, MSG2SSP_AP_STATUS_WAKEUP);
+       ssp_resume_mode(data);
+       data->uLastAPState = MSG2SSP_AP_STATUS_WAKEUP;
+#else
+       if (atomic_read(&data->aSensorEnable) > 0)
+               ssp_resume_mode(data);
+#endif
+}
+
+#else /* no early suspend */
+
+static int ssp_suspend(struct device *dev)
+{
+       struct spi_device *spi = to_spi_device(dev);
+       struct ssp_data *data = spi_get_drvdata(spi);
+
+       func_dbg();
+
+       if (SUCCESS != ssp_send_cmd(data, MSG2SSP_AP_STATUS_SUSPEND, 0))
+               pr_err("[SSP]: %s MSG2SSP_AP_STATUS_SUSPEND failed\n",
+                       __func__);
+
+       data->uLastResumeState = MSG2SSP_AP_STATUS_SUSPEND;
+       disable_debug_timer(data);
+
+       data->bTimeSyncing = false;
+       pr_info("[SSP]: isHandlingIrq:%d\n", data->bHandlingIrq);
+
+       return 0;
+}
+
+static int ssp_resume(struct device *dev)
+{
+       struct spi_device *spi = to_spi_device(dev);
+       struct ssp_data *data = spi_get_drvdata(spi);
+
+       func_dbg();
+       enable_debug_timer(data);
+
+       if (SUCCESS != ssp_send_cmd(data, MSG2SSP_AP_STATUS_RESUME, 0))
+               pr_err("[SSP]: %s MSG2SSP_AP_STATUS_RESUME failed\n",
+                       __func__);
+       data->uLastResumeState = MSG2SSP_AP_STATUS_RESUME;
+
+       return 0;
+}
+
+static const struct dev_pm_ops ssp_pm_ops = {
+       .suspend = ssp_suspend,
+       .resume = ssp_resume
+};
+#endif /* CONFIG_HAS_EARLYSUSPEND */
+
+static const struct spi_device_id ssp_id[] = {
+       {"ssp-spi", 0},
+       {}
+};
+
+MODULE_DEVICE_TABLE(spi, ssp_id);
+
+static struct spi_driver ssp_driver = {
+       .probe = ssp_probe,
+       .shutdown = ssp_shutdown,
+       .id_table = ssp_id,
+       .driver = {
+#ifndef CONFIG_HAS_EARLYSUSPEND
+                  .pm = &ssp_pm_ops,
+#endif
+                  .owner = THIS_MODULE,
+                  .name = "ssp-spi",
+       },
+};
+
+struct spi_driver *pssp_driver = &ssp_driver;
+module_spi_driver(ssp_driver);
+MODULE_DESCRIPTION("ssp spi driver");
+MODULE_AUTHOR("Samsung Electronics");
+MODULE_LICENSE("GPL");
diff --git a/drivers/sensors/brcm/ssp_firmware.c b/drivers/sensors/brcm/ssp_firmware.c
new file mode 100644 (file)
index 0000000..bf93470
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+
+#if defined(CONFIG_SENSORHUB_S333)
+#define SSP_FIRMWARE_REVISION_BCM   15011301
+#else
+#define SSP_FIRMWARE_REVISION_BCM      15011300
+#endif
+
+unsigned int get_module_rev(struct ssp_data *data)
+{
+       return SSP_FIRMWARE_REVISION_BCM;
+}
diff --git a/drivers/sensors/brcm/ssp_i2c.c b/drivers/sensors/brcm/ssp_i2c.c
new file mode 100644 (file)
index 0000000..4cf68ed
--- /dev/null
@@ -0,0 +1,758 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+
+#define LIMIT_DELAY_CNT                200
+#define RECEIVEBUFFERSIZE      12
+#define DEBUG_SHOW_DATA        0
+
+int bbd_do_transfer(struct ssp_data *data, struct ssp_msg *msg,
+               struct completion *done, int timeout);
+
+void clean_msg(struct ssp_msg *msg) {
+       if (msg->free_buffer)
+               kfree(msg->buffer);
+       kfree(msg);
+}
+
+static int do_transfer(struct ssp_data *data, struct ssp_msg *msg,
+               struct completion *done, int timeout)
+{
+       if(timeout)
+               wake_lock_timeout(&data->ssp_wake_lock, ((timeout/1000)+1)*HZ);
+
+       return bbd_do_transfer(data, msg, done, timeout);
+}
+
+int ssp_spi_async(struct ssp_data *data, struct ssp_msg *msg)
+{
+       int status = 0;
+
+       if (msg->length)
+               return ssp_spi_sync(data, msg, 1000);
+
+       status = do_transfer(data, msg, NULL, 0);
+
+       return status;
+}
+
+int ssp_spi_sync(struct ssp_data *data, struct ssp_msg *msg, int timeout) {
+       DECLARE_COMPLETION_ONSTACK(done);
+       int status = 0;
+
+       if (msg->length == 0) {
+               pr_err("[SSP]: %s length must not be 0\n", __func__);
+               clean_msg(msg);
+               return status;
+       }
+
+       status = do_transfer(data, msg, &done, timeout);
+
+       return status;
+}
+
+int select_irq_msg(struct ssp_data *data) {
+       struct ssp_msg *msg, *n;
+       bool found = false;
+       u16 chLength = 0, msg_options = 0;
+       u8 msg_type = 0;
+       int iRet = 0;
+       char* buffer;
+       char chTempBuf[4] = { -1 };
+
+       data->bHandlingIrq = true;
+       iRet = spi_read(data->spi, chTempBuf, sizeof(chTempBuf));
+       if (iRet < 0) {
+               pr_err("[SSP] %s spi_read fail, ret = %d\n", __func__, iRet);
+               data->bHandlingIrq = false;
+               return iRet;
+       }
+
+       memcpy(&msg_options, &chTempBuf[0], 2);
+       msg_type = msg_options & SSP_SPI_MASK;
+       memcpy(&chLength, &chTempBuf[2], 2);
+
+       switch (msg_type) {
+       case AP2HUB_READ:
+       case AP2HUB_WRITE:
+               mutex_lock(&data->pending_mutex);
+               if (!list_empty(&data->pending_list)) {
+                       list_for_each_entry_safe(msg, n, &data->pending_list, list)
+                       {
+                               if (msg->options == msg_options) {
+                                       list_del(&msg->list);
+                                       found = true;
+                                       break;
+                               }
+                       }
+
+                       if (!found) {
+                               pr_err("[SSP]: %s %d - Not match error\n", __func__, msg_options);
+                               goto exit;
+                       }
+
+                       if (msg->dead && !msg->free_buffer) {
+                               msg->buffer = (char*) kzalloc(msg->length, GFP_KERNEL);
+                               msg->free_buffer = 1;
+                       } /* For dead msg, make a temporary buffer to read. */
+
+                       if (msg_type == AP2HUB_READ)
+                               iRet = spi_read(data->spi, msg->buffer, msg->length);
+                       if (msg_type == AP2HUB_WRITE) {
+                               iRet = spi_write(data->spi, msg->buffer, msg->length);
+
+                               if (msg_options & AP2HUB_RETURN) {
+                                       msg->options = AP2HUB_READ | AP2HUB_RETURN;
+                                       msg->length = 1;
+                                       list_add_tail(&msg->list, &data->pending_list);
+                                       goto exit;
+                               }
+                       }
+
+                       if (msg->done != NULL && !completion_done(msg->done))
+                               complete(msg->done);
+                       if (msg->dead_hook != NULL)
+                               *(msg->dead_hook) = true;
+
+                       clean_msg(msg);
+               } else
+                       pr_err("[SSP]List empty error(%d)\n", msg_type);
+       exit:
+               mutex_unlock(&data->pending_mutex);
+               break;
+       case HUB2AP_WRITE:
+               buffer = (char*) kzalloc(chLength, GFP_KERNEL);
+               if (buffer == NULL) {
+                       pr_err("[SSP] %s, failed to alloc memory for buffer\n", __func__);
+                       iRet = -ENOMEM;
+                       break;
+               }
+               iRet = spi_read(data->spi, buffer, chLength);
+               if (iRet < 0)
+                       pr_err("[SSP] %s spi_read fail\n", __func__);
+               else
+                       parse_dataframe(data, buffer, chLength);
+               kfree(buffer);
+               break;
+       default:
+               pr_err("[SSP]No type error(%d)\n", msg_type);
+               break;
+       }
+
+       if (iRet < 0) {
+               pr_err("[SSP]: %s - MSG2SSP_SSD error %d\n", __func__, iRet);
+               data->bHandlingIrq = false;
+               return ERROR;
+       }
+
+       data->bHandlingIrq = false;
+       return SUCCESS;
+}
+
+void clean_pending_list(struct ssp_data *data) {
+       struct ssp_msg *msg, *n;
+
+       mutex_lock(&data->pending_mutex);
+
+       list_for_each_entry_safe(msg, n, &data->pending_list, list)
+       {
+               list_del(&msg->list);
+               if (msg->done != NULL && !completion_done(msg->done))
+                       complete(msg->done);
+               if (msg->dead_hook != NULL)
+                       *(msg->dead_hook) = true;
+
+               clean_msg(msg);
+       }
+       mutex_unlock(&data->pending_mutex);
+}
+
+int ssp_send_cmd(struct ssp_data *data, char command, int arg)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = command;
+       msg->length = 0;
+       msg->options = AP2HUB_WRITE;
+       msg->data = arg;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_async(data, msg);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - command 0x%x failed %d\n",
+                               __func__, command, iRet);
+               return ERROR;
+       }
+
+       ssp_dbg("[SSP]: %s - command 0x%x %d\n", __func__, command, arg);
+
+       return SUCCESS;
+}
+
+int send_instruction(struct ssp_data *data, u8 uInst,
+       u8 uSensorType, u8 *uSendBuf, u8 uLength)
+{
+       char command;
+       int iRet = 0;
+       struct ssp_msg *msg;
+
+       if ((!(data->uSensorState & (1 << uSensorType)))
+               && (uInst <= CHANGE_DELAY)) {
+               pr_err("[SSP]: %s - Bypass Inst Skip! - %u\n",
+                       __func__, uSensorType);
+               return FAIL;
+       }
+
+       switch (uInst) {
+       case REMOVE_SENSOR:
+               command = MSG2SSP_INST_BYPASS_SENSOR_REMOVE;
+               break;
+       case ADD_SENSOR:
+               command = MSG2SSP_INST_BYPASS_SENSOR_ADD;
+               break;
+       case CHANGE_DELAY:
+               command = MSG2SSP_INST_CHANGE_DELAY;
+               break;
+       case GO_SLEEP:
+               command = MSG2SSP_AP_STATUS_SLEEP;
+               data->uLastAPState = MSG2SSP_AP_STATUS_SLEEP;
+               break;
+       case REMOVE_LIBRARY:
+               command = MSG2SSP_INST_LIBRARY_REMOVE;
+               break;
+       case ADD_LIBRARY:
+               command = MSG2SSP_INST_LIBRARY_ADD;
+               break;
+       default:
+               command = uInst;
+               break;
+       }
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               iRet = -ENOMEM;
+               return iRet;
+       }
+       msg->cmd = command;
+       msg->length = uLength + 1;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(uLength + 1, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = uSensorType;
+       memcpy(&msg->buffer[1], uSendBuf, uLength);
+
+       ssp_dbg("[SSP]: %s - Inst = 0x%x, Sensor Type = 0x%x, data = %u\n",
+                       __func__, command, uSensorType, msg->buffer[1]);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Instruction CMD Fail %d\n", __func__, iRet);
+               return ERROR;
+       }
+
+       return iRet;
+}
+
+int send_instruction_sync(struct ssp_data *data, u8 uInst,
+       u8 uSensorType, u8 *uSendBuf, u8 uLength)
+{
+       char command;
+       int iRet = 0;
+       char buffer[10] = { 0, };
+       struct ssp_msg *msg;
+
+       if ((!(data->uSensorState & (1 << uSensorType)))
+               && (uInst <= CHANGE_DELAY)) {
+               pr_err("[SSP]: %s - Bypass Inst Skip! - %u\n",
+                       __func__, uSensorType);
+               return FAIL;
+       }
+
+       switch (uInst) {
+       case REMOVE_SENSOR:
+               command = MSG2SSP_INST_BYPASS_SENSOR_REMOVE;
+               break;
+       case ADD_SENSOR:
+               command = MSG2SSP_INST_BYPASS_SENSOR_ADD;
+               break;
+       case CHANGE_DELAY:
+               command = MSG2SSP_INST_CHANGE_DELAY;
+               break;
+       case GO_SLEEP:
+               command = MSG2SSP_AP_STATUS_SLEEP;
+               data->uLastAPState = MSG2SSP_AP_STATUS_SLEEP;
+               break;
+       case REMOVE_LIBRARY:
+               command = MSG2SSP_INST_LIBRARY_REMOVE;
+               break;
+       case ADD_LIBRARY:
+               command = MSG2SSP_INST_LIBRARY_ADD;
+               break;
+       default:
+               command = uInst;
+               break;
+       }
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = command;
+       msg->length = uLength + 1;
+       msg->options = AP2HUB_WRITE | AP2HUB_RETURN;
+       msg->buffer = buffer;
+       msg->free_buffer = 0;
+
+       msg->buffer[0] = uSensorType;
+       memcpy(&msg->buffer[1], uSendBuf, uLength);
+
+       ssp_dbg("[SSP]: %s - Inst Sync = 0x%x, Sensor Type = %u, data = %u\n",
+                       __func__, command, uSensorType, msg->buffer[0]);
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - Instruction CMD Fail %d\n", __func__, iRet);
+               return ERROR;
+       }
+
+       return buffer[0];
+}
+
+int flush(struct ssp_data *data, u8 uSensorType) {
+       int iRet = 0;
+       char buffer = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_BATCH_FLUSH;
+       msg->length = 1;
+       msg->options = AP2HUB_READ;
+       msg->data = uSensorType;
+       msg->buffer = &buffer;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - fail %d\n", __func__, iRet);
+               return ERROR;
+       }
+
+       ssp_dbg("[SSP]: %s Sensor Type = 0x%x, data = %u\n", __func__, uSensorType,
+                       buffer);
+
+       return buffer ? 0 : -1;
+}
+
+int get_batch_count(struct ssp_data *data, u8 uSensorType) {
+       int iRet = 0;
+       s32 result = 0;
+       char buffer[4] = { 0, };
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_BATCH_COUNT;
+       msg->length = 4;
+       msg->options = AP2HUB_READ;
+       msg->data = uSensorType;
+       msg->buffer = buffer;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - fail %d\n", __func__, iRet);
+               return ERROR;
+       }
+
+       memcpy(&result, buffer, 4);
+
+       ssp_dbg("[SSP]: %s Sensor Type = 0x%x, data = %u\n", __func__, uSensorType,
+                       result);
+
+       return result;
+}
+
+int get_chipid(struct ssp_data *data)
+{
+       int iRet, iReties = 0;
+       char buffer = 0;
+       struct ssp_msg *msg;
+
+retries:
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_WHOAMI;
+       msg->length = 1;
+       msg->options = AP2HUB_READ;
+       msg->buffer = &buffer;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (buffer != DEVICE_ID && iReties++ < 2) {
+        mdelay(5);
+        pr_err("[SSP] %s - get chip ID retry\n", __func__);
+        goto retries;
+       }
+
+       if (iRet == SUCCESS)
+               return buffer;
+
+       pr_err("[SSP] %s - get chip ID failed %d\n", __func__, iRet);
+       return ERROR;
+}
+
+int set_sensor_position(struct ssp_data *data)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_SENSOR_FORMATION;
+       msg->length = 3;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(3, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = data->accel_position;
+       msg->buffer[1] = data->accel_position;
+       msg->buffer[2] = data->mag_position;
+
+       iRet = ssp_spi_async(data, msg);
+
+       pr_info("[SSP] Sensor Posision A : %u, G : %u, M: %u, P: %u\n",
+                       data->accel_position, data->accel_position, data->mag_position, 0);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP] %s -fail to set_sensor_position %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       return iRet;
+}
+
+int set_magnetic_static_matrix(struct ssp_data *data)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_SET_MAGNETIC_STATIC_MATRIX;
+       msg->length = data->mag_matrix_size;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(data->mag_matrix_size, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       memcpy(msg->buffer, data->mag_matrix, data->mag_matrix_size);
+
+       iRet = ssp_spi_async(data, msg);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP] %s -fail to set_magnetic_static_matrix %d\n",
+                               __func__, iRet);
+               iRet = ERROR;
+       }
+
+       return iRet;
+}
+
+void set_proximity_threshold(struct ssp_data *data,
+       unsigned int uData1, unsigned int uData2)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg;
+
+       if (!(data->uSensorState & (1 << PROXIMITY_SENSOR))) {
+               pr_info("[SSP]: %s - Skip this function!!!"\
+                       ", proximity sensor is not connected(0x%x)\n",
+                       __func__, data->uSensorState);
+               return;
+       }
+
+       msg= kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n",
+                       __func__);
+               return;
+       }
+       msg->cmd = MSG2SSP_AP_SENSOR_PROXTHRESHOLD;
+       msg->length = 2;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(4, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = (char)uData1;
+       msg->buffer[1] = (char)uData2;
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - SENSOR_PROXTHRESHOLD CMD fail %d\n",
+                       __func__, iRet);
+               return;
+       }
+
+       pr_info("[SSP]: Proximity Threshold - %u, %u\n", uData1, uData2);
+}
+
+void set_proximity_barcode_enable(struct ssp_data *data, bool bEnable)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return;
+       }
+       msg->cmd = MSG2SSP_AP_SENSOR_BARCODE_EMUL;
+       msg->length = 1;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(1, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       data->bBarcodeEnabled = bEnable;
+       msg->buffer[0] = bEnable;
+
+       iRet = ssp_spi_async(data, msg);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - SENSOR_BARCODE_EMUL CMD fail %d\n",
+                               __func__, iRet);
+               return;
+       }
+
+       pr_info("[SSP] Proximity Barcode En : %u\n", bEnable);
+}
+
+void set_gesture_current(struct ssp_data *data, unsigned char uData1)
+{
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return;
+       }
+       msg->cmd = MSG2SSP_AP_SENSOR_GESTURE_CURRENT;
+       msg->length = 1;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(1, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = uData1;
+       iRet = ssp_spi_async(data, msg);
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - SENSOR_GESTURE_CURRENT CMD fail %d\n", __func__,
+                               iRet);
+               return;
+       }
+
+       pr_info("[SSP]: Gesture Current Setting - %u\n", uData1);
+}
+
+unsigned int get_sensor_scanning_info(struct ssp_data *data) {
+       int iRet = 0, z = 0;
+       u32 result = 0;
+       char bin[SENSOR_MAX + 1];
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_SENSOR_SCANNING;
+       msg->length = 4;
+       msg->options = AP2HUB_READ;
+       msg->buffer = (char*) &result;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS)
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+
+       bin[SENSOR_MAX] = '\0';
+       for (z = 0; z < SENSOR_MAX; z++)
+               bin[SENSOR_MAX - 1 - z] = (result & (1 << z)) ? '1' : '0';
+       pr_err("[SSP]: state: %s\n", bin);
+
+       return result;
+}
+
+unsigned int get_firmware_rev(struct ssp_data *data) {
+       int iRet;
+       u32 result = SSP_INVALID_REVISION;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_FIRMWARE_REV;
+       msg->length = 4;
+       msg->options = AP2HUB_READ;
+       msg->buffer = (char*) &result;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+       if (iRet != SUCCESS)
+               pr_err("[SSP]: %s - transfer fail %d\n", __func__, iRet);
+
+       return result;
+}
+
+int set_big_data_start(struct ssp_data *data, u8 type, u32 length) {
+       int iRet = 0;
+
+       struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_START_BIG_DATA;
+       msg->length = 5;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(5, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = type;
+       memcpy(&msg->buffer[1], &length, 4);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       return iRet;
+}
+
+int set_time(struct ssp_data *data) {
+       int iRet;
+       struct ssp_msg *msg;
+       struct timespec ts;
+       struct rtc_time tm;
+
+       getnstimeofday(&ts);
+       rtc_time_to_tm(ts.tv_sec, &tm);
+       pr_info("[SSP]: %s %d-%02d-%02d %02d:%02d:%02d.%09lu UTC\n", __func__,
+                       tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min,
+                       tm.tm_sec, ts.tv_nsec);
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_SET_TIME;
+       msg->length = 12;
+       msg->options = AP2HUB_WRITE;
+       msg->buffer = (char*) kzalloc(12, GFP_KERNEL);
+       msg->free_buffer = 1;
+
+       msg->buffer[0] = tm.tm_hour;
+       msg->buffer[1] = tm.tm_min;
+       msg->buffer[2] = tm.tm_sec;
+       msg->buffer[3] = tm.tm_hour > 11 ? 64 : 0;
+       msg->buffer[4] = tm.tm_wday;
+       msg->buffer[5] = tm.tm_mon + 1;
+       msg->buffer[6] = tm.tm_mday;
+       msg->buffer[7] = tm.tm_year % 100;
+       memcpy(&msg->buffer[8], &ts.tv_nsec, 4);
+
+       iRet = ssp_spi_async(data, msg);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c fail %d\n", __func__, iRet);
+               iRet = ERROR;
+       }
+
+       return iRet;
+}
+
+int get_time(struct ssp_data *data) {
+       int iRet;
+       char buffer[12] = { 0, };
+       struct ssp_msg *msg;
+       struct timespec ts;
+       struct rtc_time tm;
+
+       getnstimeofday(&ts);
+       rtc_time_to_tm(ts.tv_sec, &tm);
+       pr_info("[SSP]: %s ap %d-%02d-%02d %02d:%02d:%02d.%09lu UTC\n", __func__,
+                       tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min,
+                       tm.tm_sec, ts.tv_nsec);
+
+       msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+       if (msg == NULL) {
+               pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
+               return -ENOMEM;
+       }
+       msg->cmd = MSG2SSP_AP_MCU_GET_TIME;
+       msg->length = 12;
+       msg->options = AP2HUB_READ;
+       msg->buffer = buffer;
+       msg->free_buffer = 0;
+
+       iRet = ssp_spi_sync(data, msg, 1000);
+
+       if (iRet != SUCCESS) {
+               pr_err("[SSP]: %s - i2c failed %d\n", __func__, iRet);
+               return 0;
+       }
+
+       tm.tm_hour = buffer[0];
+       tm.tm_min = buffer[1];
+       tm.tm_sec = buffer[2];
+       tm.tm_mon = msg->buffer[5] - 1;
+       tm.tm_mday = buffer[6];
+       tm.tm_year = buffer[7] + 100;
+       rtc_tm_to_time(&tm, &ts.tv_sec);
+       memcpy(&ts.tv_nsec, &msg->buffer[8], 4);
+
+       rtc_time_to_tm(ts.tv_sec, &tm);
+       pr_info("[SSP]: %s mcu %d-%02d-%02d %02d:%02d:%02d.%09lu UTC\n", __func__,
+                       tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min,
+                       tm.tm_sec, ts.tv_nsec);
+
+       return iRet;
+}
+
diff --git a/drivers/sensors/brcm/ssp_iio_ring.c b/drivers/sensors/brcm/ssp_iio_ring.c
new file mode 100644 (file)
index 0000000..3081cc9
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ *  Copyright (C) 2011, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/i2c.h>
+#include <linux/err.h>
+#include <linux/delay.h>
+#include <linux/sysfs.h>
+#include <linux/jiffies.h>
+#include <linux/irq.h>
+#include <linux/interrupt.h>
+#include <linux/kfifo.h>
+#include <linux/poll.h>
+#include <linux/miscdevice.h>
+
+#include "ssp.h"
+#include <linux/iio/iio.h>
+#include <linux/iio/kfifo_buf.h>
+#include <linux/iio/trigger_consumer.h>
+#include <linux/iio/sysfs.h>
+
+void ssp_iio_unconfigure_ring(struct iio_dev *indio_dev)
+{
+       iio_kfifo_free(indio_dev->buffer);
+};
+
+static const struct iio_buffer_setup_ops ssp_iio_ring_setup_ops;
+
+int ssp_iio_configure_ring(struct iio_dev *indio_dev)
+{
+       struct iio_buffer *ring;
+
+       ring = iio_kfifo_allocate();
+       if (!ring)
+               return -ENOMEM;
+
+       ring->bytes_per_datum = 8;
+       indio_dev->buffer = ring;
+       /* setup ring buffer */
+       ring->scan_timestamp = true;
+       indio_dev->setup_ops = &ssp_iio_ring_setup_ops;
+       /* scan count double count timestamp. should subtract 1. but
+        * number of channels still includes timestamp
+        */
+
+       indio_dev->modes |= INDIO_BUFFER_HARDWARE;
+
+       return 0;
+}
+
diff --git a/drivers/sensors/brcm/ssp_iio_trigger.c b/drivers/sensors/brcm/ssp_iio_trigger.c
new file mode 100644 (file)
index 0000000..ce11232
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ *  Copyright (C) 2011, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#include "ssp.h"
+#include <linux/iio/iio.h>
+#include <linux/iio/trigger.h>
+/*
+ * ssp_iio_data_rdy_trigger_set_state() set data ready interrupt state
+ */
+static const struct iio_trigger_ops ssp_iio_trigger_ops;
+
+int ssp_iio_probe_trigger(struct ssp_data *data, struct iio_dev *indio_dev, struct iio_trigger *trig)
+{
+       int ret;
+
+       trig = iio_trigger_alloc("%s-dev%d",
+                                       indio_dev->name,
+                                       indio_dev->id);
+       if (trig == NULL)
+               return -ENOMEM;
+       trig->dev.parent = &data->client->dev;
+       trig->ops = &ssp_iio_trigger_ops;
+       ret = iio_trigger_register(trig);
+
+       if (ret) {
+               iio_trigger_free(trig);
+               return -EPERM;
+       }
+       indio_dev->trig = trig;
+
+       return 0;
+}
+
+void ssp_iio_remove_trigger(struct iio_trigger *trig)
+{
+       iio_trigger_unregister(trig);
+       iio_trigger_free(trig);
+}
diff --git a/drivers/sensors/brcm/ssp_input.c b/drivers/sensors/brcm/ssp_input.c
new file mode 100644 (file)
index 0000000..82c6c17
--- /dev/null
@@ -0,0 +1,1145 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+
+#include <linux/iio/iio.h>
+#include <linux/iio/sysfs.h>
+#include <linux/iio/events.h>
+#include <linux/iio/buffer.h>
+#include <linux/iio/types.h>
+
+/*************************************************************************/
+/* SSP Kernel -> HAL input evnet function                                */
+/*************************************************************************/
+#define IIO_BUFFER_12_BYTES         20 /* 12 + timestamp 8*/
+#define IIO_BUFFER_6_BYTES          14
+#define IIO_BUFFER_1_BYTES          9
+#define IIO_BUFFER_17_BYTES         25
+#define IIO_BUFFER_24_BYTES         20
+#define IIO_BUFFER_7_BYTES          15
+
+#define IIO_ST(si, rb, sb, sh)                                          \
+       { .sign = si, .realbits = rb, .storagebits = sb, .shift = sh }
+
+/* data header defines */
+static int ssp_push_17bytes_buffer(struct iio_dev *indio_dev, u64 t, int *q)
+{
+       u8 buf[IIO_BUFFER_17_BYTES];
+       int i;
+
+       for (i = 0; i < 4; i++)
+               memcpy(buf + 4 * i, &q[i], sizeof(q[i]));
+       buf[16] = (u8)q[4];
+       memcpy(buf + 17, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+static int ssp_push_12bytes_buffer(struct iio_dev *indio_dev, u64 t, int *q)
+{
+       u8 buf[IIO_BUFFER_12_BYTES];
+       int i;
+
+       for (i = 0; i < 3; i++)
+               memcpy(buf + 4 * i, &q[i], sizeof(q[i]));
+       memcpy(buf + 12, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+static int ssp_push_6bytes_buffer(struct iio_dev *indio_dev, u64 t, s16 *d)
+{
+       u8 buf[IIO_BUFFER_6_BYTES];
+       int i;
+
+       for (i = 0; i < 3; i++)
+               memcpy(buf + i * 2, &d[i], sizeof(d[i]));
+
+       memcpy(buf + 6, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+static int ssp_push_1bytes_buffer(struct iio_dev *indio_dev, u64 t, u8 *d)
+{
+       u8 buf[IIO_BUFFER_1_BYTES];
+
+       memcpy(buf, d, sizeof(u8));
+       memcpy(buf + 1, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+static int ssp_push_24bytes_buffer(struct iio_dev *indio_dev, u64 t, s16 *q)
+{
+       u8 buf[IIO_BUFFER_24_BYTES];
+       int i;
+
+       for (i = 0; i < 6; i++)
+               memcpy(buf + 2 * i, &q[i], sizeof(q[i]));
+       memcpy(buf + 12, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+static int ssp_push_7bytes_buffer(struct iio_dev *indio_dev, u64 t, s16 *d,
+       u8 status)
+{
+       u8 buf[IIO_BUFFER_7_BYTES];
+       int i;
+
+       for (i = 0; i < 3; i++)
+               memcpy(buf + i * 2, &d[i], sizeof(d[i]));
+       buf[6] = status;
+       memcpy(buf + 7, &t, sizeof(t));
+       mutex_lock(&indio_dev->mlock);
+       iio_push_to_buffers(indio_dev, buf);
+       mutex_unlock(&indio_dev->mlock);
+
+       return 0;
+}
+
+void report_meta_data(struct ssp_data *data, struct sensor_value *s)
+{
+       pr_info("[SSP]: %s - what: %d, sensor: %d\n", __func__,
+               s->meta_data.what, s->meta_data.sensor);
+
+       if (s->meta_data.sensor == ACCELEROMETER_SENSOR) {
+               s16 accel_buf[3];
+               memset(accel_buf, 0, sizeof(s16) * 3);
+               ssp_push_6bytes_buffer(data->accel_indio_dev, 0, accel_buf);
+       } else if (s->meta_data.sensor == GYROSCOPE_SENSOR) {
+               int gyro_buf[3];
+               memset(gyro_buf, 0, sizeof(int) * 3);
+               ssp_push_12bytes_buffer(data->gyro_indio_dev, 0, gyro_buf);
+       } else if (s->meta_data.sensor == GYRO_UNCALIB_SENSOR) {
+               s16 uncal_gyro_buf[6];
+               memset(uncal_gyro_buf, 0, sizeof(s16) * 6);
+               ssp_push_24bytes_buffer(data->uncal_gyro_indio_dev,
+                       0, uncal_gyro_buf);
+       } else if (s->meta_data.sensor == GEOMAGNETIC_SENSOR) {
+               s16 mag_buf[3];
+               memset(mag_buf, 0, sizeof(s16) * 3);
+               ssp_push_7bytes_buffer(data->mag_indio_dev, 0, mag_buf, 0);
+       } else if (s->meta_data.sensor == GEOMAGNETIC_UNCALIB_SENSOR) {
+               s16 uncal_mag_buf[6];
+               memset(uncal_mag_buf, 0, sizeof(s16) * 6);
+               ssp_push_24bytes_buffer(data->uncal_mag_indio_dev,
+                       0, uncal_mag_buf);
+       } else if (s->meta_data.sensor == PRESSURE_SENSOR) {
+               int pressure_buf[3];
+               memset(pressure_buf, 0, sizeof(int) * 3);
+               ssp_push_12bytes_buffer(data->pressure_indio_dev, 0,
+                       pressure_buf);
+       } else if (s->meta_data.sensor == ROTATION_VECTOR) {
+               int rot_buf[5];
+               memset(rot_buf, 0, sizeof(int) * 5);
+               ssp_push_17bytes_buffer(data->rot_indio_dev, 0, rot_buf);
+       } else if (s->meta_data.sensor == GAME_ROTATION_VECTOR) {
+               int grot_buf[5];
+               memset(grot_buf, 0, sizeof(int) * 5);
+               ssp_push_17bytes_buffer(data->game_rot_indio_dev, 0, grot_buf);
+       } else if (s->meta_data.sensor == STEP_DETECTOR) {
+               u8 step_buf[1] = {0};
+               ssp_push_1bytes_buffer(data->step_det_indio_dev, 0, step_buf);
+       } else {
+               input_report_rel(data->meta_input_dev, REL_DIAL,
+                       s->meta_data.what);
+               input_report_rel(data->meta_input_dev, REL_HWHEEL,
+                       s->meta_data.sensor + 1);
+               input_sync(data->meta_input_dev);
+       }
+}
+
+void report_acc_data(struct ssp_data *data, struct sensor_value *accdata)
+{
+       s16 accel_buf[3];
+
+       data->buf[ACCELEROMETER_SENSOR].x = accdata->x;
+       data->buf[ACCELEROMETER_SENSOR].y = accdata->y;
+       data->buf[ACCELEROMETER_SENSOR].z = accdata->z;
+
+       accel_buf[0] = data->buf[ACCELEROMETER_SENSOR].x;
+       accel_buf[1] = data->buf[ACCELEROMETER_SENSOR].y;
+       accel_buf[2] = data->buf[ACCELEROMETER_SENSOR].z;
+
+       ssp_push_6bytes_buffer(data->accel_indio_dev, accdata->timestamp,
+               accel_buf);
+}
+
+void report_gyro_data(struct ssp_data *data, struct sensor_value *gyrodata)
+{
+       int lTemp[3] = {0,};
+
+       data->buf[GYROSCOPE_SENSOR].x = gyrodata->x;
+       data->buf[GYROSCOPE_SENSOR].y = gyrodata->y;
+       data->buf[GYROSCOPE_SENSOR].z = gyrodata->z;
+
+       if (data->uGyroDps == GYROSCOPE_DPS500) {
+               lTemp[0] = (int)data->buf[GYROSCOPE_SENSOR].x >> 2;
+               lTemp[1] = (int)data->buf[GYROSCOPE_SENSOR].y >> 2;
+               lTemp[2] = (int)data->buf[GYROSCOPE_SENSOR].z >> 2;
+       } else if (data->uGyroDps == GYROSCOPE_DPS250) {
+               lTemp[0] = (int)data->buf[GYROSCOPE_SENSOR].x >> 3;
+               lTemp[1] = (int)data->buf[GYROSCOPE_SENSOR].y >> 3;
+               lTemp[2] = (int)data->buf[GYROSCOPE_SENSOR].z >> 3;
+       } else {
+               lTemp[0] = (int)data->buf[GYROSCOPE_SENSOR].x;
+               lTemp[1] = (int)data->buf[GYROSCOPE_SENSOR].y;
+               lTemp[2] = (int)data->buf[GYROSCOPE_SENSOR].z;
+       }
+
+       ssp_push_12bytes_buffer(data->gyro_indio_dev, gyrodata->timestamp,
+               lTemp);
+}
+
+void report_geomagnetic_raw_data(struct ssp_data *data,
+       struct sensor_value *magrawdata)
+{
+       data->buf[GEOMAGNETIC_RAW].x = magrawdata->x;
+       data->buf[GEOMAGNETIC_RAW].y = magrawdata->y;
+       data->buf[GEOMAGNETIC_RAW].z = magrawdata->z;
+}
+
+void report_mag_data(struct ssp_data *data, struct sensor_value *magdata)
+{
+       s16 lTemp[3] = { 0, };
+       data->buf[GEOMAGNETIC_SENSOR].cal_x = magdata->cal_x;
+       data->buf[GEOMAGNETIC_SENSOR].cal_y = magdata->cal_y;
+       data->buf[GEOMAGNETIC_SENSOR].cal_z = magdata->cal_z;
+       data->buf[GEOMAGNETIC_SENSOR].accuracy = magdata->accuracy;
+
+       lTemp[0] = data->buf[GEOMAGNETIC_SENSOR].cal_x;
+       lTemp[1] = data->buf[GEOMAGNETIC_SENSOR].cal_y;
+       lTemp[2] = data->buf[GEOMAGNETIC_SENSOR].cal_z;
+
+       ssp_push_7bytes_buffer(data->mag_indio_dev, magdata->timestamp,
+               lTemp, data->buf[GEOMAGNETIC_SENSOR].accuracy);
+}
+
+void report_mag_uncaldata(struct ssp_data *data, struct sensor_value *magdata)
+{
+       s16 lTemp[6] = {0,};
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_x = magdata->uncal_x;
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_y = magdata->uncal_y;
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_z = magdata->uncal_z;
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_x= magdata->offset_x;
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_y= magdata->offset_y;
+       data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_z= magdata->offset_z;
+
+       lTemp[0] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_x;
+       lTemp[1] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_y;
+       lTemp[2] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].uncal_z;
+       lTemp[3] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_x;
+       lTemp[4] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_y;
+       lTemp[5] = data->buf[GEOMAGNETIC_UNCALIB_SENSOR].offset_z;
+
+       ssp_push_24bytes_buffer(data->uncal_mag_indio_dev,
+                       magdata->timestamp, lTemp);
+}
+
+void report_uncalib_gyro_data(struct ssp_data *data, struct sensor_value *gyrodata)
+{
+       s16 lTemp[6] = {0,};
+       data->buf[GYRO_UNCALIB_SENSOR].uncal_x = gyrodata->uncal_x;
+       data->buf[GYRO_UNCALIB_SENSOR].uncal_y = gyrodata->uncal_y;
+       data->buf[GYRO_UNCALIB_SENSOR].uncal_z = gyrodata->uncal_z;
+       data->buf[GYRO_UNCALIB_SENSOR].offset_x = gyrodata->offset_x;
+       data->buf[GYRO_UNCALIB_SENSOR].offset_y = gyrodata->offset_y;
+       data->buf[GYRO_UNCALIB_SENSOR].offset_z = gyrodata->offset_z;
+
+       lTemp[0] = gyrodata->uncal_x;
+       lTemp[1] = gyrodata->uncal_y;
+       lTemp[2] = gyrodata->uncal_z;
+       lTemp[3] = gyrodata->offset_x;
+       lTemp[4] = gyrodata->offset_y;
+       lTemp[5] = gyrodata->offset_z;
+
+       ssp_push_24bytes_buffer(data->uncal_gyro_indio_dev,
+                       gyrodata->timestamp, lTemp);
+}
+
+void report_sig_motion_data(struct ssp_data *data,
+       struct sensor_value *sig_motion_data)
+{
+       data->buf[SIG_MOTION_SENSOR].sig_motion = sig_motion_data->sig_motion;
+
+       input_report_rel(data->sig_motion_input_dev, REL_MISC,
+               data->buf[SIG_MOTION_SENSOR].sig_motion);
+       input_sync(data->sig_motion_input_dev);
+}
+
+void report_rot_data(struct ssp_data *data, struct sensor_value *rotdata)
+{
+       int rot_buf[5];
+
+       data->buf[ROTATION_VECTOR].quat_a = rotdata->quat_a;
+       data->buf[ROTATION_VECTOR].quat_b = rotdata->quat_b;
+       data->buf[ROTATION_VECTOR].quat_c = rotdata->quat_c;
+       data->buf[ROTATION_VECTOR].quat_d = rotdata->quat_d;
+       data->buf[ROTATION_VECTOR].acc_rot = rotdata->acc_rot;
+
+       rot_buf[0] = rotdata->quat_a;
+       rot_buf[1] = rotdata->quat_b;
+       rot_buf[2] = rotdata->quat_c;
+       rot_buf[3] = rotdata->quat_d;
+       rot_buf[4] = rotdata->acc_rot;
+
+       ssp_push_17bytes_buffer(data->rot_indio_dev, rotdata->timestamp,
+               rot_buf);
+}
+
+void report_game_rot_data(struct ssp_data *data, struct sensor_value *grvec_data)
+{
+       int grot_buf[5];
+
+       data->buf[GAME_ROTATION_VECTOR].quat_a = grvec_data->quat_a;
+       data->buf[GAME_ROTATION_VECTOR].quat_b = grvec_data->quat_b;
+       data->buf[GAME_ROTATION_VECTOR].quat_c = grvec_data->quat_c;
+       data->buf[GAME_ROTATION_VECTOR].quat_d = grvec_data->quat_d;
+       data->buf[GAME_ROTATION_VECTOR].acc_rot = grvec_data->acc_rot;
+
+       grot_buf[0] = grvec_data->quat_a;
+       grot_buf[1] = grvec_data->quat_b;
+       grot_buf[2] = grvec_data->quat_c;
+       grot_buf[3] = grvec_data->quat_d;
+       grot_buf[4] = grvec_data->acc_rot;
+
+       ssp_push_17bytes_buffer(data->game_rot_indio_dev, grvec_data->timestamp,
+               grot_buf);
+}
+
+void report_gesture_data(struct ssp_data *data, struct sensor_value *gesdata)
+{
+       int i = 0;
+       for (i=0; i<20; i++) {
+               data->buf[GESTURE_SENSOR].data[i] = gesdata->data[i];
+       }
+
+       input_report_abs(data->gesture_input_dev,
+               ABS_X, data->buf[GESTURE_SENSOR].data[0]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_Y, data->buf[GESTURE_SENSOR].data[1]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_Z, data->buf[GESTURE_SENSOR].data[2]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_RX, data->buf[GESTURE_SENSOR].data[3]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_RY, data->buf[GESTURE_SENSOR].data[4]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_RZ, data->buf[GESTURE_SENSOR].data[5]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_THROTTLE, data->buf[GESTURE_SENSOR].data[6]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_RUDDER, data->buf[GESTURE_SENSOR].data[7]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_WHEEL, data->buf[GESTURE_SENSOR].data[8]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_GAS, data->buf[GESTURE_SENSOR].data[9]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_BRAKE, data->buf[GESTURE_SENSOR].data[10]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT0X, data->buf[GESTURE_SENSOR].data[11]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT0Y, data->buf[GESTURE_SENSOR].data[12]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT1X, data->buf[GESTURE_SENSOR].data[13]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT1Y, data->buf[GESTURE_SENSOR].data[14]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT2X, data->buf[GESTURE_SENSOR].data[15]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT2Y, data->buf[GESTURE_SENSOR].data[16]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT3X, data->buf[GESTURE_SENSOR].data[17]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_HAT3Y, data->buf[GESTURE_SENSOR].data[18]);
+       input_report_abs(data->gesture_input_dev,
+               ABS_PRESSURE, data->buf[GESTURE_SENSOR].data[19]);
+
+       input_sync(data->gesture_input_dev);
+}
+
+void report_pressure_data(struct ssp_data *data, struct sensor_value *predata)
+{
+       int temp[3] = {0, };
+       data->buf[PRESSURE_SENSOR].pressure[0] =
+               predata->pressure[0] - data->iPressureCal;
+       data->buf[PRESSURE_SENSOR].pressure[1] = predata->pressure[1];
+
+       temp[0] = data->buf[PRESSURE_SENSOR].pressure[0];
+       temp[1] = data->buf[PRESSURE_SENSOR].pressure[1];
+       temp[2] = data->sealevelpressure;
+
+       ssp_push_12bytes_buffer(data->pressure_indio_dev, predata->timestamp,
+               temp);
+}
+
+void report_light_data(struct ssp_data *data, struct sensor_value *lightdata)
+{
+       data->buf[LIGHT_SENSOR].r = lightdata->r;
+       data->buf[LIGHT_SENSOR].g = lightdata->g;
+       data->buf[LIGHT_SENSOR].b = lightdata->b;
+       data->buf[LIGHT_SENSOR].w = lightdata->w;
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+       data->buf[LIGHT_SENSOR].a_time = lightdata->a_time;
+       data->buf[LIGHT_SENSOR].a_gain = (0x03) & (lightdata->a_gain);
+#endif
+
+       input_report_rel(data->light_input_dev, REL_HWHEEL,
+               data->buf[LIGHT_SENSOR].r + 1);
+       input_report_rel(data->light_input_dev, REL_DIAL,
+               data->buf[LIGHT_SENSOR].g + 1);
+       input_report_rel(data->light_input_dev, REL_WHEEL,
+               data->buf[LIGHT_SENSOR].b + 1);
+       input_report_rel(data->light_input_dev, REL_MISC,
+               data->buf[LIGHT_SENSOR].w + 1);
+
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+       input_report_rel(data->light_input_dev, REL_RY,
+               data->buf[LIGHT_SENSOR].a_time + 1);
+       input_report_rel(data->light_input_dev, REL_RZ,
+               data->buf[LIGHT_SENSOR].a_gain + 1);
+#endif
+       input_sync(data->light_input_dev);
+}
+
+void report_prox_data(struct ssp_data *data, struct sensor_value *proxdata)
+{
+       ssp_dbg("[SSP] Proximity Sensor Detect : %u, raw : %u\n",
+               proxdata->prox[0], proxdata->prox[1]);
+
+       data->buf[PROXIMITY_SENSOR].prox[0] = proxdata->prox[0];
+       data->buf[PROXIMITY_SENSOR].prox[1] = proxdata->prox[1];
+
+       input_report_abs(data->prox_input_dev, ABS_DISTANCE,
+               (!proxdata->prox[0]));
+       input_sync(data->prox_input_dev);
+
+       wake_lock_timeout(&data->ssp_wake_lock, 3 * HZ);
+}
+
+void report_prox_raw_data(struct ssp_data *data,
+       struct sensor_value *proxrawdata)
+{
+       if (data->uFactoryProxAvg[0]++ >= PROX_AVG_READ_NUM) {
+               data->uFactoryProxAvg[2] /= PROX_AVG_READ_NUM;
+               data->buf[PROXIMITY_RAW].prox[1] = (u16)data->uFactoryProxAvg[1];
+               data->buf[PROXIMITY_RAW].prox[2] = (u16)data->uFactoryProxAvg[2];
+               data->buf[PROXIMITY_RAW].prox[3] = (u16)data->uFactoryProxAvg[3];
+
+               data->uFactoryProxAvg[0] = 0;
+               data->uFactoryProxAvg[1] = 0;
+               data->uFactoryProxAvg[2] = 0;
+               data->uFactoryProxAvg[3] = 0;
+       } else {
+               data->uFactoryProxAvg[2] += proxrawdata->prox[0];
+
+               if (data->uFactoryProxAvg[0] == 1)
+                       data->uFactoryProxAvg[1] = proxrawdata->prox[0];
+               else if (proxrawdata->prox[0] < data->uFactoryProxAvg[1])
+                       data->uFactoryProxAvg[1] = proxrawdata->prox[0];
+
+               if (proxrawdata->prox[0] > data->uFactoryProxAvg[3])
+                       data->uFactoryProxAvg[3] = proxrawdata->prox[0];
+       }
+
+       data->buf[PROXIMITY_RAW].prox[0] = proxrawdata->prox[0];
+}
+
+void report_step_det_data(struct ssp_data *data,
+               struct sensor_value *stepdet_data)
+{
+       data->buf[STEP_DETECTOR].step_det = stepdet_data->step_det;
+       ssp_push_1bytes_buffer(data->step_det_indio_dev, stepdet_data->timestamp,
+                       &stepdet_data->step_det);
+}
+
+void report_step_cnt_data(struct ssp_data *data,
+       struct sensor_value *sig_motion_data)
+{
+       data->buf[STEP_COUNTER].step_diff = sig_motion_data->step_diff;
+
+       data->step_count_total += data->buf[STEP_COUNTER].step_diff;
+
+       input_report_rel(data->step_cnt_input_dev, REL_MISC,
+               data->step_count_total + 1);
+       input_sync(data->step_cnt_input_dev);
+}
+
+void report_temp_humidity_data(struct ssp_data *data,
+       struct sensor_value *temp_humi_data)
+{
+       data->buf[TEMPERATURE_HUMIDITY_SENSOR].x = temp_humi_data->x;
+       data->buf[TEMPERATURE_HUMIDITY_SENSOR].y = temp_humi_data->y;
+       data->buf[TEMPERATURE_HUMIDITY_SENSOR].z = temp_humi_data->z;
+
+       /* Temperature */
+       input_report_rel(data->temp_humi_input_dev, REL_HWHEEL,
+               data->buf[TEMPERATURE_HUMIDITY_SENSOR].x);
+       /* Humidity */
+       input_report_rel(data->temp_humi_input_dev, REL_DIAL,
+               data->buf[TEMPERATURE_HUMIDITY_SENSOR].y);
+       input_sync(data->temp_humi_input_dev);
+       if (data->buf[TEMPERATURE_HUMIDITY_SENSOR].z)
+               wake_lock_timeout(&data->ssp_wake_lock, 2 * HZ);
+}
+
+int initialize_event_symlink(struct ssp_data *data)
+{
+       int iRet = 0;
+
+       iRet = sensors_create_symlink(data->gesture_input_dev);
+       if (iRet < 0)
+               goto iRet_gesture_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->light_input_dev);
+       if (iRet < 0)
+               goto iRet_light_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->prox_input_dev);
+       if (iRet < 0)
+               goto iRet_prox_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->temp_humi_input_dev);
+       if (iRet < 0)
+               goto iRet_temp_humi_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->sig_motion_input_dev);
+       if (iRet < 0)
+               goto iRet_sig_motion_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->step_cnt_input_dev);
+       if (iRet < 0)
+               goto iRet_step_cnt_sysfs_create_link;
+
+       iRet = sensors_create_symlink(data->meta_input_dev);
+       if (iRet < 0)
+               goto iRet_meta_sysfs_create_link;
+
+       return SUCCESS;
+
+iRet_meta_sysfs_create_link:
+       sensors_remove_symlink(data->step_cnt_input_dev);
+iRet_step_cnt_sysfs_create_link:
+       sensors_remove_symlink(data->sig_motion_input_dev);
+iRet_sig_motion_sysfs_create_link:
+       sensors_remove_symlink(data->temp_humi_input_dev);
+iRet_temp_humi_sysfs_create_link:
+       sensors_remove_symlink(data->prox_input_dev);
+iRet_prox_sysfs_create_link:
+       sensors_remove_symlink(data->light_input_dev);
+iRet_light_sysfs_create_link:
+       sensors_remove_symlink(data->gesture_input_dev);
+iRet_gesture_sysfs_create_link:
+       pr_err("[SSP]: %s - could not create event symlink\n", __func__);
+
+       return FAIL;
+}
+
+void remove_event_symlink(struct ssp_data *data)
+{
+       sensors_remove_symlink(data->gesture_input_dev);
+       sensors_remove_symlink(data->light_input_dev);
+       sensors_remove_symlink(data->prox_input_dev);
+       sensors_remove_symlink(data->temp_humi_input_dev);
+       sensors_remove_symlink(data->sig_motion_input_dev);
+       sensors_remove_symlink(data->step_cnt_input_dev);
+       sensors_remove_symlink(data->meta_input_dev);
+}
+
+static const struct iio_info accel_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec accel_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_6_BYTES*8,
+                               IIO_BUFFER_6_BYTES*8, 0)
+       }
+};
+
+static const struct iio_info gyro_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec gyro_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_12_BYTES*8,
+                               IIO_BUFFER_12_BYTES*8, 0)
+       }
+};
+
+static const struct iio_info uncal_gyro_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec uncal_gyro_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_12_BYTES * 8,
+                       IIO_BUFFER_12_BYTES * 8, 0)
+       }
+};
+
+static const struct iio_info mag_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec mag_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_7_BYTES * 8,
+                       IIO_BUFFER_7_BYTES * 8, 0)
+       }
+};
+
+static const struct iio_info uncal_mag_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec uncal_mag_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_12_BYTES * 8,
+                       IIO_BUFFER_12_BYTES * 8, 0)
+       }
+};
+
+static const struct iio_info game_rot_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec game_rot_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_17_BYTES*8,
+                               IIO_BUFFER_17_BYTES*8, 0)
+       }
+};
+
+static const struct iio_info rot_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec rot_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_17_BYTES*8,
+                               IIO_BUFFER_17_BYTES*8, 0)
+       }
+};
+
+static const struct iio_info step_det_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec step_det_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_1_BYTES*8,
+                               IIO_BUFFER_1_BYTES*8, 0)
+       }
+};
+
+static const struct iio_info pressure_info = {
+       .driver_module = THIS_MODULE,
+};
+
+static const struct iio_chan_spec pressure_channels[] = {
+       {
+               .type = IIO_TIMESTAMP,
+               .channel = -1,
+               .scan_index = 3,
+               .scan_type = IIO_ST('s', IIO_BUFFER_12_BYTES * 8,
+                       IIO_BUFFER_12_BYTES * 8, 0)
+       }
+};
+
+int initialize_input_dev(struct ssp_data *data)
+{
+       int iRet = 0;
+
+       /* Registering iio device - start */
+       data->accel_indio_dev = iio_device_alloc(0);
+       if (!data->accel_indio_dev)
+               goto err_alloc_accel;
+
+       data->accel_indio_dev->name = "accelerometer_sensor";
+       data->accel_indio_dev->dev.parent = &data->spi->dev;
+       data->accel_indio_dev->info = &accel_info;
+       data->accel_indio_dev->channels = accel_channels;
+       data->accel_indio_dev->num_channels = ARRAY_SIZE(accel_channels);
+       data->accel_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->accel_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->accel_indio_dev);
+       if (iRet)
+               goto err_config_ring_accel;
+
+       iRet = iio_device_register(data->accel_indio_dev);
+       if (iRet)
+               goto err_register_device_accel;
+
+       data->gyro_indio_dev = iio_device_alloc(0);
+       if (!data->gyro_indio_dev)
+               goto err_alloc_gyro;
+
+       data->gyro_indio_dev->name = "gyro_sensor";
+       data->gyro_indio_dev->dev.parent = &data->spi->dev;
+       data->gyro_indio_dev->info = &gyro_info;
+       data->gyro_indio_dev->channels = gyro_channels;
+       data->gyro_indio_dev->num_channels = ARRAY_SIZE(gyro_channels);
+       data->gyro_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->gyro_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->gyro_indio_dev);
+       if (iRet)
+               goto err_config_ring_gyro;
+
+       iRet = iio_device_register(data->gyro_indio_dev);
+       if (iRet)
+               goto err_register_device_gyro;
+
+       data->uncal_gyro_indio_dev = iio_device_alloc(0);
+       if (!data->uncal_gyro_indio_dev)
+               goto err_alloc_uncal_gyro;
+
+       data->uncal_gyro_indio_dev->name = "uncal_gyro_sensor";
+       data->uncal_gyro_indio_dev->dev.parent = &data->spi->dev;
+       data->uncal_gyro_indio_dev->info = &uncal_gyro_info;
+       data->uncal_gyro_indio_dev->channels = uncal_gyro_channels;
+       data->uncal_gyro_indio_dev->num_channels = ARRAY_SIZE(uncal_gyro_channels);
+       data->uncal_gyro_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->uncal_gyro_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->uncal_gyro_indio_dev);
+       if (iRet)
+               goto err_config_ring_uncal_gyro;
+
+       iRet = iio_device_register(data->uncal_gyro_indio_dev);
+       if (iRet)
+               goto err_register_device_uncal_gyro;
+
+       data->mag_indio_dev = iio_device_alloc(0);
+       if (!data->mag_indio_dev)
+               goto err_alloc_mag;
+
+       data->mag_indio_dev->name = "geomagnetic_sensor";
+       data->mag_indio_dev->dev.parent = &data->spi->dev;
+       data->mag_indio_dev->info = &mag_info;
+       data->mag_indio_dev->channels = mag_channels;
+       data->mag_indio_dev->num_channels = ARRAY_SIZE(mag_channels);
+       data->mag_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->mag_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->mag_indio_dev);
+       if (iRet)
+               goto err_config_ring_mag;
+
+       iRet = iio_device_register(data->mag_indio_dev);
+       if (iRet)
+               goto err_register_device_mag;
+
+       data->uncal_mag_indio_dev = iio_device_alloc(0);
+       if (!data->uncal_mag_indio_dev)
+               goto err_alloc_uncal_mag;
+
+       data->uncal_mag_indio_dev->name = "uncal_geomagnetic_sensor";
+       data->uncal_mag_indio_dev->dev.parent = &data->spi->dev;
+       data->uncal_mag_indio_dev->info = &uncal_mag_info;
+       data->uncal_mag_indio_dev->channels = uncal_mag_channels;
+       data->uncal_mag_indio_dev->num_channels = ARRAY_SIZE(uncal_mag_channels);
+       data->uncal_mag_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->uncal_mag_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->uncal_mag_indio_dev);
+       if (iRet)
+               goto err_config_ring_uncal_mag;
+
+       iRet = iio_device_register(data->uncal_mag_indio_dev);
+       if (iRet)
+               goto err_register_device_uncal_mag;
+
+       data->game_rot_indio_dev = iio_device_alloc(0);
+       if (!data->game_rot_indio_dev)
+               goto err_alloc_game_rot;
+
+       data->game_rot_indio_dev->name = "game_rotation_vector";
+       data->game_rot_indio_dev->dev.parent = &data->spi->dev;
+       data->game_rot_indio_dev->info = &game_rot_info;
+       data->game_rot_indio_dev->channels = game_rot_channels;
+       data->game_rot_indio_dev->num_channels = ARRAY_SIZE(game_rot_channels);
+       data->game_rot_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->game_rot_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->game_rot_indio_dev);
+       if (iRet)
+               goto err_config_ring_game_rot;
+
+       iRet = iio_device_register(data->game_rot_indio_dev);
+       if (iRet)
+               goto err_register_device_game_rot;
+
+       data->rot_indio_dev = iio_device_alloc(0);
+       if (!data->rot_indio_dev)
+               goto err_alloc_rot;
+
+       data->rot_indio_dev->name = "rotation_vector_sensor";
+       data->rot_indio_dev->dev.parent = &data->spi->dev;
+       data->rot_indio_dev->info = &rot_info;
+       data->rot_indio_dev->channels = rot_channels;
+       data->rot_indio_dev->num_channels = ARRAY_SIZE(rot_channels);
+       data->rot_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->rot_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->rot_indio_dev);
+       if (iRet)
+               goto err_config_ring_rot;
+
+       iRet = iio_device_register(data->rot_indio_dev);
+       if (iRet)
+               goto err_register_device_rot;
+
+       data->step_det_indio_dev= iio_device_alloc(0);
+       if (!data->step_det_indio_dev)
+               goto err_alloc_step_det;
+
+       data->step_det_indio_dev->name = "step_det_sensor";
+       data->step_det_indio_dev->dev.parent = &data->spi->dev;
+       data->step_det_indio_dev->info = &step_det_info;
+       data->step_det_indio_dev->channels = step_det_channels;
+       data->step_det_indio_dev->num_channels = ARRAY_SIZE(step_det_channels);
+       data->step_det_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->step_det_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->step_det_indio_dev);
+       if (iRet)
+               goto err_config_ring_step_det;
+
+       iRet = iio_device_register(data->step_det_indio_dev);
+       if (iRet)
+               goto err_register_device_step_det;
+
+       data->pressure_indio_dev = iio_device_alloc(0);
+       if (!data->pressure_indio_dev)
+               goto err_alloc_pressure;
+       data->pressure_indio_dev->name = "pressure_sensor";
+       data->pressure_indio_dev->dev.parent = &data->spi->dev;
+       data->pressure_indio_dev->info = &pressure_info;
+       data->pressure_indio_dev->channels = pressure_channels;
+       data->pressure_indio_dev->num_channels = ARRAY_SIZE(pressure_channels);
+       data->pressure_indio_dev->modes = INDIO_DIRECT_MODE;
+       data->pressure_indio_dev->currentmode = INDIO_DIRECT_MODE;
+
+       iRet = ssp_iio_configure_ring(data->pressure_indio_dev);
+       if (iRet)
+               goto err_config_ring_pressure;
+
+       iRet = iio_device_register(data->pressure_indio_dev);
+       if (iRet)
+               goto err_register_device_pressure;
+       /* Registering iio device - end */
+
+       data->light_input_dev = input_allocate_device();
+       if (data->light_input_dev == NULL)
+               goto err_initialize_light_input_dev;
+
+       data->light_input_dev->name = "light_sensor";
+       input_set_capability(data->light_input_dev, EV_REL, REL_HWHEEL);
+       input_set_capability(data->light_input_dev, EV_REL, REL_DIAL);
+       input_set_capability(data->light_input_dev, EV_REL, REL_WHEEL);
+       input_set_capability(data->light_input_dev, EV_REL, REL_MISC);
+#if defined(CONFIG_SENSORS_SSP_TMG399X)
+       input_set_capability(data->light_input_dev, EV_REL, REL_RY);
+       input_set_capability(data->light_input_dev, EV_REL, REL_RZ);
+#endif
+       iRet = input_register_device(data->light_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->light_input_dev);
+               goto err_initialize_light_input_dev;
+       }
+       input_set_drvdata(data->light_input_dev, data);
+
+       data->prox_input_dev = input_allocate_device();
+       if (data->prox_input_dev == NULL)
+               goto err_initialize_proximity_input_dev;
+
+       data->prox_input_dev->name = "proximity_sensor";
+       input_set_capability(data->prox_input_dev, EV_ABS, ABS_DISTANCE);
+       input_set_abs_params(data->prox_input_dev, ABS_DISTANCE, 0, 1, 0, 0);
+       iRet = input_register_device(data->prox_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->prox_input_dev);
+               goto err_initialize_proximity_input_dev;
+       }
+       input_set_drvdata(data->prox_input_dev, data);
+
+       data->temp_humi_input_dev = input_allocate_device();
+       if (data->temp_humi_input_dev == NULL)
+               goto err_initialize_temp_humi_input_dev;
+
+       data->temp_humi_input_dev->name = "temp_humidity_sensor";
+       input_set_capability(data->temp_humi_input_dev, EV_REL, REL_HWHEEL);
+       input_set_capability(data->temp_humi_input_dev, EV_REL, REL_DIAL);
+       input_set_capability(data->temp_humi_input_dev, EV_REL, REL_WHEEL);
+       iRet = input_register_device(data->temp_humi_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->temp_humi_input_dev);
+               goto err_initialize_temp_humi_input_dev;
+       }
+       input_set_drvdata(data->temp_humi_input_dev, data);
+
+       data->gesture_input_dev = input_allocate_device();
+       if (data->gesture_input_dev == NULL)
+               goto err_initialize_gesture_input_dev;
+
+       data->gesture_input_dev->name = "gesture_sensor";
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_X);
+       input_set_abs_params(data->gesture_input_dev, ABS_X, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_Y);
+       input_set_abs_params(data->gesture_input_dev, ABS_Y, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_Z);
+       input_set_abs_params(data->gesture_input_dev, ABS_Z, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_RX);
+       input_set_abs_params(data->gesture_input_dev, ABS_RX, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_RY);
+       input_set_abs_params(data->gesture_input_dev, ABS_RY, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_RZ);
+       input_set_abs_params(data->gesture_input_dev, ABS_RZ, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_THROTTLE);
+       input_set_abs_params(data->gesture_input_dev, ABS_THROTTLE, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_RUDDER);
+       input_set_abs_params(data->gesture_input_dev, ABS_RUDDER, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_WHEEL);
+       input_set_abs_params(data->gesture_input_dev, ABS_WHEEL, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_GAS);
+       input_set_abs_params(data->gesture_input_dev, ABS_GAS, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_BRAKE);
+       input_set_abs_params(data->gesture_input_dev, ABS_BRAKE, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT0X);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT0X, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT0Y);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT0Y, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT1X);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT1X, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT1Y);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT1Y, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT2X);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT2X, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT2Y);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT2Y, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT3X);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT3X, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_HAT3Y);
+       input_set_abs_params(data->gesture_input_dev, ABS_HAT3Y, 0, 1024, 0, 0);
+       input_set_capability(data->gesture_input_dev, EV_ABS, ABS_PRESSURE);
+       input_set_abs_params(data->gesture_input_dev, ABS_PRESSURE, 0, 1024, 0, 0);
+       iRet = input_register_device(data->gesture_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->gesture_input_dev);
+               goto err_initialize_gesture_input_dev;
+       }
+       input_set_drvdata(data->gesture_input_dev, data);
+
+       data->sig_motion_input_dev = input_allocate_device();
+       if (data->sig_motion_input_dev == NULL)
+               goto err_initialize_sig_motion_input_dev;
+
+       data->sig_motion_input_dev->name = "sig_motion_sensor";
+       input_set_capability(data->sig_motion_input_dev, EV_REL, REL_MISC);
+       iRet = input_register_device(data->sig_motion_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->sig_motion_input_dev);
+               goto err_initialize_sig_motion_input_dev;
+       }
+       input_set_drvdata(data->sig_motion_input_dev, data);
+
+       data->step_cnt_input_dev = input_allocate_device();
+       if (data->step_cnt_input_dev == NULL)
+               goto err_initialize_step_cnt_input_dev;
+
+       data->step_cnt_input_dev->name = "step_cnt_sensor";
+       input_set_capability(data->step_cnt_input_dev, EV_REL, REL_MISC);
+       iRet = input_register_device(data->step_cnt_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->step_cnt_input_dev);
+               goto err_initialize_step_cnt_input_dev;
+       }
+       input_set_drvdata(data->step_cnt_input_dev, data);
+
+       data->meta_input_dev= input_allocate_device();
+       if (data->meta_input_dev == NULL)
+               goto err_initialize_meta_input_dev;
+
+       data->meta_input_dev->name = "meta_event";
+       input_set_capability(data->meta_input_dev, EV_REL, REL_HWHEEL);
+       input_set_capability(data->meta_input_dev, EV_REL, REL_DIAL);
+       iRet = input_register_device(data->meta_input_dev);
+       if (iRet < 0) {
+               input_free_device(data->meta_input_dev);
+               goto err_initialize_meta_input_dev;
+       }
+       input_set_drvdata(data->meta_input_dev, data);
+
+       return SUCCESS;
+
+err_initialize_meta_input_dev:
+       pr_err("[SSP]: %s - could not allocate meta event input device\n", __func__);
+       input_unregister_device(data->step_cnt_input_dev);
+err_initialize_step_cnt_input_dev:
+       pr_err("[SSP]: %s - could not allocate step cnt input device\n", __func__);
+       input_unregister_device(data->sig_motion_input_dev);
+err_initialize_sig_motion_input_dev:
+       pr_err("[SSP]: %s - could not allocate sig motion input device\n", __func__);
+       input_unregister_device(data->gesture_input_dev);
+err_initialize_gesture_input_dev:
+       pr_err("[SSP]: %s - could not allocate gesture input device\n", __func__);
+       input_unregister_device(data->temp_humi_input_dev);
+err_initialize_temp_humi_input_dev:
+       pr_err("[SSP]: %s - could not allocate temp_humi input device\n", __func__);
+       input_unregister_device(data->prox_input_dev);
+err_initialize_proximity_input_dev:
+       pr_err("[SSP]: %s - could not allocate proximity input device\n", __func__);
+       input_unregister_device(data->light_input_dev);
+err_initialize_light_input_dev:
+       pr_err("[SSP]: %s - could not allocate light input device\n", __func__);
+       iio_device_unregister(data->pressure_indio_dev);
+err_register_device_pressure:
+       pr_err("[SSP]: failed to register pressure_sensor device\n");
+       ssp_iio_unconfigure_ring(data->pressure_indio_dev);
+err_config_ring_pressure:
+       pr_err("[SSP]: failed to configure pressure_sensor ring buffer\n");
+       iio_device_free(data->pressure_indio_dev);
+err_alloc_pressure:
+       pr_err("[SSP]: failed to allocate memory for iio pressure_sensor device\n");
+       iio_device_unregister(data->step_det_indio_dev);
+err_register_device_step_det:
+       pr_err("[SSP]: failed to register step_det device\n");
+       ssp_iio_unconfigure_ring(data->step_det_indio_dev);
+err_config_ring_step_det:
+       pr_err("[SSP]: failed to configure step_det ring buffer\n");
+       iio_device_free(data->step_det_indio_dev);
+err_alloc_step_det:
+       pr_err("[SSP]: failed to allocate memory for iio step_det device\n");
+       iio_device_unregister(data->rot_indio_dev);
+err_register_device_rot:
+       pr_err("[SSP]: failed to register rot device\n");
+       ssp_iio_unconfigure_ring(data->rot_indio_dev);
+err_config_ring_rot:
+       pr_err("[SSP]: failed to configure rot ring buffer\n");
+       iio_device_free(data->rot_indio_dev);
+err_alloc_rot:
+       pr_err("[SSP]: failed to allocate memory for iio rot device\n");
+       iio_device_unregister(data->game_rot_indio_dev);
+err_register_device_game_rot:
+       pr_err("[SSP]: failed to register game_rot device\n");
+       ssp_iio_unconfigure_ring(data->game_rot_indio_dev);
+err_config_ring_game_rot:
+       pr_err("[SSP]: failed to configure game_rot ring buffer\n");
+       iio_device_free(data->game_rot_indio_dev);
+err_alloc_game_rot:
+       pr_err("[SSP]: failed to allocate memory for iio game_rot device\n");
+       iio_device_unregister(data->uncal_mag_indio_dev);
+err_register_device_uncal_mag:
+       pr_err("[SSP]: failed to register uncal mag device\n");
+       ssp_iio_unconfigure_ring(data->uncal_mag_indio_dev);
+err_config_ring_uncal_mag:
+       pr_err("[SSP]: failed to configure uncal mag ring buffer\n");
+       iio_device_free(data->uncal_mag_indio_dev);
+err_alloc_uncal_mag:
+       pr_err("[SSP]: failed to allocate memory for iio uncal mag device\n");
+       iio_device_unregister(data->mag_indio_dev);
+err_register_device_mag:
+       pr_err("[SSP]: failed to register mag device\n");
+       ssp_iio_unconfigure_ring(data->mag_indio_dev);
+err_config_ring_mag:
+       pr_err("[SSP]: failed to configure mag ring buffer\n");
+       iio_device_free(data->mag_indio_dev);
+err_alloc_mag:
+       pr_err("[SSP]: failed to allocate memory for iio uncal mag device\n");
+       iio_device_unregister(data->uncal_gyro_indio_dev);
+err_register_device_uncal_gyro:
+       pr_err("[SSP]: failed to register uncal gyro device\n");
+       ssp_iio_unconfigure_ring(data->uncal_gyro_indio_dev);
+err_config_ring_uncal_gyro:
+       pr_err("[SSP]: failed to configure uncal gyro ring buffer\n");
+       iio_device_free(data->uncal_gyro_indio_dev);
+err_alloc_uncal_gyro:
+       pr_err("[SSP]: failed to allocate memory for iio uncal gyro device\n");
+       iio_device_unregister(data->gyro_indio_dev);
+err_register_device_gyro:
+       pr_err("[SSP]: failed to register gyro device\n");
+       ssp_iio_unconfigure_ring(data->gyro_indio_dev);
+err_config_ring_gyro:
+       pr_err("[SSP]: failed to configure gyro ring buffer\n");
+       iio_device_free(data->gyro_indio_dev);
+err_alloc_gyro:
+       pr_err("[SSP]: failed to allocate memory for iio gyro device\n");
+       iio_device_unregister(data->accel_indio_dev);
+err_register_device_accel:
+       pr_err("[SSP]: failed to register accel device\n");
+       ssp_iio_unconfigure_ring(data->accel_indio_dev);
+err_config_ring_accel:
+       pr_err("[SSP]: failed to configure accel ring buffer\n");
+       iio_device_free(data->accel_indio_dev);
+err_alloc_accel:
+       pr_err("[SSP]: failed to allocate memory for iio accel device\n");
+       return ERROR;
+}
+
+void remove_input_dev(struct ssp_data *data)
+{
+       input_unregister_device(data->gesture_input_dev);
+       input_unregister_device(data->light_input_dev);
+       input_unregister_device(data->prox_input_dev);
+       input_unregister_device(data->temp_humi_input_dev);
+       input_unregister_device(data->sig_motion_input_dev);
+       input_unregister_device(data->step_cnt_input_dev);
+       input_unregister_device(data->meta_input_dev);
+}
diff --git a/drivers/sensors/brcm/ssp_misc.c b/drivers/sensors/brcm/ssp_misc.c
new file mode 100644 (file)
index 0000000..60dadff
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ *  Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+
+#define        SHAKE_ON        1
+#define        SHAKE_OFF       2
+
+struct remove_af_noise {
+       void *af_pdata;
+       int16_t (*af_func)(void *, bool);
+};
+
+static struct remove_af_noise af_sensor;
+
+int remove_af_noise_register(struct remove_af_noise *af_cam)
+{
+       if (af_cam->af_pdata)
+               af_sensor.af_pdata = af_cam->af_pdata;
+
+       if (af_cam->af_func)
+               af_sensor.af_func = af_cam->af_func;
+
+       if (!af_cam->af_pdata || !af_cam->af_func) {
+               ssp_dbg("[SSP]: %s - no af struct\n", __func__);
+               return ERROR;
+       }
+
+       return 0;
+}
+EXPORT_SYMBOL(remove_af_noise_register);
+
+void remove_af_noise_unregister(struct remove_af_noise *af_cam)
+{
+       af_sensor.af_pdata = NULL;
+       af_sensor.af_func = NULL;
+}
+EXPORT_SYMBOL(remove_af_noise_unregister);
+
+void report_shake_cam_data(struct ssp_data *data,
+       struct sensor_value *shake_cam_data)
+{
+       data->buf[SHAKE_CAM].x = shake_cam_data->x;
+
+       ssp_dbg("[SSP]: %s - shake = %d\n", __func__,
+               (char)data->buf[SHAKE_CAM].x);
+
+       if (likely(af_sensor.af_pdata && af_sensor.af_func)) {
+               if ((char)data->buf[SHAKE_CAM].x == SHAKE_ON)
+                       af_sensor.af_func(af_sensor.af_pdata, true);
+               else if ((char)data->buf[SHAKE_CAM].x == SHAKE_OFF)
+                       af_sensor.af_func(af_sensor.af_pdata, false);
+       } else {
+               ssp_dbg("[SSP]: %s - no af_func\n", __func__);
+       }
+}
diff --git a/drivers/sensors/brcm/ssp_sensorhub.c b/drivers/sensors/brcm/ssp_sensorhub.c
new file mode 100644 (file)
index 0000000..70d033f
--- /dev/null
@@ -0,0 +1,714 @@
+/*
+ *  Copyright (C) 2013, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#include "ssp_sensorhub.h"
+
+static void ssp_sensorhub_log(const char *func_name,
+                               const char *data, int length)
+{
+       char buf[6];
+       char *log_str;
+       int log_size;
+       int i;
+
+       if (likely(length <= BIG_DATA_SIZE))
+               log_size = length;
+       else
+               log_size = PRINT_TRUNCATE * 2 + 1;
+
+       log_size = sizeof(buf) * log_size + 1;
+       log_str = kzalloc(log_size, GFP_ATOMIC);
+       if (unlikely(!log_str)) {
+               sensorhub_err("allocate memory for data log err");
+               return;
+       }
+
+       for (i = 0; i < length; i++) {
+               if (length < BIG_DATA_SIZE ||
+                       i < PRINT_TRUNCATE || i >= length - PRINT_TRUNCATE) {
+                       snprintf(buf, sizeof(buf), "%d", (signed char)data[i]);
+                       strlcat(log_str, buf, log_size);
+               }
+               if (length < BIG_DATA_SIZE ||
+                       i < PRINT_TRUNCATE || i >= length - PRINT_TRUNCATE) {
+                       if (i < length - 1)
+                               strlcat(log_str, ", ", log_size);
+               }
+               if (length > BIG_DATA_SIZE && i == PRINT_TRUNCATE)
+                       strlcat(log_str, "..., ", log_size);
+       }
+
+       pr_info("[SSP]: %s - %s (%d)", func_name, log_str, length);
+       kfree(log_str);
+}
+
+static int ssp_sensorhub_send_big_data(struct ssp_sensorhub_data *hub_data,
+                                       const char *buf, int count)
+{
+       int length = count - 3;
+       int ret = 0;
+
+       /* only support voice service for the moment */
+       if (buf[1] != TYPE_WAKE_UP_VOICE_SERVICE) {
+               sensorhub_err("not voice service(%d)", buf[1]);
+               return -EINVAL;
+       }
+
+       /* am or grammer data? */
+       if (buf[2] != TYPE_WAKE_UP_VOICE_SOUND_SOURCE_AM &&
+               buf[2] != TYPE_WAKE_UP_VOICE_SOUND_SOURCE_GRAMMER) {
+               sensorhub_err("voice data type err(%d)", buf[2]);
+               return -EINVAL;
+       }
+
+       hub_data->big_send_events.library_data
+               = kzalloc(length * sizeof(char), GFP_KERNEL);
+       if (unlikely(!hub_data->big_send_events.library_data)) {
+               sensorhub_err("allocate memory for big library err");
+               return -ENOMEM;
+       }
+
+       memcpy(hub_data->big_send_events.library_data, buf+3, length);
+       hub_data->big_send_events.library_length = length;
+
+       /* trigger big data transfer */
+       ret = set_big_data_start(hub_data->ssp_data, buf[2]+1, length);
+       if (ret != SUCCESS) {
+               sensorhub_err("set_big_data_start err(%d)", ret);
+               goto exit;
+       }
+
+       /* wait until write operation is done */
+       ret = wait_for_completion_timeout(&hub_data->big_write_done,
+               COMPLETION_TIMEOUT + 1*HZ);
+       if (unlikely(!ret)) {
+               sensorhub_err("wait timed out");
+               ret = -EBUSY;
+       } else if (unlikely(ret < 0)) {
+               sensorhub_err("wait for completion err(%d)", ret);
+               ret = -EIO;
+       }
+
+exit:
+       kfree(hub_data->big_send_events.library_data);
+       return !ret ? ret + 1 : ret;
+}
+
+static int ssp_sensorhub_send_cmd(struct ssp_sensorhub_data *hub_data,
+                                       const char *buf, int count)
+{
+       int ret = 0;
+
+       if (buf[2] < MSG2SSP_AP_STATUS_WAKEUP ||
+               buf[2] >= MSG2SSP_AP_TEMPHUMIDITY_CAL_DONE) {
+               sensorhub_err("MSG2SSP_INST_LIB_NOTI err(%d)", buf[2]);
+               return -EINVAL;
+       }
+
+       ret = ssp_send_cmd(hub_data->ssp_data, buf[2], 0);
+
+       if (buf[2] == MSG2SSP_AP_STATUS_WAKEUP ||
+               buf[2] == MSG2SSP_AP_STATUS_SLEEP)
+               hub_data->ssp_data->uLastAPState = buf[2];
+
+       if (buf[2] == MSG2SSP_AP_STATUS_SUSPEND ||
+               buf[2] == MSG2SSP_AP_STATUS_RESUME)
+               hub_data->ssp_data->uLastResumeState = buf[2];
+
+       return ret;
+}
+
+static int ssp_sensorhub_send_instruction(struct ssp_sensorhub_data *hub_data,
+                                       const char *buf, int count)
+{
+       unsigned char instruction = buf[0];
+
+       if (buf[0] == MSG2SSP_INST_LIBRARY_REMOVE)
+               instruction = REMOVE_LIBRARY;
+       else if (buf[0] == MSG2SSP_INST_LIBRARY_ADD)
+               instruction = ADD_LIBRARY;
+
+       return send_instruction(hub_data->ssp_data, instruction,
+               (unsigned char)buf[1], (unsigned char *)(buf+2), count-2);
+}
+
+static ssize_t ssp_sensorhub_write(struct file *file, const char __user *buf,
+                               size_t count, loff_t *pos)
+{
+       struct ssp_sensorhub_data *hub_data
+               = container_of(file->private_data,
+                       struct ssp_sensorhub_data, sensorhub_device);
+       int ret = 0;
+
+       if (unlikely(count < 2)) {
+               sensorhub_err("library data length err");
+               return -EINVAL;
+       }
+
+       ssp_sensorhub_log(__func__, buf, count);
+
+       if (unlikely(hub_data->ssp_data->bSspShutdown)) {
+               sensorhub_err("stop sending library data(shutdown)");
+               return -EBUSY;
+       }
+
+       if (buf[0] == MSG2SSP_INST_LIB_DATA && count >= BIG_DATA_SIZE)
+               ret = ssp_sensorhub_send_big_data(hub_data, buf, count);
+       else if (buf[0] == MSG2SSP_INST_LIB_NOTI)
+               ret = ssp_sensorhub_send_cmd(hub_data, buf, count);
+       else
+               ret = ssp_sensorhub_send_instruction(hub_data, buf, count);
+
+       if (unlikely(ret <= 0)) {
+               sensorhub_err("send library data err(%d)", ret);
+               /* i2c transfer fail */
+               if (ret == ERROR)
+                       return -EIO;
+               /* i2c transfer done but no ack from MCU */
+               else if (ret == FAIL)
+                       return -EAGAIN;
+               else
+                       return ret;
+       }
+
+       return count;
+}
+
+static ssize_t ssp_sensorhub_read(struct file *file, char __user *buf,
+                               size_t count, loff_t *pos)
+{
+       struct ssp_sensorhub_data *hub_data
+               = container_of(file->private_data,
+                       struct ssp_sensorhub_data, sensorhub_device);
+       struct sensorhub_event *event;
+       int retries = MAX_DATA_COPY_TRY;
+       int length = 0;
+       int ret = 0;
+
+       spin_lock_bh(&hub_data->sensorhub_lock);
+       if (unlikely(kfifo_is_empty(&hub_data->fifo))) {
+               sensorhub_info("no library data");
+               goto err;
+       }
+
+       /* first in first out */
+       ret = kfifo_out_peek(&hub_data->fifo, &event, sizeof(void *));
+       if (unlikely(!ret)) {
+               sensorhub_err("kfifo out peek err(%d)", ret);
+               ret = EIO;
+               goto err;
+       }
+
+       length = event->library_length;
+
+       while (retries--) {
+               ret = copy_to_user(buf,
+                       event->library_data, event->library_length);
+               if (likely(!ret))
+                       break;
+       }
+       if (unlikely(ret)) {
+               sensorhub_err("read library data err(%d)", ret);
+               goto err;
+       }
+
+       ssp_sensorhub_log(__func__,
+               event->library_data, event->library_length);
+
+       /* remove first event from the list */
+       ret = kfifo_out(&hub_data->fifo, &event, sizeof(void *));
+       if (unlikely(ret != sizeof(void *))) {
+               sensorhub_err("kfifo out err(%d)", ret);
+               ret = EIO;
+               goto err;
+       }
+
+       complete(&hub_data->read_done);
+       spin_unlock_bh(&hub_data->sensorhub_lock);
+
+       return length;
+
+err:
+       spin_unlock_bh(&hub_data->sensorhub_lock);
+       return ret ? -ret : 0;
+}
+
+static long ssp_sensorhub_ioctl(struct file *file, unsigned int cmd,
+                               unsigned long arg)
+{
+       struct ssp_sensorhub_data *hub_data
+               = container_of(file->private_data,
+                       struct ssp_sensorhub_data, sensorhub_device);
+       void __user *argp = (void __user *)arg;
+       int retries = MAX_DATA_COPY_TRY;
+       int length = hub_data->big_events.library_length;
+       int ret = 0;
+
+       switch (cmd) {
+       case IOCTL_READ_BIG_CONTEXT_DATA:
+               if (unlikely(!hub_data->big_events.library_data
+                       || !hub_data->big_events.library_length)) {
+                       sensorhub_info("no big library data");
+                       return 0;
+               }
+
+               while (retries--) {
+                       ret = copy_to_user(argp,
+                               hub_data->big_events.library_data,
+                               hub_data->big_events.library_length);
+                       if (likely(!ret))
+                               break;
+               }
+               if (unlikely(ret)) {
+                       sensorhub_err("read big library data err(%d)", ret);
+                       return -ret;
+               }
+
+               ssp_sensorhub_log(__func__,
+                       hub_data->big_events.library_data,
+                       hub_data->big_events.library_length);
+
+               hub_data->is_big_event = false;
+               kfree(hub_data->big_events.library_data);
+               hub_data->big_events.library_length = 0;
+               complete(&hub_data->big_read_done);
+               break;
+
+       default:
+               sensorhub_err("ioctl cmd err(%d)", cmd);
+               return -EINVAL;
+       }
+
+       return length;
+}
+
+static struct file_operations ssp_sensorhub_fops = {
+       .owner = THIS_MODULE,
+       .open = nonseekable_open,
+       .write = ssp_sensorhub_write,
+       .read = ssp_sensorhub_read,
+       .unlocked_ioctl = ssp_sensorhub_ioctl,
+};
+
+void ssp_sensorhub_report_notice(struct ssp_data *ssp_data, char notice)
+{
+       struct ssp_sensorhub_data *hub_data = ssp_data->hub_data;
+
+       input_report_rel(hub_data->sensorhub_input_dev, NOTICE, notice);
+       input_sync(hub_data->sensorhub_input_dev);
+
+       if (notice == MSG2SSP_AP_STATUS_WAKEUP)
+               sensorhub_info("wake up");
+       else if (notice == MSG2SSP_AP_STATUS_SLEEP)
+               sensorhub_info("sleep");
+       else if (notice == MSG2SSP_AP_STATUS_RESET)
+               sensorhub_info("reset");
+       else
+               sensorhub_err("invalid notice(0x%x)", notice);
+}
+
+static void ssp_sensorhub_report_library(struct ssp_sensorhub_data *hub_data)
+{
+       input_report_rel(hub_data->sensorhub_input_dev, DATA, DATA);
+       input_sync(hub_data->sensorhub_input_dev);
+       wake_lock_timeout(&hub_data->sensorhub_wake_lock, WAKE_LOCK_TIMEOUT);
+}
+
+static void ssp_sensorhub_report_big_library(
+                       struct ssp_sensorhub_data *hub_data)
+{
+       input_report_rel(hub_data->sensorhub_input_dev, BIG_DATA, BIG_DATA);
+       input_sync(hub_data->sensorhub_input_dev);
+       wake_lock_timeout(&hub_data->sensorhub_wake_lock, WAKE_LOCK_TIMEOUT);
+}
+
+static int ssp_sensorhub_list(struct ssp_sensorhub_data *hub_data,
+                               char *dataframe, int length)
+{
+       struct sensorhub_event *event;
+       int ret = 0;
+
+       if (unlikely(length <= 0 || length >= PAGE_SIZE)) {
+               sensorhub_err("library length err(%d)", length);
+               return -EINVAL;
+       }
+
+       ssp_sensorhub_log(__func__, dataframe, length);
+
+       /* overwrite new event if list is full */
+       if (unlikely(kfifo_is_full(&hub_data->fifo))) {
+               ret = kfifo_out(&hub_data->fifo, &event, sizeof(void *));
+               if (unlikely(ret != sizeof(void *))) {
+                       sensorhub_err("kfifo out err(%d)", ret);
+                       return -EIO;
+               }
+               sensorhub_info("overwrite event");
+       }
+
+       /* allocate memory for new event */
+       kfree(hub_data->events[hub_data->event_number].library_data);
+       hub_data->events[hub_data->event_number].library_data
+               = kzalloc(length * sizeof(char), GFP_ATOMIC);
+       if (unlikely(!hub_data->events[hub_data->event_number].library_data)) {
+               sensorhub_err("allocate memory for library err");
+               return -ENOMEM;
+       }
+
+       /* copy new event into memory */
+       memcpy(hub_data->events[hub_data->event_number].library_data,
+               dataframe, length);
+       hub_data->events[hub_data->event_number].library_length = length;
+
+       /* add new event into the end of list */
+       event = &hub_data->events[hub_data->event_number];
+       ret = kfifo_in(&hub_data->fifo, &event, sizeof(void *));
+       if (unlikely(ret != sizeof(void *))) {
+               sensorhub_err("kfifo in err(%d)", ret);
+               return -EIO;
+       }
+
+       /* not to overflow max list capacity */
+       if (hub_data->event_number++ >= LIST_SIZE - 1)
+               hub_data->event_number = 0;
+
+       return kfifo_len(&hub_data->fifo) / sizeof(void *);
+}
+
+int ssp_sensorhub_handle_data(struct ssp_data *ssp_data, char *dataframe,
+                               int start, int end)
+{
+       struct ssp_sensorhub_data *hub_data = ssp_data->hub_data;
+       int ret = 0;
+
+       /* add new sensorhub event into list */
+       spin_lock_bh(&hub_data->sensorhub_lock);
+       ret = ssp_sensorhub_list(hub_data, dataframe+start, end-start);
+       spin_unlock_bh(&hub_data->sensorhub_lock);
+
+       if (ret < 0)
+               sensorhub_err("sensorhub list err(%d)", ret);
+       else
+               wake_up(&hub_data->sensorhub_wq);
+
+       return ret;
+}
+
+static int ssp_sensorhub_thread(void *arg)
+{
+       struct ssp_sensorhub_data *hub_data = (struct ssp_sensorhub_data *)arg;
+       int ret = 0;
+
+       while (likely(!kthread_should_stop())) {
+               /* run thread if list is not empty */
+               wait_event_interruptible(hub_data->sensorhub_wq,
+                               kthread_should_stop() ||
+                               !kfifo_is_empty(&hub_data->fifo) ||
+                               hub_data->is_big_event);
+
+               /* exit thread if kthread should stop */
+               if (unlikely(kthread_should_stop())) {
+                       sensorhub_info("kthread_stop()");
+                       break;
+               }
+
+               if (likely(!kfifo_is_empty(&hub_data->fifo))) {
+                       /* report sensorhub event to user */
+                       ssp_sensorhub_report_library(hub_data);
+                       /* wait until transfer finished */
+                       ret = wait_for_completion_timeout(
+                               &hub_data->read_done, COMPLETION_TIMEOUT);
+                       if (unlikely(!ret))
+                               sensorhub_err("wait for read timed out");
+                       else if (unlikely(ret < 0))
+                               sensorhub_err("read completion err(%d)", ret);
+               }
+
+               if (unlikely(hub_data->is_big_event)) {
+                       /* report big sensorhub event to user */
+                       ssp_sensorhub_report_big_library(hub_data);
+                       /* wait until transfer finished */
+                       ret = wait_for_completion_timeout(
+                               &hub_data->big_read_done, COMPLETION_TIMEOUT);
+                       if (unlikely(!ret))
+                               sensorhub_err("wait for big read timed out");
+                       else if (unlikely(ret < 0))
+                               sensorhub_err("big read completion err(%d)",
+                                       ret);
+               }
+       }
+
+       return 0;
+}
+
+void ssp_read_big_library_task(struct work_struct *work)
+{
+       struct ssp_big *big = container_of(work, struct ssp_big, work);
+       struct ssp_sensorhub_data *hub_data = big->data->hub_data;
+       struct ssp_msg *msg;
+       int buf_len, residue = big->length, ret = 0, index = 0, pos = 0;
+
+       hub_data->big_events.library_length = big->length;
+       hub_data->big_events.library_data = kzalloc(big->length, GFP_KERNEL);
+
+       while (residue > 0) {
+               buf_len = residue > DATA_PACKET_SIZE
+                       ? DATA_PACKET_SIZE : residue;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               msg->cmd = MSG2SSP_AP_GET_BIG_DATA;
+               msg->length = buf_len;
+               msg->options = AP2HUB_READ | (index++ << SSP_INDEX);
+               msg->data = big->addr;
+               msg->buffer = hub_data->big_events.library_data + pos;
+               msg->free_buffer = 0;
+
+               ret = ssp_spi_sync(big->data, msg, 1000);
+               if (ret != SUCCESS) {
+                       sensorhub_err("read big data err(%d)", ret);
+                       break;
+               }
+
+               pos += buf_len;
+               residue -= buf_len;
+
+               sensorhub_info("read big data (%5d / %5d)", pos, big->length);
+       }
+
+       hub_data->is_big_event = true;
+       wake_up(&hub_data->sensorhub_wq);
+       kfree(big);
+}
+
+void ssp_send_big_library_task(struct work_struct *work)
+{
+       struct ssp_big *big = container_of(work, struct ssp_big, work);
+       struct ssp_sensorhub_data *hub_data = big->data->hub_data;
+       struct ssp_msg *msg;
+       int buf_len, residue = big->length, ret = 0, index = 0, pos = 0;
+
+       while (residue > 0) {
+               buf_len = residue > DATA_PACKET_SIZE
+                       ? DATA_PACKET_SIZE : residue;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               msg->cmd = MSG2SSP_AP_SET_BIG_DATA;
+               msg->length = buf_len;
+               msg->options = AP2HUB_WRITE | (index++ << SSP_INDEX);
+               msg->data = big->addr;
+               msg->buffer = hub_data->big_send_events.library_data + pos;
+               msg->free_buffer = 0;
+
+               ret = ssp_spi_sync(big->data, msg, 1000);
+               if (ret != SUCCESS) {
+                       sensorhub_err("send big data err(%d)", ret);
+                       break;
+               }
+
+               pos += buf_len;
+               residue -= buf_len;
+
+               sensorhub_info("send big data (%5d / %5d)", pos, big->length);
+       }
+
+       complete(&hub_data->big_write_done);
+       kfree(big);
+}
+
+void ssp_pcm_dump_task(struct work_struct *work)
+{
+       struct ssp_big *big = container_of(work, struct ssp_big, work);
+       struct ssp_sensorhub_data *hub_data = big->data->hub_data;
+       struct ssp_msg *msg;
+       int buf_len, residue = big->length, ret = 0, index = 0;
+
+       mm_segment_t old_fs;
+       struct file *voice_filp;
+       char pcm_path[BIN_PATH_SIZE+1];
+       char *buff;
+
+       old_fs = get_fs();
+       set_fs(KERNEL_DS);
+
+       snprintf(pcm_path, BIN_PATH_SIZE,
+               "/data/voice%d.pcm", hub_data->pcm_cnt);
+       voice_filp = filp_open(pcm_path, O_RDWR | O_CREAT | O_APPEND, 0666);
+       if (IS_ERR(voice_filp)) {
+               sensorhub_err("open pcm dump file err");
+               goto exit;
+       }
+
+       buf_len = big->length > DATA_PACKET_SIZE
+                       ? DATA_PACKET_SIZE : big->length;
+       buff = kzalloc(buf_len, GFP_KERNEL);
+
+       while (residue > 0) {
+               buf_len = residue > DATA_PACKET_SIZE
+                       ? DATA_PACKET_SIZE : residue;
+
+               msg = kzalloc(sizeof(*msg), GFP_KERNEL);
+               msg->cmd = MSG2SSP_AP_GET_BIG_DATA;
+               msg->length = buf_len;
+               msg->options = AP2HUB_READ | (index++ << SSP_INDEX);
+               msg->data = big->addr;
+               msg->buffer = buff;
+               msg->free_buffer = 0;
+
+               ret = ssp_spi_sync(big->data, msg, 1000);
+               if (ret != SUCCESS) {
+                       sensorhub_err("receive pcm dump err(%d)", ret);
+                       break;
+               }
+
+               ret = voice_filp->f_op->write(voice_filp, (char __user *)buff,
+                       buf_len, &voice_filp->f_pos);
+               if (ret < 0) {
+                       sensorhub_err("write pcm dump to file err(%d)", ret);
+                       break;
+               }
+
+               residue -= buf_len;
+               sensorhub_info("write pcm dump...");
+       }
+
+       filp_close(voice_filp, current->files);
+       kfree(buff);
+
+exit:
+       set_fs(old_fs);
+       kfree(big);
+}
+
+int ssp_sensorhub_pcm_dump(struct ssp_sensorhub_data *hub_data)
+{
+       hub_data->pcm_cnt++;
+       return set_big_data_start(hub_data->ssp_data, BIG_TYPE_VOICE_PCM, 0);
+}
+
+int ssp_sensorhub_initialize(struct ssp_data *ssp_data)
+{
+       struct ssp_sensorhub_data *hub_data;
+       int ret;
+
+       /* allocate memory for sensorhub data */
+       hub_data = kzalloc(sizeof(*hub_data), GFP_KERNEL);
+       if (!hub_data) {
+               sensorhub_err("allocate memory for sensorhub data err");
+               ret = -ENOMEM;
+               goto exit;
+       }
+       hub_data->ssp_data = ssp_data;
+       ssp_data->hub_data = hub_data;
+
+       /* init wakelock, list, waitqueue, completion and spinlock */
+       wake_lock_init(&hub_data->sensorhub_wake_lock, WAKE_LOCK_SUSPEND,
+                       "ssp_sensorhub_wake_lock");
+       init_waitqueue_head(&hub_data->sensorhub_wq);
+       init_completion(&hub_data->read_done);
+       init_completion(&hub_data->big_read_done);
+       init_completion(&hub_data->big_write_done);
+       spin_lock_init(&hub_data->sensorhub_lock);
+
+       /* allocate sensorhub input device */
+       hub_data->sensorhub_input_dev = input_allocate_device();
+       if (!hub_data->sensorhub_input_dev) {
+               sensorhub_err("allocate sensorhub input device err");
+               ret = -ENOMEM;
+               goto err_input_allocate_device_sensorhub;
+       }
+
+       /* set sensorhub input device */
+       input_set_drvdata(hub_data->sensorhub_input_dev, hub_data);
+       hub_data->sensorhub_input_dev->name = "ssp_context";
+       input_set_capability(hub_data->sensorhub_input_dev, EV_REL, DATA);
+       input_set_capability(hub_data->sensorhub_input_dev, EV_REL, BIG_DATA);
+       input_set_capability(hub_data->sensorhub_input_dev, EV_REL, NOTICE);
+
+       /* register sensorhub input device */
+       ret = input_register_device(hub_data->sensorhub_input_dev);
+       if (ret < 0) {
+               sensorhub_err("register sensorhub input device err(%d)", ret);
+               input_free_device(hub_data->sensorhub_input_dev);
+               goto err_input_register_device_sensorhub;
+       }
+
+       /* register sensorhub misc device */
+       hub_data->sensorhub_device.minor = MISC_DYNAMIC_MINOR;
+       hub_data->sensorhub_device.name = "ssp_sensorhub";
+       hub_data->sensorhub_device.fops = &ssp_sensorhub_fops;
+
+       ret = misc_register(&hub_data->sensorhub_device);
+       if (ret < 0) {
+               sensorhub_err("register sensorhub misc device err(%d)", ret);
+               goto err_misc_register;
+       }
+
+       /* allocate fifo */
+       ret = kfifo_alloc(&hub_data->fifo,
+               sizeof(void *) * LIST_SIZE, GFP_KERNEL);
+       if (ret) {
+               sensorhub_err("kfifo allocate err(%d)", ret);
+               goto err_kfifo_alloc;
+       }
+
+       /* create and run sensorhub thread */
+       hub_data->sensorhub_task = kthread_run(ssp_sensorhub_thread,
+                               (void *)hub_data, "ssp_sensorhub_thread");
+       if (IS_ERR(hub_data->sensorhub_task)) {
+               ret = PTR_ERR(hub_data->sensorhub_task);
+               goto err_kthread_run;
+       }
+
+       return 0;
+
+err_kthread_run:
+       kfifo_free(&hub_data->fifo);
+err_kfifo_alloc:
+       misc_deregister(&hub_data->sensorhub_device);
+err_misc_register:
+       input_unregister_device(hub_data->sensorhub_input_dev);
+err_input_register_device_sensorhub:
+err_input_allocate_device_sensorhub:
+       complete_all(&hub_data->big_write_done);
+       complete_all(&hub_data->big_read_done);
+       complete_all(&hub_data->read_done);
+       wake_lock_destroy(&hub_data->sensorhub_wake_lock);
+       kfree(hub_data);
+exit:
+       return ret;
+}
+
+void ssp_sensorhub_remove(struct ssp_data *ssp_data)
+{
+       struct ssp_sensorhub_data *hub_data = ssp_data->hub_data;
+
+       ssp_sensorhub_fops.write = NULL;
+       ssp_sensorhub_fops.read = NULL;
+       ssp_sensorhub_fops.unlocked_ioctl = NULL;
+
+       kthread_stop(hub_data->sensorhub_task);
+       kfifo_free(&hub_data->fifo);
+       misc_deregister(&hub_data->sensorhub_device);
+       input_unregister_device(hub_data->sensorhub_input_dev);
+       complete_all(&hub_data->big_write_done);
+       complete_all(&hub_data->big_read_done);
+       complete_all(&hub_data->read_done);
+       wake_lock_destroy(&hub_data->sensorhub_wake_lock);
+       kfree(hub_data);
+       sensorhub_err("DONE");
+}
+
+MODULE_DESCRIPTION("Seamless Sensor Platform(SSP) sensorhub driver");
+MODULE_AUTHOR("Samsung Electronics");
+MODULE_LICENSE("GPL");
diff --git a/drivers/sensors/brcm/ssp_sensorhub.h b/drivers/sensors/brcm/ssp_sensorhub.h
new file mode 100644 (file)
index 0000000..742806d
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ *  Copyright (C) 2013, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+
+#ifndef __SSP_SENSORHUB__
+#define __SSP_SENSORHUB__
+
+#include <linux/completion.h>
+#include <linux/kfifo.h>
+#include <linux/kthread.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include "ssp.h"
+
+/* 'LIST_SIZE' should be be rounded-up to a power of 2 */
+#define LIST_SIZE                      4
+#define MAX_DATA_COPY_TRY              2
+#define WAKE_LOCK_TIMEOUT              (3*HZ)
+#define COMPLETION_TIMEOUT             (2*HZ)
+#define DATA                           REL_RX
+#define BIG_DATA                       REL_RY
+#define NOTICE                         REL_RZ
+#define BIG_DATA_SIZE                  256
+#define PRINT_TRUNCATE                 6
+#define BIN_PATH_SIZE                  100
+
+#define SENSORHUB_IOCTL_MAGIC          'S'
+#define IOCTL_READ_BIG_CONTEXT_DATA    _IOR(SENSORHUB_IOCTL_MAGIC, 3, char *)
+
+#define sensorhub_info(str, args...) \
+       pr_info("[SSP]: %s - " str, __func__, ##args)
+#define sensorhub_debug(str, args...) \
+       pr_debug("[SSP]: %s - " str, __func__, ##args)
+#define sensorhub_err(str, args...) \
+       pr_err("[SSP]: %s - " str, __func__, ##args)
+
+
+struct sensorhub_event {
+       char *library_data;
+       int library_length;
+};
+
+struct ssp_sensorhub_data {
+       struct ssp_data *ssp_data;
+       struct input_dev *sensorhub_input_dev;
+       struct task_struct *sensorhub_task;
+       struct miscdevice sensorhub_device;
+       struct wake_lock sensorhub_wake_lock;
+       struct completion read_done;
+       struct completion big_read_done;
+       struct completion big_write_done;
+       struct sensorhub_event events[LIST_SIZE];
+       struct sensorhub_event big_events;
+       struct sensorhub_event big_send_events;
+       struct kfifo fifo;
+       bool is_big_event;
+       int event_number;
+       int pcm_cnt;
+       wait_queue_head_t sensorhub_wq;
+       spinlock_t sensorhub_lock;
+};
+
+int ssp_sensorhub_pcm_dump(struct ssp_sensorhub_data *hub_data);
+void ssp_sensorhub_report_notice(struct ssp_data *ssp_data, char notice);
+int ssp_sensorhub_handle_data(struct ssp_data *ssp_data, char *dataframe,
+                               int start, int end);
+int ssp_sensorhub_initialize(struct ssp_data *ssp_data);
+void ssp_sensorhub_remove(struct ssp_data *ssp_data);
+
+#endif
diff --git a/drivers/sensors/brcm/ssp_spi.c b/drivers/sensors/brcm/ssp_spi.c
new file mode 100644 (file)
index 0000000..7381a3d
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+ * driver for Android SensorHub SPI
+ *
+ * Copyright (c) 2013, Samsung Electronics. All rights reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/spi/spi.h>
+#include <linux/delay.h>
+
+#if defined(DEBUG_SSP_SPI)
+#define ssp_log(fmt, arg...)   \
+       do {                                    \
+               printk(KERN_ERR "[%s:%d] " fmt ,        \
+                       __func__, __LINE__, ##arg);             \
+       }                                                       \
+       while (0)
+#else
+#define ssp_log(fmt, arg...)
+#endif
+
+
+/* If AP can't change the endian to BIG */
+/* for s5c73m ISP, this option must is required.*/
+/* This option depends on SPI_DMA_MODE */
+/* in camera driver file*/
+/*#define CHANGE_ENDIAN        */
+
+int ssp_spi_write_sync(struct spi_device *spi, const u8 *addr, const int len)
+{
+       int ret;
+#if defined(CHANGE_ENDIAN)
+       u8 buf[8] = {0};
+#endif
+
+       struct spi_message msg;
+
+       struct spi_transfer xfer = {
+               .len = len,
+#if !defined(CHANGE_ENDIAN)
+               .tx_buf = addr,
+               /*QCTK ALRAN QUP_CONFIG 0-4 bits BIG ENDIAN*/
+               .bits_per_word = 8,
+#else
+               .tx_buf = buf,
+#endif
+       };
+
+#if defined(CHANGE_ENDIAN)
+       buf[0] = addr[3];
+       buf[1] = addr[2];
+       buf[2] = addr[1];
+       buf[3] = addr[0];
+       buf[4] = addr[7];
+       buf[5] = addr[6];
+       buf[6] = addr[5];
+       buf[7] = addr[4];
+#endif
+
+       spi_message_init(&msg);
+       spi_message_add_tail(&xfer, &msg);
+
+       ret = spi_sync(spi, &msg);
+
+       if (ret < 0)
+               ssp_log("error %d\n", ret);
+
+       return ret;
+}
+
+
+int ssp_spi_read_sync(struct spi_device *spi, u8 *in_buf, size_t len)
+{
+       int ret;
+       u8 read_out_buf[2];
+
+       struct spi_message msg;
+       struct spi_transfer xfer = {
+               .tx_buf = read_out_buf,
+               .rx_buf = in_buf,
+               .len    = len,
+               .cs_change = 0,
+       };
+
+       spi_message_init(&msg);
+
+       spi_message_add_tail(&xfer, &msg);
+
+       ret = spi_sync(spi, &msg);
+
+       if (ret < 0)
+               ssp_log("%s - error %d\n",
+                               __func__, ret);
+
+       return ret;
+}
+
+
+int ssp_spi_sync(struct spi_device *spi, u8 *out_buf,
+       size_t out_len, u8 *in_buf)
+{
+       int ret;
+
+       struct spi_message msg;
+       struct spi_transfer xfer = {
+               .tx_buf = out_buf,
+               .rx_buf = in_buf,
+               .len    = out_len,
+               .cs_change = 0,
+       };
+
+       spi_message_init(&msg);
+
+       spi_message_add_tail(&xfer, &msg);
+
+       ret = spi_sync(spi, &msg);
+       ssp_log("%s - received %d\n", __func__, xfer.len);
+
+       if (ret < 0)
+               ssp_log("%s - error %d\n",
+                               __func__, ret);
+
+       return ret;
+}
+
+unsigned int g_flag_spirecv;
+void ssp_spi_async_complete(void *context)
+{
+       g_flag_spirecv = 1;
+}
+
+int ssp_spi_async(struct spi_device *spi,  u8 *out_buf,
+       size_t out_len, u8 *in_buf)
+{
+       int ret;
+
+       struct spi_message msg;
+       struct spi_transfer xfer = {
+               .tx_buf = out_buf,
+               .rx_buf = in_buf,
+               .len    = out_len,
+               .cs_change = 0,
+       };
+
+
+       spi_message_init(&msg);
+
+       spi_message_add_tail(&xfer, &msg);
+       msg.complete = ssp_spi_async_complete;
+
+       ret = spi_async(spi, &msg);
+
+       if (ret < 0)
+               ssp_log("%s - error %d\n",
+                               __func__, ret);
+
+       return ret;
+}
+
+
+
+
+int ssp_spi_read(struct spi_device *spi, u8 *buf, size_t len, const int rxSize)
+{
+       int k;
+       int ret = 0;
+       u8 temp_buf[4] = {0};
+       u32 count = len/rxSize;
+       u32 extra = len%rxSize;
+
+       for (k = 0; k < count; k++) {
+               ret = ssp_spi_read_sync(spi, &buf[rxSize*k], rxSize);
+               if (ret < 0) {
+                       ssp_log("%s - error %d\n",
+                               __func__, ret);
+                       return -EINVAL;
+               }
+       }
+
+       if (extra != 0) {
+               ret = ssp_spi_read_sync(spi, &buf[rxSize*k], extra);
+               if (ret < 0) {
+                       ssp_log("%s - error %d\n",
+                               __func__, ret);
+                       return -EINVAL;
+               }
+       }
+
+       for (k = 0; k < len-3; k += 4) {
+               memcpy(temp_buf, (char *)&buf[k], sizeof(temp_buf));
+               buf[k] = temp_buf[3];
+               buf[k+1] = temp_buf[2];
+               buf[k+2] = temp_buf[1];
+               buf[k+3] = temp_buf[0];
+       }
+
+       return 0;
+}
+
+int ssp_spi_write(struct spi_device *spi, const u8 *addr,
+       const int len, const int txSize)
+{
+       int i, j = 0;
+       int ret = 0;
+       u8 paddingData[8];
+       u32 count = len/txSize;
+       u32 extra = len%txSize;
+       ssp_log("Entered\n");
+       ssp_log("count = %d extra = %d\n", count, extra);
+
+       memset(paddingData, 0, sizeof(paddingData));
+
+       for (i = 0 ; i < count ; i++) {
+               ret = ssp_spi_write_sync(spi, &addr[j], txSize);
+               j += txSize;
+               if (ret < 0) {
+                       ssp_log("failed to write ssp_spi_write_sync\n");
+                       goto exit_err;
+               }
+               ssp_log("Delay!!!\n");
+               msleep(50);
+       }
+
+       if (extra) {
+               ret = ssp_spi_write_sync(spi, &addr[j], extra);
+               if (ret < 0) {
+                       ssp_log("failed to write ssp_spi_write_sync\n");
+                       goto exit_err;
+               }
+       }
+
+       for (i = 0; i < 4; i++) {
+               memset(paddingData, 0, sizeof(paddingData));
+               ret = ssp_spi_write_sync(spi, paddingData, 8);
+               if (ret < 0) {
+                       ssp_log("failed to write ssp_spi_write_sync\n");
+                       goto exit_err;
+               }
+       }
+       ssp_log("Finish!!\n");
+exit_err:
+       return ret;
+}
+
diff --git a/drivers/sensors/brcm/ssp_sysfs.c b/drivers/sensors/brcm/ssp_sysfs.c
new file mode 100644 (file)
index 0000000..c0cd582
--- /dev/null
@@ -0,0 +1,1020 @@
+/*
+ *  Copyright (C) 2012, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ */
+#include "ssp.h"
+#include <linux/math64.h>
+
+#define BATCH_IOCTL_MAGIC              0xFC
+
+struct batch_config {
+       int64_t timeout;
+       int64_t delay;
+       int flag;
+};
+
+/*************************************************************************/
+/* SSP data delay function                                              */
+/*************************************************************************/
+
+int get_msdelay(int64_t dDelayRate)
+{
+       /*
+        * If App request lower frequency then MaxDelay,
+        * Sensor have to work with MaxDelay.
+        */
+
+       if (dDelayRate > 200000000)
+               dDelayRate = 200000000;
+
+       return div_s64(dDelayRate, 1000000);
+}
+
+static void enable_sensor(struct ssp_data *data,
+       int iSensorType, int64_t dNewDelay)
+{
+       u8 uBuf[9];
+       unsigned int uNewEnable = 0;
+       s32 maxBatchReportLatency = 0;
+       s8 batchOptions = 0;
+       int64_t dTempDelay = data->adDelayBuf[iSensorType];
+       s32 dMsDelay = get_msdelay(dNewDelay);
+       int ret = 0;
+
+       data->adDelayBuf[iSensorType] = dNewDelay;
+       maxBatchReportLatency = data->batchLatencyBuf[iSensorType];
+       batchOptions = data->batchOptBuf[iSensorType];
+
+       switch (data->aiCheckStatus[iSensorType]) {
+       case ADD_SENSOR_STATE:
+               ssp_dbg("[SSP]: %s - add %u, New = %lldns\n",
+                        __func__, 1 << iSensorType, dNewDelay);
+
+               if (iSensorType == PROXIMITY_SENSOR) {
+                       get_proximity_threshold(data);
+                       proximity_open_calibration(data);
+                       set_proximity_threshold(data, data->uProxHiThresh,
+                               data->uProxLoThresh);
+               }
+
+               memcpy(&uBuf[0], &dMsDelay, 4);
+               memcpy(&uBuf[4], &maxBatchReportLatency, 4);
+               uBuf[8] = batchOptions;
+
+               if (iSensorType == TEMPERATURE_HUMIDITY_SENSOR &&
+                       dMsDelay == 10000)
+                       pr_info("[SSP] Skip Add Temphumidity Sensor\n");
+               else
+                       ret = send_instruction(data, ADD_SENSOR,
+                               iSensorType, uBuf, 9);
+               pr_info("[SSP], delay %d, timeout %d, flag=%d, ret%d\n",
+                       dMsDelay, maxBatchReportLatency, uBuf[8], ret);
+               if (ret <= 0) {
+                       uNewEnable =
+                               (unsigned int)atomic_read(&data->aSensorEnable)
+                               & (~(unsigned int)(1 << iSensorType));
+                       atomic_set(&data->aSensorEnable, uNewEnable);
+
+                       data->aiCheckStatus[iSensorType] = NO_SENSOR_STATE;
+                       break;
+               }
+
+               data->aiCheckStatus[iSensorType] = RUNNING_SENSOR_STATE;
+
+               break;
+       case RUNNING_SENSOR_STATE:
+               if (get_msdelay(dTempDelay)
+                       == get_msdelay(data->adDelayBuf[iSensorType]))
+                       break;
+
+               ssp_dbg("[SSP]: %s - Change %u, New = %lldns\n",
+                       __func__, 1 << iSensorType, dNewDelay);
+
+               memcpy(&uBuf[0], &dMsDelay, 4);
+               memcpy(&uBuf[4], &maxBatchReportLatency, 4);
+               uBuf[8] = batchOptions;
+               send_instruction(data, CHANGE_DELAY, iSensorType, uBuf, 9);
+
+               break;
+       default:
+               data->aiCheckStatus[iSensorType] = ADD_SENSOR_STATE;
+       }
+}
+
+static void change_sensor_delay(struct ssp_data *data,
+       int iSensorType, int64_t dNewDelay)
+{
+       u8 uBuf[9];
+       s32 maxBatchReportLatency = 0;
+       s8 batchOptions = 0;
+       int64_t dTempDelay = data->adDelayBuf[iSensorType];
+       s32 dMsDelay = get_msdelay(dNewDelay);
+
+       data->adDelayBuf[iSensorType] = dNewDelay;
+       data->batchLatencyBuf[iSensorType] = maxBatchReportLatency;
+       data->batchOptBuf[iSensorType] = batchOptions;
+
+       switch (data->aiCheckStatus[iSensorType]) {
+       case RUNNING_SENSOR_STATE:
+               if (get_msdelay(dTempDelay)
+                       == get_msdelay(data->adDelayBuf[iSensorType]))
+                       break;
+
+               ssp_dbg("[SSP]: %s - Change %u, New = %lldns\n",
+                       __func__, 1 << iSensorType, dNewDelay);
+
+               memcpy(&uBuf[0], &dMsDelay, 4);
+               memcpy(&uBuf[4], &maxBatchReportLatency, 4);
+               uBuf[8] = batchOptions;
+               send_instruction(data, CHANGE_DELAY, iSensorType, uBuf, 9);
+
+               break;
+       default:
+               break;
+       }
+}
+
+/*************************************************************************/
+/* SSP data enable function                                              */
+/*************************************************************************/
+
+static int ssp_remove_sensor(struct ssp_data *data,
+       unsigned int uChangedSensor, unsigned int uNewEnable)
+{
+       u8 uBuf[4];
+       int64_t dSensorDelay = data->adDelayBuf[uChangedSensor];
+
+       ssp_dbg("[SSP]: %s - remove sensor = %d, current state = %d\n",
+               __func__, (1 << uChangedSensor), uNewEnable);
+
+       data->adDelayBuf[uChangedSensor] = DEFUALT_POLLING_DELAY;
+       data->batchLatencyBuf[uChangedSensor] = 0;
+       data->batchOptBuf[uChangedSensor] = 0;
+
+       if (uChangedSensor == ORIENTATION_SENSOR) {
+               if (!(atomic_read(&data->aSensorEnable)
+                       & (1 << ACCELEROMETER_SENSOR))) {
+                       uChangedSensor = ACCELEROMETER_SENSOR;
+               } else {
+                       change_sensor_delay(data, ACCELEROMETER_SENSOR,
+                               data->adDelayBuf[ACCELEROMETER_SENSOR]);
+                       return 0;
+               }
+       } else if (uChangedSensor == ACCELEROMETER_SENSOR) {
+               if (atomic_read(&data->aSensorEnable)
+                       & (1 << ORIENTATION_SENSOR)) {
+                       change_sensor_delay(data, ORIENTATION_SENSOR,
+                               data->adDelayBuf[ORIENTATION_SENSOR]);
+                       return 0;
+               }
+       }
+
+       if (!data->bSspShutdown)
+               if (atomic_read(&data->aSensorEnable) & (1 << uChangedSensor)) {
+                       s32 dMsDelay = get_msdelay(dSensorDelay);
+                       memcpy(&uBuf[0], &dMsDelay, 4);
+
+                       send_instruction(data, REMOVE_SENSOR,
+                               uChangedSensor, uBuf, 4);
+               }
+       data->aiCheckStatus[uChangedSensor] = NO_SENSOR_STATE;
+
+       return 0;
+}
+
+/*************************************************************************/
+/* ssp Sysfs                                                             */
+/*************************************************************************/
+
+static ssize_t show_enable_irq(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       ssp_dbg("[SSP]: %s - %d\n", __func__, !data->bSspShutdown);
+
+       return sprintf(buf, "%d\n", !data->bSspShutdown);
+}
+
+static ssize_t set_enable_irq(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       u8 dTemp;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtou8(buf, 10, &dTemp) < 0)
+               return -1;
+
+       pr_info("[SSP] %s - %d start\n", __func__, dTemp);
+       if (dTemp) {
+               reset_mcu(data);
+               enable_debug_timer(data);
+       } else if (!dTemp) {
+               disable_debug_timer(data);
+               ssp_enable(data, 0);
+       } else
+               pr_err("[SSP] %s - invalid value\n", __func__);
+       pr_info("[SSP] %s - %d end\n", __func__, dTemp);
+       return size;
+}
+
+static ssize_t show_sensors_enable(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       ssp_dbg("[SSP]: %s - cur_enable = %d\n", __func__,
+                atomic_read(&data->aSensorEnable));
+
+       return sprintf(buf, "%9u\n", atomic_read(&data->aSensorEnable));
+}
+
+static ssize_t set_sensors_enable(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dTemp;
+       int iRet;
+       unsigned int uNewEnable = 0, uChangedSensor = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dTemp) < 0)
+               return -EINVAL;
+
+       uNewEnable = (unsigned int)dTemp;
+       ssp_dbg("[SSP]: %s - new_enable = %u, old_enable = %u\n", __func__,
+                uNewEnable, atomic_read(&data->aSensorEnable));
+
+       if ((uNewEnable != atomic_read(&data->aSensorEnable)) &&
+               !(data->uSensorState & (uNewEnable - atomic_read(&data->aSensorEnable)))) {
+               pr_info("[SSP] %s - %u is not connected(sensortate: 0x%x)\n",
+                       __func__, uNewEnable - atomic_read(&data->aSensorEnable), data->uSensorState);
+               return -EINVAL;
+       }
+
+       if (uNewEnable == atomic_read(&data->aSensorEnable))
+               return size;
+
+       mutex_lock(&data->enable_mutex);
+       for (uChangedSensor = 0; uChangedSensor < SENSOR_MAX; uChangedSensor++) {
+               if ((atomic_read(&data->aSensorEnable) & (1 << uChangedSensor))
+                       != (uNewEnable & (1 << uChangedSensor))) {
+
+                       if (!(uNewEnable & (1 << uChangedSensor))) {
+                               data->reportedData[uChangedSensor] = false;
+                               ssp_remove_sensor(data, uChangedSensor,
+                                       uNewEnable); /* disable */
+                       } else { /* Change to ADD_SENSOR_STATE from KitKat */
+                               if (data->aiCheckStatus[uChangedSensor] == INITIALIZATION_STATE) {
+                                       if (uChangedSensor == ACCELEROMETER_SENSOR) {
+                                               accel_open_calibration(data);
+                                               iRet = set_accel_cal(data);
+                                               if (iRet < 0)
+                                                       pr_err("[SSP]: %s - set_accel_cal failed %d\n", __func__, iRet);
+                                       }
+                                       else if (uChangedSensor == GYROSCOPE_SENSOR) {
+                                               gyro_open_calibration(data);
+                                               iRet = set_gyro_cal(data);
+                                               if (iRet < 0)
+                                                       pr_err("[SSP]: %s - set_gyro_cal failed %d\n", __func__,  iRet);
+                                       }
+                                       else if (uChangedSensor == PRESSURE_SENSOR)
+                                               pressure_open_calibration(data);
+                                       else if (uChangedSensor == PROXIMITY_SENSOR) {
+                                               get_proximity_threshold(data);
+                                               proximity_open_calibration(data);
+                                               set_proximity_threshold(data, data->uProxHiThresh, data->uProxLoThresh);
+                                       }
+                               }
+                               data->aiCheckStatus[uChangedSensor] = ADD_SENSOR_STATE;
+                               enable_sensor(data, uChangedSensor, data->adDelayBuf[uChangedSensor]);
+                       }
+                       break;
+               }
+       }
+       atomic_set(&data->aSensorEnable, uNewEnable);
+       mutex_unlock(&data->enable_mutex);
+
+       return size;
+}
+
+static ssize_t set_flush(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dTemp;
+       u8 sensor_type = 0;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dTemp) < 0)
+               return -EINVAL;
+
+       sensor_type = (u8)dTemp;
+       if (!(atomic_read(&data->aSensorEnable) & (1 << sensor_type)))
+               return -EINVAL;
+
+       if (flush(data, sensor_type) < 0) {
+               pr_err("[SSP] ssp returns error for flush(%x)", sensor_type);
+               return -EINVAL;
+       }
+       return size;
+}
+
+static ssize_t show_shake_cam(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int enabled = 0;
+
+       if ((atomic_read(&data->aSensorEnable) & (1 << SHAKE_CAM)))
+               enabled = 1;
+
+       return sprintf(buf, "%d\n", enabled);
+}
+
+static ssize_t set_shake_cam(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       unsigned long enable = 0;
+       unsigned char buffer[4];
+       unsigned int uNewEnable;
+       s32 dMsDelay = 20;
+
+       if (kstrtoul(buf, 10, &enable))
+               return -EINVAL;
+
+       memcpy(&buffer[0], &dMsDelay, 4);
+
+       if (enable) {
+               send_instruction(data, ADD_SENSOR, SHAKE_CAM,
+                               buffer, sizeof(buffer));
+               uNewEnable =
+                       (unsigned int)atomic_read(&data->aSensorEnable)
+                       | ((unsigned int)(1 << SHAKE_CAM));
+       } else {
+               send_instruction(data, REMOVE_SENSOR, SHAKE_CAM,
+                               buffer, sizeof(buffer));
+               uNewEnable =
+                       (unsigned int)atomic_read(&data->aSensorEnable)
+                       & (~(unsigned int)(1 << SHAKE_CAM));
+       }
+
+       atomic_set(&data->aSensorEnable, uNewEnable);
+       return size;
+}
+
+static ssize_t show_acc_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[ACCELEROMETER_SENSOR]);
+}
+
+static ssize_t set_acc_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       if ((atomic_read(&data->aSensorEnable) & (1 << ORIENTATION_SENSOR)) &&
+               (data->adDelayBuf[ORIENTATION_SENSOR] < dNewDelay))
+               data->adDelayBuf[ACCELEROMETER_SENSOR] = dNewDelay;
+       else
+               change_sensor_delay(data, ACCELEROMETER_SENSOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_gyro_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[GYROSCOPE_SENSOR]);
+}
+
+static ssize_t set_gyro_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GYROSCOPE_SENSOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_mag_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[GEOMAGNETIC_SENSOR]);
+}
+
+static ssize_t set_mag_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GEOMAGNETIC_SENSOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_uncal_mag_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n",
+                       data->adDelayBuf[GEOMAGNETIC_UNCALIB_SENSOR]);
+}
+
+static ssize_t set_uncal_mag_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GEOMAGNETIC_UNCALIB_SENSOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_rot_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[ROTATION_VECTOR]);
+}
+
+static ssize_t set_rot_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, ROTATION_VECTOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_game_rot_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[GAME_ROTATION_VECTOR]);
+}
+
+static ssize_t set_game_rot_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GAME_ROTATION_VECTOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_step_det_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n",
+               data->adDelayBuf[STEP_DETECTOR]);
+}
+
+static ssize_t set_step_det_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -1;
+
+       change_sensor_delay(data, STEP_DETECTOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_sig_motion_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n",
+               data->adDelayBuf[SIG_MOTION_SENSOR]);
+}
+
+static ssize_t set_sig_motion_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -1;
+
+       change_sensor_delay(data, SIG_MOTION_SENSOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_step_cnt_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n",
+               data->adDelayBuf[STEP_COUNTER]);
+}
+
+static ssize_t set_step_cnt_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -1;
+
+       change_sensor_delay(data, STEP_COUNTER, dNewDelay);
+       return size;
+}
+
+static ssize_t show_uncalib_gyro_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[GYRO_UNCALIB_SENSOR]);
+}
+
+static ssize_t set_uncalib_gyro_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GYRO_UNCALIB_SENSOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_pressure_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[PRESSURE_SENSOR]);
+}
+
+static ssize_t set_pressure_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, PRESSURE_SENSOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_gesture_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[GESTURE_SENSOR]);
+}
+
+static ssize_t set_gesture_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, GESTURE_SENSOR, dNewDelay);
+
+       return size;
+}
+
+static ssize_t show_light_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[LIGHT_SENSOR]);
+}
+
+static ssize_t set_light_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, LIGHT_SENSOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_prox_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n", data->adDelayBuf[PROXIMITY_SENSOR]);
+}
+
+static ssize_t set_prox_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, PROXIMITY_SENSOR, dNewDelay);
+       return size;
+}
+
+static ssize_t show_temp_humi_delay(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       return sprintf(buf, "%lld\n",
+               data->adDelayBuf[TEMPERATURE_HUMIDITY_SENSOR]);
+}
+
+static ssize_t set_temp_humi_delay(struct device *dev,
+       struct device_attribute *attr, const char *buf, size_t size)
+{
+       int64_t dNewDelay;
+       struct ssp_data *data  = dev_get_drvdata(dev);
+
+       if (kstrtoll(buf, 10, &dNewDelay) < 0)
+               return -EINVAL;
+
+       change_sensor_delay(data, TEMPERATURE_HUMIDITY_SENSOR, dNewDelay);
+       return size;
+}
+
+ssize_t ssp_sensorhub_voicel_pcmdump_show(struct device *dev,
+       struct device_attribute *attr, char *buf)
+{
+       struct ssp_data *data = dev_get_drvdata(dev);
+       int status = ssp_sensorhub_pcm_dump(data->hub_data);
+
+       return sprintf(buf, "%s\n", (status ? "OK" : "NG"));
+}
+
+static DEVICE_ATTR(voice_pcmdump, S_IRUSR | S_IRGRP,
+       ssp_sensorhub_voicel_pcmdump_show, NULL);
+
+static struct device_attribute *voice_attrs[] = {
+       &dev_attr_voice_pcmdump,
+       NULL,
+};
+
+static void initialize_voice_sysfs(struct ssp_data *data)
+{
+       sensors_register(data->voice_device, data, voice_attrs, "ssp_voice");
+}
+
+static void remove_voice_sysfs(struct ssp_data *data)
+{
+       sensors_unregister(data->voice_device, voice_attrs);
+}
+
+
+static DEVICE_ATTR(mcu_rev, S_IRUSR | S_IRGRP, mcu_revision_show, NULL);
+static DEVICE_ATTR(mcu_name, S_IRUSR | S_IRGRP, mcu_model_name_show, NULL);
+static DEVICE_ATTR(mcu_update, S_IRUSR | S_IRGRP,
+       mcu_update_kernel_bin_show, NULL);
+static DEVICE_ATTR(mcu_update2, S_IRUSR | S_IRGRP,
+       mcu_update_kernel_crashed_bin_show, NULL);
+static DEVICE_ATTR(mcu_update_ums, S_IRUSR | S_IRGRP,
+       mcu_update_ums_bin_show, NULL);
+static DEVICE_ATTR(mcu_reset, S_IRUSR | S_IRGRP, mcu_reset_show, NULL);
+static DEVICE_ATTR(mcu_dump, S_IRUSR | S_IRGRP, mcu_dump_show, NULL);
+
+static DEVICE_ATTR(mcu_test, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       mcu_factorytest_show, mcu_factorytest_store);
+static DEVICE_ATTR(mcu_sleep_test, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       mcu_sleep_factorytest_show, mcu_sleep_factorytest_store);
+static DEVICE_ATTR(enable, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_sensors_enable, set_sensors_enable);
+static DEVICE_ATTR(enable_irq, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_enable_irq, set_enable_irq);
+static DEVICE_ATTR(accel_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_acc_delay, set_acc_delay);
+static DEVICE_ATTR(gyro_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_gyro_delay, set_gyro_delay);
+static DEVICE_ATTR(uncalib_gyro_poll_delay,
+       S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_uncalib_gyro_delay, set_uncalib_gyro_delay);
+static DEVICE_ATTR(mag_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_mag_delay, set_mag_delay);
+static DEVICE_ATTR(uncal_mag_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_uncal_mag_delay, set_uncal_mag_delay);
+static DEVICE_ATTR(rot_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_rot_delay, set_rot_delay);
+static DEVICE_ATTR(game_rot_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_game_rot_delay, set_game_rot_delay);
+static DEVICE_ATTR(step_det_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_step_det_delay, set_step_det_delay);
+static DEVICE_ATTR(pressure_poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_pressure_delay, set_pressure_delay);
+static DEVICE_ATTR(ssp_flush, S_IWUSR | S_IWGRP,
+       NULL, set_flush);
+static DEVICE_ATTR(shake_cam, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_shake_cam, set_shake_cam);
+static struct device_attribute dev_attr_gesture_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_gesture_delay, set_gesture_delay);
+static struct device_attribute dev_attr_light_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_light_delay, set_light_delay);
+static struct device_attribute dev_attr_prox_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_prox_delay, set_prox_delay);
+static struct device_attribute dev_attr_temp_humi_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_temp_humi_delay, set_temp_humi_delay);
+static struct device_attribute dev_attr_sig_motion_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_sig_motion_delay, set_sig_motion_delay);
+static struct device_attribute dev_attr_step_cnt_poll_delay
+       = __ATTR(poll_delay, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
+       show_step_cnt_delay, set_step_cnt_delay);
+
+static struct device_attribute *mcu_attrs[] = {
+       &dev_attr_enable,
+       &dev_attr_mcu_rev,
+       &dev_attr_mcu_name,
+       &dev_attr_mcu_test,
+       &dev_attr_mcu_reset,
+       &dev_attr_mcu_dump,
+       &dev_attr_mcu_update,
+       &dev_attr_mcu_update2,
+       &dev_attr_mcu_update_ums,
+       &dev_attr_mcu_sleep_test,
+       &dev_attr_enable_irq,
+       &dev_attr_accel_poll_delay,
+       &dev_attr_gyro_poll_delay,
+       &dev_attr_uncalib_gyro_poll_delay,
+       &dev_attr_mag_poll_delay,
+       &dev_attr_uncal_mag_poll_delay,
+       &dev_attr_rot_poll_delay,
+       &dev_attr_game_rot_poll_delay,
+       &dev_attr_step_det_poll_delay,
+       &dev_attr_pressure_poll_delay,
+       &dev_attr_ssp_flush,
+       &dev_attr_shake_cam,
+       NULL,
+};
+
+static long ssp_batch_ioctl(struct file *file, unsigned int cmd,
+                               unsigned long arg)
+{
+       struct ssp_data *data
+               = container_of(file->private_data,
+                       struct ssp_data, batch_io_device);
+
+       struct batch_config batch;
+
+       void __user *argp = (void __user *)arg;
+       int retries = 2;
+       int ret = 0;
+       int sensor_type, ms_delay;
+       int timeout_ms = 0;
+       u8 uBuf[9];
+
+       sensor_type = (cmd & 0xFF);
+
+       if ((cmd >> 8 & 0xFF) != BATCH_IOCTL_MAGIC) {
+               pr_err("[SSP] Invalid BATCH CMD %x", cmd);
+               return -EINVAL;
+       }
+
+       while (retries--) {
+               ret = copy_from_user(&batch, argp, sizeof(batch));
+               if (likely(!ret))
+                       break;
+       }
+       if (unlikely(ret)) {
+               pr_err("[SSP] batch ioctl err(%d)", ret);
+               return -EINVAL;
+       }
+       ms_delay = get_msdelay(batch.delay);
+       timeout_ms = div_s64(batch.timeout, 1000000);
+       memcpy(&uBuf[0], &ms_delay, 4);
+       memcpy(&uBuf[4], &timeout_ms, 4);
+       uBuf[8] = batch.flag;
+
+       if (batch.timeout){ /* add or dry */
+
+               if(!(batch.flag & SENSORS_BATCH_DRY_RUN)) { /* real batch, NOT DRY, change delay */
+                       ret = 1;
+                       /* if sensor is not running state, enable will be called.
+                          MCU return fail when receive chage delay inst during NO_SENSOR STATE */
+                       if (data->aiCheckStatus[sensor_type] == RUNNING_SENSOR_STATE) {
+                               ret = send_instruction_sync(data, CHANGE_DELAY, sensor_type, uBuf, 9);
+                       }
+                       if (ret > 0) { /* ret 1 is success */
+                               data->batchOptBuf[sensor_type] = (u8)batch.flag;
+                               data->batchLatencyBuf[sensor_type] = timeout_ms;
+                               data->adDelayBuf[sensor_type] = batch.delay;
+                       }
+               } else { /* real batch, DRY RUN */
+                       ret = send_instruction_sync(data, CHANGE_DELAY, sensor_type, uBuf, 9);
+                       if (ret > 0) { /* ret 1 is success */
+                               data->batchOptBuf[sensor_type] = (u8)batch.flag;
+                               data->batchLatencyBuf[sensor_type] = timeout_ms;
+                               data->adDelayBuf[sensor_type] = batch.delay;
+                       }
+               }
+       } else { /* remove batch or normal change delay, remove or add will be called. */
+
+               if (!(batch.flag & SENSORS_BATCH_DRY_RUN)) { /* no batch, NOT DRY, change delay */
+                       data->batchOptBuf[sensor_type] = 0;
+                       data->batchLatencyBuf[sensor_type] = 0;
+                       data->adDelayBuf[sensor_type] = batch.delay;
+                       if (data->aiCheckStatus[sensor_type] == RUNNING_SENSOR_STATE) {
+                               send_instruction(data, CHANGE_DELAY, sensor_type, uBuf, 9);
+                       }
+               }
+       }
+
+       pr_info("[SSP] batch %d: delay %lld, timeout %lld, flag %d, ret %d\n",
+                       sensor_type, batch.delay, batch.timeout, batch.flag, ret);
+       if (!batch.timeout)
+               return 0;
+       if (ret <= 0)
+               return -EINVAL;
+       else
+               return 0;
+}
+
+
+static struct file_operations ssp_batch_fops = {
+       .owner = THIS_MODULE,
+       .open = nonseekable_open,
+       .unlocked_ioctl = ssp_batch_ioctl,
+};
+
+static void initialize_mcu_factorytest(struct ssp_data *data)
+{
+       sensors_register(data->mcu_device, data, mcu_attrs, "ssp_sensor");
+}
+
+static void remove_mcu_factorytest(struct ssp_data *data)
+{
+       sensors_unregister(data->mcu_device, mcu_attrs);
+}
+
+int initialize_sysfs(struct ssp_data *data)
+{
+       if (device_create_file(&data->gesture_input_dev->dev,
+               &dev_attr_gesture_poll_delay))
+               goto err_gesture_input_dev;
+
+       if (device_create_file(&data->light_input_dev->dev,
+               &dev_attr_light_poll_delay))
+               goto err_light_input_dev;
+
+       if (device_create_file(&data->prox_input_dev->dev,
+               &dev_attr_prox_poll_delay))
+               goto err_prox_input_dev;
+
+       if (device_create_file(&data->temp_humi_input_dev->dev,
+               &dev_attr_temp_humi_poll_delay))
+               goto err_temp_humi_input_dev;
+
+       if (device_create_file(&data->sig_motion_input_dev->dev,
+               &dev_attr_sig_motion_poll_delay))
+               goto err_sig_motion_input_dev;
+
+       if (device_create_file(&data->step_cnt_input_dev->dev,
+               &dev_attr_step_cnt_poll_delay))
+               goto err_step_cnt_input_dev;
+
+       data->batch_io_device.minor = MISC_DYNAMIC_MINOR;
+       data->batch_io_device.name = "batch_io";
+       data->batch_io_device.fops = &ssp_batch_fops;
+       if (misc_register(&data->batch_io_device))
+               goto err_batch_io_dev;
+
+       initialize_accel_factorytest(data);
+       initialize_gyro_factorytest(data);
+       initialize_prox_factorytest(data);
+       initialize_light_factorytest(data);
+       initialize_pressure_factorytest(data);
+       initialize_magnetic_factorytest(data);
+       initialize_mcu_factorytest(data);
+       initialize_gesture_factorytest(data);
+#ifdef CONFIG_SENSORS_SSP_MOBEAM
+       initialize_mobeam(data);
+#endif
+       initialize_voice_sysfs(data);
+
+       return SUCCESS;
+err_batch_io_dev:
+       device_remove_file(&data->step_cnt_input_dev->dev,
+               &dev_attr_step_cnt_poll_delay);
+err_step_cnt_input_dev:
+       device_remove_file(&data->sig_motion_input_dev->dev,
+               &dev_attr_sig_motion_poll_delay);
+err_sig_motion_input_dev:
+       device_remove_file(&data->temp_humi_input_dev->dev,
+               &dev_attr_temp_humi_poll_delay);
+err_temp_humi_input_dev:
+       device_remove_file(&data->prox_input_dev->dev,
+               &dev_attr_prox_poll_delay);
+err_prox_input_dev:
+       device_remove_file(&data->light_input_dev->dev,
+               &dev_attr_light_poll_delay);
+err_light_input_dev:
+       device_remove_file(&data->gesture_input_dev->dev,
+               &dev_attr_gesture_poll_delay);
+err_gesture_input_dev:
+       pr_err("[SSP] error init sysfs");
+       return ERROR;
+}
+
+void remove_sysfs(struct ssp_data *data)
+{
+       device_remove_file(&data->gesture_input_dev->dev,
+               &dev_attr_gesture_poll_delay);
+       device_remove_file(&data->light_input_dev->dev,
+               &dev_attr_light_poll_delay);
+       device_remove_file(&data->prox_input_dev->dev,
+               &dev_attr_prox_poll_delay);
+       device_remove_file(&data->temp_humi_input_dev->dev,
+               &dev_attr_temp_humi_poll_delay);
+       device_remove_file(&data->sig_motion_input_dev->dev,
+               &dev_attr_sig_motion_poll_delay);
+       device_remove_file(&data->step_cnt_input_dev->dev,
+               &dev_attr_step_cnt_poll_delay);
+       ssp_batch_fops.unlocked_ioctl = NULL;
+       misc_deregister(&data->batch_io_device);
+       remove_accel_factorytest(data);
+       remove_gyro_factorytest(data);
+       remove_prox_factorytest(data);
+       remove_light_factorytest(data);
+       remove_pressure_factorytest(data);
+       remove_magnetic_factorytest(data);
+       remove_mcu_factorytest(data);
+       remove_gesture_factorytest(data);
+#ifdef CONFIG_SENSORS_SSP_MOBEAM
+       remove_mobeam(data);
+#endif
+       /*snamy.jeong_0630 voice dump & data*/
+       remove_voice_sysfs(data);
+
+       destroy_sensor_class();
+}